군인 개발자 보여서 반가워서 꿀팁 공유한다.
지금 병장인데 군생활 내내 이 방법으로 진짜 편하게 코딩하고 실력도 진짜 많이는듯
준비물은
1. 공유기
2. 원격조종 (사이트로 조종가능한)
딱 2가지만 있으면 된다.
홍보일거같아서 따로 업체명은 안남기는데 웹사이트로 원격 조종 가능한 업체가 있음
거기다가 컴퓨터 등록하고 컴퓨터만 켜두면 웹사이트 상으로 원격 조종이 가능함
유니티같은 무거운 프로그램 돌리려면 진짜 군대 컴으로는 어림도 없는데 이런 방식을 쓰면 그런 성능 걱정은 진짜 하나도 안해도 됨
그리고 티도 잘 안난다 ㄹㅇ.. 해상도만 잘 맞춰두면 걍 싸지방으로 하는걸로 보임
여기서 문제는 집 컴을 켜둬야한다는건데 공유기만 있으면 됨
Iptime 공유기는 WOL이라는 기능이 있는데 공유기에 등록해두고 컴퓨터에 세팅만 해두면
WOL 핸드폰 앱으로 컴퓨터 키는게 가능함 자세한 세팅법은 인터넷에 iptime wol 검색하면 진짜 자세하게 나온다.
따라서 작업할때 앱으로 컴 키고 작업 끝나면 어처피 원격으로 컴퓨터 종료하면 되는거니까 크게 제약도 없음.
1년 반 안그래도 시간 아깝고 코딩 쭉 놓으면 감 팍 죽는데 이런식으로라도 공부하면서 화이팅해라
이런거만 남기면 좀 그러니까 지금 만들고 있는 청크 기반 타일맵 간단하게 정리해봄
타일맵 자체도 아에 커스텀으로 만들어보는건데 나름 잘 작동하는듯.
맵 데이터 자체는 int[]로 관리함
맵 데이터만 GPU로 받아서 사용하기에 랜덤 어세스가 가능해야해서 따로 알고리즘 써서 압축하진 않고
그냥 맵 크기만큼의 int[]를 가지고 사용함
(ex 16 x 16 크기의 타일맵 -> in[256])
관련 쉐이더 코드
CPU 상에선 솔직히 메모리가 크게 제한이 없는데
GPU에도 버퍼로 그대로 올리다보니 나중에 맵이 아주 아주 커진다면 문제가 생길거같아서 특정 영역만 메모리에 올려서 사용함.
CPU상에서도 다 올리면 좀 낭비라는 생각이 들어서
기존 - 맵 데이터를 전부 메모리에 올려두고 사용
신규 - 필요한 맵 데이터를 I/O로 그때 그때 읽어서 사용
으로 변경함
TypeByte2TypeConverter는 개인적으로 만든 파싱 클래스인데 간단하게 Byte를 제네릭 타입으로 파싱해줌
따로 딕셔너리나 Texture2D 같이 원래는 직렬화 안되는 것들도 따로 커스텀으로 제작해둬서 유용하게 사용 중
만들때는 귀찮았는데 진짜 편하게 쓰는 중
다시 본론으로 돌아오면
플레이어의 위치를 추적해서 청크 단위 이동이 감지되면 새롭게 읽어오는데 굳이 기존의 것들도 새롭게 읽어 올 필요가 없으니
없어지는 부분, 새롭게 생기는 부분을 구해서
해당 부분만 바꿔줌
여기서 문제는 모든 청크를 하나의 Int[] 에서 관리하다보니
청크들의 데이터 위치가 매번 새롭게 바뀌는데
이를 위해서 전용 오프셋 데이터를 만들어서 사용함
청크 단위 타일맵에선 하나 고려해야하는 사항이 있는데
만약 플레이어가 청크 사이를 계속 왔다갔다 하면 어찌할 것인가?를 생각해야함.
만약 매번 새롭게 로드해오면 낭비가 심하니 여유 공간을 둘거임
ChunkBlank라고 이름 지었고 마지막 로드 지점 기준 몇 청크까지는 데이터를 공유한다라고 생각하면 됨
간단하게 인게임에서 시각화 해보면
이런 느낌임
격자 무늬가 청크 단위고 {ChunkIndex} Chunk 형식으로 표시되어 있음
크게 효과적인지는 잘 모르겠지만
엄청 많은 타일을 표현해도 문제없으니 성공아닐까
팀뷰어는 국룰이지
나도 원격제어 진짜 다 써봤는데 스팀링크, 크롬원격제어, 엔비디아에서 지원하던 문x이트 이 3개가 최고임 스팀이랑 크롬은 인터넷 환경따라가는데 마지막껀 개추 - dc App
군인인데 이렇게까지 하는게 놀랍군 개추