군인 개발자 보여서 반가워서 꿀팁 공유한다.

지금 병장인데 군생활 내내 이 방법으로 진짜 편하게 코딩하고 실력도 진짜 많이는듯


준비물은

1. 공유기

2. 원격조종 (사이트로 조종가능한)



딱 2가지만 있으면 된다.


홍보일거같아서 따로 업체명은 안남기는데 웹사이트로 원격 조종 가능한 업체가 있음

거기다가 컴퓨터 등록하고 컴퓨터만 켜두면 웹사이트 상으로 원격 조종이 가능함

유니티같은 무거운 프로그램 돌리려면 진짜 군대 컴으로는 어림도 없는데 이런 방식을 쓰면 그런 성능 걱정은 진짜 하나도 안해도 됨

그리고 티도 잘 안난다 ㄹㅇ.. 해상도만 잘 맞춰두면 걍 싸지방으로 하는걸로 보임


여기서 문제는 집 컴을 켜둬야한다는건데 공유기만 있으면 됨

Iptime 공유기는 WOL이라는 기능이 있는데 공유기에 등록해두고 컴퓨터에 세팅만 해두면

WOL 핸드폰 앱으로 컴퓨터 키는게 가능함 자세한 세팅법은 인터넷에 iptime wol 검색하면 진짜 자세하게 나온다.

따라서 작업할때 앱으로 컴 키고 작업 끝나면 어처피 원격으로 컴퓨터 종료하면 되는거니까 크게 제약도 없음.


1년 반 안그래도 시간 아깝고 코딩 쭉 놓으면 감 팍 죽는데 이런식으로라도 공부하면서 화이팅해라




이런거만 남기면 좀 그러니까 지금 만들고 있는 청크 기반 타일맵 간단하게 정리해봄


타일맵 자체도 아에 커스텀으로 만들어보는건데 나름 잘 작동하는듯.



맵 데이터 자체는 int[]로 관리함

맵 데이터만 GPU로 받아서 사용하기에 랜덤 어세스가 가능해야해서 따로 알고리즘 써서 압축하진 않고

그냥 맵 크기만큼의 int[]를 가지고 사용함

(ex 16 x 16 크기의 타일맵 -> in[256])


관련 쉐이더 코드



a15420aa1806b34b9a330b419d22d8735dac30e631864f435560b901734d



CPU 상에선 솔직히 메모리가 크게 제한이 없는데

GPU에도 버퍼로 그대로 올리다보니 나중에 맵이 아주 아주 커진다면 문제가 생길거같아서 특정 영역만 메모리에 올려서 사용함.


CPU상에서도 다 올리면 좀 낭비라는 생각이 들어서


기존 - 맵 데이터를 전부 메모리에 올려두고 사용

신규 - 필요한 맵 데이터를 I/O로 그때 그때 읽어서 사용


으로 변경함




1ea9c223e4df1bae7bb1dd8713d02038dc1b3a83010599f6549308c9448e1c2f



TypeByte2TypeConverter는 개인적으로 만든 파싱 클래스인데 간단하게 Byte를 제네릭 타입으로 파싱해줌

따로 딕셔너리나 Texture2D 같이 원래는 직렬화 안되는 것들도 따로 커스텀으로 제작해둬서 유용하게 사용 중

만들때는 귀찮았는데 진짜 편하게 쓰는 중


다시 본론으로 돌아오면

플레이어의 위치를 추적해서 청크 단위 이동이 감지되면 새롭게 읽어오는데 굳이 기존의 것들도 새롭게 읽어 올 필요가 없으니

없어지는 부분, 새롭게 생기는 부분을 구해서

해당 부분만 바꿔줌


여기서 문제는 모든 청크를 하나의 Int[] 에서 관리하다보니

청크들의 데이터 위치가 매번 새롭게 바뀌는데

이를 위해서 전용 오프셋 데이터를 만들어서 사용함




a16f1dab041eb45eaa3222519a34cf730d1853ab464bb18c9938cb3cecb3




청크 단위 타일맵에선 하나 고려해야하는 사항이 있는데

만약 플레이어가 청크 사이를 계속 왔다갔다 하면 어찌할 것인가?를 생각해야함.

만약 매번 새롭게 로드해오면 낭비가 심하니 여유 공간을 둘거임

ChunkBlank라고 이름 지었고 마지막 로드 지점 기준 몇 청크까지는 데이터를 공유한다라고 생각하면 됨




a16f1dab041e782db64b5d4bdb5cc5f15487be797b44fc6618ace0ada72d17



간단하게 인게임에서 시각화 해보면





2ab4ca2bea9c3faf689fe8b115ef0469c7c2a90ac16a




이런 느낌임

격자 무늬가 청크 단위고 {ChunkIndex} Chunk 형식으로 표시되어 있음






a14834aa260eb547a235045958db343a227c8b4162549e924306f2





크게 효과적인지는 잘 모르겠지만

엄청 많은 타일을 표현해도 문제없으니 성공아닐까


헹가래