posted by REDFORCE 2017. 7. 7. 09:48

최근 제작하고 있는 자체엔진 기반의 맵툴(Maptool) 입니다.



WinAPI와 DirectX를 조합하여만들고 있는 자체 2D엔진을 기반으로 하여 제작하고 있습니다.


아이소매트릭 기반 타일시스템을 주로 사용하며

일반적인 Rectangle이나 다각형도 가능하도록 만들고 있습니다.

(다각형은 아직 미지원)


제가 만든 엔진의 파일 시스템을 이용해서

타일 이미지를 쉽게 넣고 뺄 수 있도록 제작되어있고, 아틀란타같은 타일 세트를 딱히 만들지 않아도 알아서 타일 이미지 정보를 가져오도록 되어있습니다.


(지정 된 리소스 폴더에 넣어두기만 하면 알아서 불러와요!!)


엔진 디버그를 이용해서 메모리 사용량이나 CPU 사용량에 대한 부분은 엔진차원에서 확인 할 수 있는 시스템을 만드는 중이라 좌측 위 cpu정보는 출력 되지 않고 있습니다.


그외에 월드 타임을 이용하거나 애니메이션 타일을 위한 tickstep을 지원하는 맵툴입니다.


주요 UI(필자는 Viewer로 부르는 중)는 


1. StatsViewer : 엔진과 기타 카메라/마우스 좌표 정보들을 출력

2. ControlViewer : 각종 버튼 아이콘

3. MinimapViewer : 미니맵

4. LogViewer : 각종 실행 정보를 담고있는 Log 박스

5. TileMapViewer : 엔진을 통해 불러온 타일 목록 출력

6. ObjectControlViewer : 레이어나 오브젝트에 대한 정보를 셋업하는 컨트롤 뷰어


가 있습니다.


이렇게 적고나니 몇개 안되긴하는데...


실제 코드로는 몇천줄을 짰던거 같은데 뭔가 블로그에 이렇게 적으면서 보니 허무하다는 생각도 조금 드네요.



현재 위 맵툴 프로젝트는 4명이서 제작중인 2D RTS 전략게임의 전투맵을 위한 맵툴입니다.


제 PC 기준으로(적당적당한 사양....?) 128x128(16384개) 타일을 만들 때 60Fps 정도의 퍼포먼스가 나오고 격자 정보를 미 출력시에는 퍼포먼스가 더 올라가는 것을 확인했습니다.


아마 최적화만 좀 더 하면서 코드를 개선하면 256x256(65536개) 타일도 충분히 지원할 것 같군요.


기본적인 세이브/로드/리셋/디버그 모드(격자 미출력)/종료 기능이 제공되고있고

그 외...맵을 만들기 위한 레이어나 타일 선택기능들은 다 구현이 되어있습니다.


하루 빨리 이걸로 제작한 맵에서 전투가 벌어지는 걸 보고싶네요.




빨간색 박스(우측 상단 타일 그림 리스트) 가 타일 목록들이 보여지는 컨트롤러 입니다.





그 아래에 있는 타일 정보에 대한 오브젝트 컨트롤러는 타일의 레이어나 프리 포지션(자율 위치)로 지정할 수 있게 해주는 컨트롤 내용들이 담겨 있습니다.




제작 중인 게임에 대한 프로젝트는 아래 github - 링크에서 코드를 확인할 수 있습니다.


https://github.com/redforce01/SephyEngine/tree/Jaejun-Kim