# 리스프를 활용한 게임 개발, 2부: 던전과 인터페이스

> Clean Markdown view of GeekNews topic #17309. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17309](https://news.hada.io/topic?id=17309)
- GeekNews Markdown: [https://news.hada.io/topic/17309.md](https://news.hada.io/topic/17309.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-10-19T09:59:33+09:00
- Updated: 2024-10-19T09:59:33+09:00
- Original source: [gitlab.com](https://gitlab.com/lockie/cl-fast-ecs/-/wikis/tutorial-2)
- Points: 2
- Comments: 0

## Topic Body

### 던전과 인터페이스

#### 개요
- 이전 파트에서는 게임 개발에서 흔히 사용되는 엔티티-컴포넌트-시스템(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의 블루프린트 시스템이 있음.

## Comments



_No public comments on this page._
