프롤로그(자체제작 엔진 만들기)

JellyPower·2023년 8월 23일
post-thumbnail

게임엔진, 제가 한 번 만들어보겠습니다.

  • 최근, 게임엔진을 사용해보기만 하다 게임엔진 제작을 위한 본격적인 작업에 들어갔다.
  • 요즘에는 좋은 상용엔진들이 많은데 왜 굳이 게임엔진을 직접 만드느냐는 말도 많지만 딱히 신경쓰진 않는다.
  • 애초에 내가 하고싶은 일이고 남들이 보기엔 그럴싸한 성과를 내지 못한다 하더라도, 이를 만드는 과정에서 얻은 지식들과 경험들은 남아있을 것이라는 확신 때문이다.
  • 게다가, 자체제작 엔진이든 상용엔진이든 결국 기술의 기반은 그래픽스, 물리엔진, 시스템라이브러리, 네트워크라이브러리 등등… 근간을 이루는 기술들은 동일하기에 더욱 이를 해보는 가치는 충분하다 생각한다.
  • 그렇기에 해당 시리즈는 직접 엔진을 만들어보며 겪은 다양하고 사소한 고충들에 대해 토로해볼 예정이다.

자체제작 엔진의 목표! (2023.08.23)

  1. 에셋 관리의 체계화
    • 에셋을 게임 플레이타임에 동적으로 생성, 로딩하는 것을 최소화 한다.
    • 필요한 에셋의 로딩하는 과정을 하드코딩 해주는 것이 아닌, 에셋 전용 파일을 손수 제작하여 엔진이 자동으로 필요한 데이터를 로딩하고 인스턴싱 하도록 한다.
    • 에셋 관리를 위한 전용파일, 리소스 파일들을 최대한 바이너리가 아닌 텍스트 파일(json, xml …)을 활용하여 Git을 통한 버전 관리가 용이하게 만든다.
    • 에셋 Pool을 제작하여 인게임 에셋들의 관리를 체계화하고 해쉬테이블을 활용하여 에셋의 검색을 손쉽게 만든다.
  2. 탑다운뷰, RTS 최적화 게임엔진
    • 단순한 형태의 물리 시뮬레이터를 제작하여 물리효과 처리과정 단순화
    • RTS에서 필요로되는 길찾기와 같은 기본 AI모듈 제작
  3. 스크립팅 라이브러리와 맵 에디터 제공
    • 엔진의 코어부분은 C++, 콘텐츠 코드를 제작에 필요한 스크립팅 언어는 C#으로 개발

Reference Libraries

  1. 엔진 아키텍쳐(언리얼 엔진)

    https://github.com/EpicGames/UnrealEngine

  2. 모델 데이터 임포팅(OpenFBX)

    https://github.com/nem0/OpenFBX

  3. 해쉬맵 제작(city hash)

    https://github.com/google/cityhash

  4. 데이터 직렬화(cap'n proto)

    https://github.com/capnproto/capnproto

0개의 댓글