래토피아 개발일지 #5 - 공주와 시민 행동 트리

Cassel
2022-08-01
조회수 1033



안녕하세요! <래토피아>를 개발 중인 카셀입니다.

장마가 끝나니 폭염이 기승을 부리기 시작했네요.

실내에서 일한다는 점에 하루하루 감사하며 개발하고 있습니다.

그럼 이번 화에서는 공주 캐릭터와 시민들의 행동 트리에 대해 소개하도록 하겠습니다.




공주

<래토피아>에서 공주는 플레이어가 직접 조작하는 주인공 캐릭터입니다.

어머니의 철권통치에 반기를 든 세력들에게 왕국을 뺏기고 도망쳤으며,

신분을 숨기고 새로운 땅에서 자신만의 통치를 시작한다는 배경을 가진 공주 쥐입니다.


왕국을 버리고 비밀통로로 탈출하는 공주와 시민들


일반적으로 도시 건설 시뮬레이션 게임에서는 플레이어 캐릭터가 등장하지 않지만,

<래토피아>에서는 공주를 조작하여 화면을 이동하고, 건설, 채집, 전투 등의 행동을 하게 됩니다.


비록 화면 이동과 조작의 불편함으로 도시 관리가 좀 더 어렵게 느껴지는 단점이 있지만,

공주 캐릭터의 제한된 시점에서의 색다른 도시 관리를 경험할 수 있으며,

공주를 성장시켜 도시의 발전 속도를 높이는 등 다른 방법으로도 도시를 발전시킬 수 있지요.

또한 시민들이 제 뜻대로 움직이지 않을 때 플레이어가 직접 문제를 해결할 수도 있습니다.


 시민들의 행동 대부분을 수행할 수 있는 공주(플레이어) 


게임 초반부에는 플레이어가 단순 작업들을 직접 수행해야 하지만,

도시에 시민이 늘어날수록 명령 키를 눌러 나타나는 명령 패널을 통해,

건설, 채집, 채굴, 사냥 등 여러 작업들을 시민들에게 명령할 수 있습니다.


리볼버 탄창처럼 회전하는 패널을 만들고 싶었던 명령 패널 변천사


그러나 시민이 명령을 받아 작업을 수행하게 되면,

국고로부터 임금이 지속적으로 빠져나가게 되는데요.

그래서 플레이어는 줄어들어가는 국고를 채우기 위해 시민들에게 세금을 부과하거나,

금과 같이 돈이 되는 자원을 찾아 여러 지역을 탐험하러 다니게 됩니다.


지하에 숨겨져 있는 자원을 찾아서~



추후에는 친위대를 꾸려 탐험 중 조우하게 되는 거대 크리쳐를 돌파하거나,

도시의 자원을 노리는 습격자들로부터 도시를 방어하는 등의 전투 관련 시스템들도 추가할 계획입니다.

또한 주변 시민들에게 버프를 주거나, 지정된 위치로 순간 이동을 하는 등,

공주 육성을 통해 다양한 기술들을 습득하여 도시 운영과 탐험에 활용할 수 있게 개발할 계획입니다.




시민 행동 트리

시민 캐릭터의 길찾기 기능 구현이 완료된 후, 시민들의 일상생활도 구현을 하고자 하였습니다.

시민에게 주어진 명령이 없을 때에는, 밥을 먹거나 잠을 자는 등의 개별 행동하게끔 말이죠.


이를 위해 시민들에게 허기와 피로 등 여러 욕구 게이지를 추가하였고,

시민들이 다음 행동을 정할 때 욕구 게이지가 일정 값 이하가 될 시,

결핍된 욕구를 채우기 위해 목적지를 찾아 이동하도록 하였습니다.


시간에 따라 허기와 피로가 줄어드는 것부터 차근차근…


시민들이 할 수 있는 행동들이 많아지면서 어떤 일을 우선으로 수행할지 정리가 필요했는데요.

시민들의 하게 될 행동들을 예상한 뒤 쪼개고 분류하여, 구조화 및 정렬 작업을 진행하였습니다.


1. 특수: 기절하거나 부상을 당해 다른 행동을 할 수 없거나,  플레이어가 직접적으로 내린 명령을 따르는 행동

2. 전투: 주변에서 전투/화재/자연재해가 발생하여 긴급히 대처하는 행동

3. 수면: 피로가 쌓여 잠을 자는 행동

4. 휴식: 식사, 쇼핑, 서비스 시설 이용, 산책 등 욕구들을 채우기 위한 행동

5. 작업: 일터에서의 전문 작업/서비스, 건설, 채집, 채굴, 운반 등 돈을 벌기 위한 수익 행동

6. 유휴: 할 수 있는 행동이 남아있지 않을 때 다음 명령을 기다리는 행동


어떤 작업을 우선할지 정리한 초기 행동 순서도 


일부 행동들은 좀 더 세밀하게 분리할 필요가 있었는데요.

가령 건설 작업은 “건설 위치 확보(방해되는 타일을 부수는 행동)”,

“건설 재료 공급(자원을 가져오는 행동)”, “건조물 건설”로 또 쪼개어졌지요.

기본적으로 시민들은 현재 수행하고 있는 행동을 마무리한 뒤에 다음 행동을 검사하게 하였기에,

행동을 세밀하게 나눌수록 다양한 상황에 재빠르고 자연스럽게 대응할 수 있었습니다.


그러나 행동에 대한 순서들이 어느 정도 구조화되고,

시민들이 정해진 행동 트리를 올바르게 수행하였음에도 게임은 제대로 동작하지 않았는데요.


이미 다른 시민이 먹고 있는 식량을 향해 여러 시민들이 이곳저곳에서 동시에 뛰어오거나,

건조물 건설 명령을 내리면 시민들이 너도나도 같은 재료들을 가져오는 선착순 게임이 되어있었습니다.

게다가 플레이어가 공주 캐릭터로 시민들의 일감을 뺏거나 행동을 취소시킬 수 있어,

열심히 작업 중인 시민들을 바보로 만들고는 하였지요.


물건을 운반 중인 시민에게 새 일터를 배정했을 경우 갑자기 먹통이 되는 현상


이미 다른 시민이 수행하고 있는 행동에 대해서는 시민들이 중복 행동을 거르게 막을 필요가 있었고,

시민들이 초장거리를 이동해서 수행해야 하는 행동들은 우선도를 낮춰야 했으며,

플레이어에 의해 시민이 하려던 일을 뺏겼을 경우 시민의 행동이 취소되게 처리하는 등,

수많은 후처리 작업들이 추가로 필요하였습니다.


그렇게 여러 의도치 않은 상황들을 부딪혀가며 수정하다 보니,

어느덧 게임은 점차 의도대로 동작하기 시작하였습니다.

이제는 게임 내 시간에 따라 일부 행동들이 제한되게 하여,

낮에는 다 같이 작업과 휴식을 하고, 밤에는 잠을 자는 시간표를 만들어 볼 수도 있었지요.


처음에는 작업 시간, 휴식 시간, 수면 시간으로 3분할 된 시간표를 구현하였습니다.

그러나 휴식 시간만 되면 단체로 밥을 먹으러 가는 현상과,

서비스 시설에 배치된 시민도 휴식을 해버려 이용이 불가능한 상황 등의 문제들이 발생하더군요.


휴식 시간이 되자마자 식량이 있는 농장 앞에 모두 모이는 광경


그래서 작업하다가도 휴식이 필요하면 언제든지 휴식을 하러 갈 수 있게,

작업 시간과 휴식 시간이 합쳐진 자유 시간을 만들어 문제를 해결하였는데,

최근에는 수면 시간마저도 자유 시간과 합칠 필요가 있을 것 같더군요.

도시가 커지면서 장거리 출퇴근을 하는 시민들에게는 수면 시간이 충분해지지 않은 것이 이유였습니다.


고민 끝에 시간표 설정은 추후에 플레이어가 입맛대로 조정할 수 있게 따로 빼놓기로 하였는데,

시간표가 없어지니 시민들이 나름 더 효율적으로 움직이는 것 같아 만족스럽습니다.



여러 테스트와 수정들을 거쳐 가면서, 이제는 제법 시뮬레이션 게임답게 동작하는 것 같습니다만…

아직도 특수 상황이나 전투 상황 등 추가 및 개선해야 하는 행동들이 많이 남아있기에,

지속적으로 보완 작업을 거쳐서 다듬어 나아가야 할 것 같습니다.




이상 이번 개발일지를 줄이도록 하겠습니다!

다음 화에서는 게임의 배경이 되는 군계와 타일 에디터를 소개해 드리도록 할 테니 많은 관심 부탁드립니다. 

모쪼록 더위 조심하세요~



함께 <래토피아>를 개발하고자 하시고 싶으신 UI 디자이너 분이 계시다면 연락 주세요!

https://casselgames.notion.site/3bfe510aa2434942ba521c48ba7829f9


11 1