던전과 인터페이스
개요
- 이전 파트에서는 게임 개발에서 흔히 사용되는 엔티티-컴포넌트-시스템(ECS) 아키텍처 패턴과 메타언어 프로그래밍 패러다임을 탐구했음.
- 이번에는 이러한 기술을 사용하여 던전 크롤러 장르의 작은 게임을 만들고, 이를 통해 실제 게임 애플리케이션의 시스템 설계를 살펴볼 것임.
준비 작업
- Common Lisp 환경을 설정하고, 필요한 패키지를 업데이트함.
-
cookiecutter
템플릿을 사용하여 프로젝트를 시작하고, 게임 창 크기를 1280x800으로 설정함.
던전
- 플레이어가 던전을 탐험할 수 있도록 던전 맵이 필요함.
- 오픈 소스 맵 에디터인 Tiled를 사용하여 던전 맵을 생성하고, 이를 Lisp 객체로 로드하기 위해
cl-tiled
라이브러리를 사용함.
- 맵 파일을 준비한 후, 게임에 로드하여 사용할 수 있도록 몇 가지 준비 작업을 수행함.
ECS 패턴 적용
- 맵 타일 데이터를 ECS 저장소로 이동하여 성능을 향상시킴.
-
cl-fast-ecs
프레임워크를 프로젝트에 추가하고, ECS 시스템을 초기화함.
- 맵 타일을 개별 엔티티로 저장하고, 이를 처리하는 시스템을 정의함.
애니메이션
- Tiled는 애니메이션 타일을 지원하며, 이를 통해 게임에 생동감을 더할 수 있음.
- 애니메이션을 구현하기 위해 코드 구조를 확장하고 리팩토링함.
-
animation-frame
과 animation-state
컴포넌트를 정의하여 애니메이션 상태를 관리함.
-
update-animations
시스템을 정의하여 적절한 시점에 애니메이션 프레임을 전환함.
GN⁺의 정리
- 이 글은 ECS 패턴을 사용하여 게임 개발을 어떻게 효율적으로 할 수 있는지를 설명함.
- Tiled와 같은 도구를 활용하여 맵을 쉽게 생성하고 관리할 수 있는 방법을 제시함.
- 애니메이션을 통해 게임에 생동감을 더하는 방법을 설명함.
- ECS 패턴을 사용하면 성능을 최적화하고 코드 구조를 간결하게 유지할 수 있음.
- 유사한 기능을 가진 다른 프로젝트로는 Unity의 ECS 시스템이나 Unreal Engine의 블루프린트 시스템이 있음.