Skip to content

Initial2D

Latest
Compare
Choose a tag to compare
@biud436 biud436 released this 16 Apr 14:00
· 105 commits to master since this release

소개

자체 엔진 개발 연습 차원에서 만들고 있는 프로젝트이며 컴파일이 완료된 실행 파일입니다.

폰트를 제외한 모든 리소스는 직접 개발되었습니다.
삽입된 루아 스크립트 중에 tilemap.lua는 맵 개발을 위해 Tiled와의 연동을 고려했습니다만 아직 미구현 상태입니다.

이미지는 PNG와 BMP만 지원하며 PNG 디코딩 부분은 libpng를 동적 라이브러리로 빌드하여 DIB로 디코딩하여 HBITMAP과 호환을 맞추고 있습니다.

음악은 SDL2SDL2_Mixer를 사용하므로 다양한 포맷 재생이 가능합니다.

렌더링은 Windows 의존적인 GDI 기반이며 60 프레임 기준입니다.
샘플 게임은 게임이 아니며 타일이 360도로 돌아가는 것과 한글 비트맵 텍스트 표시가 전부입니다.

추후에는 SDL2로 교체할 생각이지만 GDI 기반 렌더러도 버리고 싶진 않아 알맞은 패턴을 생각 중입니다.

파일 구조는 다음과 같습니다.

image

SDL2_Mixer를 사용해서 관련 동적 라이브러리가 상당히 많습니다. FMOD나 OpenAL 등을 사용하는 것이 더 깔끔하고 정석이지만 가장 처음에 OpenAL로 구현을 했었습니다. 그러나 OGG Vorbis 디코딩에 대한 여러 문제를 겪었으며 또한 라이센스 문제로 인해 현재는 SDL2_Mixer를 사용하고 있습니다.

SDL2_Mixer의 경우, 다른 작업을 동시에 할 경우 사운드가 끊기는 느낌이 있습니다.

빌드를 하려면 우선 Node.js가 있어야 하며, Node.js는 파일을 복사하고 리소스 폴더를 업데이트 할 때 사용합니다.

TODO

  • 빌드 후 이벤트 추가, 배포 용 폴더 복사 기능을 Node.js로 넣을 생각입니다.
  • 맵 툴을 직접 구현하려고 했으나 너무나 허접하여, 범용 Tiled 데이터를 그대로 쓰기로 했습니다. 데이터 형식은 JSON이나 XML 중에 고민입니다. 맵 데이터 취득에서 가장 편한 건 CSV 이지만, 이미지 파일을 파싱하거나 오브젝트를 가져올 때 불리하므로 JSON이나 XML 중에 하나로 결정할 것입니다.
  • 타일맵에 타일 레이어 추가 및 Tiled JSON 파서 추가
  • Locator 패턴과 서비스 중개자 패턴을 고려하여 SDL2를 서브 렌더러로 추가할 수 있게 하려고 합니다.