시나리오
'The Roguelike'는 주인공이 이름 모를 던젼을 탐험하고 던젼에 숨겨진 보물을 찾으며 지하로 지하로 내려가는 턴제 게임입니다. 탐험 중에 위험한 몬스터들과 조우하기도 하고, 몬스터와 싸워 이기면 탐험에 필요한 아이템들도 얻을 수 있습니다. NPC들과 대화를 통해 퀘스트도 받고 퀘스트를 완수하면 보상도 주어집니다. 단, 로그라이크류 게임 답게 한번 죽으면 게임을 다시 시작해야만 합니다.
게임 방식
- 성공 조건 : 플레이어가 던젼의 지하 맨 밑층까지 탐험을 완료하면 게임에서 승리하게 됩니다.
- 실패 조건 : HP가 0이 되면 플레이어가 사망하게 되고 게임이 종료 됩니다.
- 턴제 게임으로써 플레이어가 액션을 할때 마다 스테미너가 소모 되며, 0이 되면 그 때부터 매 턴마다 HP가 감소합니다.
- 몬스터에게 공격을 당하면 몬스터의 공격력과 플레이어의 방어력에 따라 HP가 감소 합니다.
- 이동
- 동, 서, 남, 북. 이렇게 네 방향의 이동 버튼을 누르면 타일 단위로 이동 할 수 있으며 한번의 이동에 1의 스테미너가 소모 됩니다.
- 공격
- 몬스터와 플레이어가 바로 옆에 위치한 상태에서 몬스터 방향으로 이동 버튼을 누르면 몬스터를 공격합니다. 공격에는 2의 스테미너가 소모 됩니다.
- 아이템 획득
- 아이템이 위치한 타일 위로 올라가면 해당 타일에 놓여 있는 아이템을 획득 할 수 있습니다.
- 아이템은 몬스터를 사냥하거나 퀘스트를 통해, 혹은 던젼 바닥에 떨어져 있는것을 얻을 수 있습니다.
- 맵 이동
- 각 층마다 위 또는 아래로 가는 계단이 존재 합니다. 계단이 있는 타일 위로 올라가면 해당 위층 또는 아래층으로 이동 할수 있습니다.
- 인벤토리
- 인벤토리 버튼을 누르면 현재 장착하거나 소지하고 있는 아이템 목록이 출력 됩니다. 아이템을 장착, 해제 또는 사용하거나 버릴 수 있습니다.
- 퀘스트
- 특정 조건(NPC에게 말을 건다, 특정 층으로 이동, 특정 위치에 도착)을 만족하면 퀘스트가 발동 됩니다.
- 퀘스트에서 주어진 조건들을 달성하고 나면 보상이 주어집니다.
데이터 구조
- 주인공 - 위치, 가시거리, HP, 스테미너, 공격력, 방어력, 속도, 레벨, 경험치
- 몬스터 - 위치, 가시거리, HP, 스테미너, 공격력, 방어력, 속도, 몬스터 이름
- 아이템 - 위치, 아이템 이름, 아이템 효과(공격력 상승, 방어력 상승, HP 회복, 스테미너 회복 등등..)
- NPC - 위치, NPC 이름, 대사
- 퀘스트 - 시작 조건, 종료 조건, 퀘스트 시작 대사, 퀘스트 완료 대사, 퀘스트 완료 보상
간략하게 위와 같이 정리가 가능합니다. 물론 지금은 지극히 단순하게 간략화 해서 정리한 것이고 개발을 진행하면서 위 보다 복잡한 자료구조가 추가 됩니다.
다음으로 넘어가기 전에 짚고 넘어갈 부분은 위 자료구조간에 공통 부분들이 많이 보인다는 것입니다. 일반적으로 객체 지향형 프로그래밍에서는 공통 되는 부분을 따로 부모 클래스로 만들어 공용으로 사용하고 그 외 공통 되지 않은 부분들을 하위 클래스에서 따로 구현하는 방법을 사용합니다. 이 책에서는 처음에는 클래스의 상속 관계나 추상화를 고려하지 않고 각 클래스를 개별적으로 개발을 완료하고 리팩토링을 통해 다시 클래스들을 정리하는 방식으로 진행 합니다.