Game Dev – Voxel Horizon – 맵간 이동

초기에는 하나의 맵, 하나의 월드만으로 구성할 생각이었다.
지금 상태에서 9km x 9km이상을 처리할 수 있도록 엔진을 고칠 자신도 없고 그럴 에너지도 남아있지 않다.
그래서 그냥 쉽게 가기로 했다. 기존처럼 포탈 타고 맵체인지 하면 된다.
클라이언트와 서버에서 추가적인 작업을 좀 해주긴 했지만 크게 어렵지는 않게 맵간 이동은 구현했다. 뭐 이전에도 늘상 하던 전형적인 mmorpg 맵 이동처리니까.

1. 맵툴에서 트리거와 스폰 포인트를 배치하도록 했다.
2. 클라이언트에서 트리거를 만나면 서버에 트리거 처리 요청
3. 서버는 해당 트리거가 존재하는지 체크. 있으면 트리거 스크립트 실행.
4. 플레이어의 인스턴스 메모리를 현재 맵에서 제거하고 이동하고자 하는 맵에 추가.
5. 이때 플레이어가 복셀오브젝트를 얼마만큼 수신했는지 기록한 비트 테이블 초기화. <- 이것이 복셀 스티리밍에서의 차이.
6. 플레이어가 위치해있던 맵의 섹터에 플레이어가 나갔음을 알리는 disappear패킷을 브로드캐스팅
7. 플레이어가 새로 들어갈 맵의 섹터에 새로운 플레이어가 들어왔음을 알리는 appear 패킷 브로드캐스팅.

일단 잘 돈다.
NPC(enemy)가 계단형 지형에서 돌아다니는건 문제가 있어서 NPC를 어떻게 배치하나 고민이었는데 아예 바닥 평평하게 만든 전투지역 맵을 따로 만들 생각이다.
PvP용 맵도 아예 따로 만들고.


답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

w

%s에 연결하는 중