- 관련게시물 : 래토피아 개발일지 #4 - 애니메이션

- 관련게시물 : 래토피아 개발일지 #3 - 건조물과 길찾기

- 관련게시물 : 래토피아 개발일지 #2 - 그래픽 컨셉과 기술 검토

- 관련게시물 : 래토피아 개발일지 #1 - 새로운 도전

안녕! <래토피아>를 개발 중인 카셀이야.

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

그래도 실내에서 일한다는 점에 하루하루 감사하며 개발하고 있어ㅠㅠ.

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




공주


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

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

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



a1562caa1b23b47db93322792987706d3f795309a41c47a181fed07f9ec29d215378

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



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

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



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

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

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

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



a76e05aa260eb4589f3321502987706d44da3fd29161e210a7abc992455399b7eb8d1f

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



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

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

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



a67735ad250bb545a38080e146c13c73fa804cc6feeab9ca900f5bd43957e9

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



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

국고로부터 임금이 지속적으로 빠져나가.

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

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



a05e20ab122a07f03aefc6ad58d62d3bf0c1836dd35721f23c9924c1a0

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



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

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

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

공주 육성을 통해 다양한 기술들을 습득하여 도시 운영과 탐험에 활용할 수 있게 개발하려고 해.
 아직 공주 관련해서는 많이 개발된게 없어서 언젠가 다시 한번 다뤄보면 좋을 것 같네...




시민 행동 트리


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

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



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

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

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



a14725ac301eb27482332b619a16c402333a845021310b2d379e1633c6a0a5c8bb77f70588f8

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



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

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



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

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

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

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

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

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



a04b39ad0a2bb54cb63410792987706d78df7ecab88c9ef642a0349e4b48dd4917

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



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

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

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

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

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



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

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



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

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

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

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



a66f34ac320a07f33aefc6ad58d62d3b5396d7567ab68fb25d84117bb7

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



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

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

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

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



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

노력의 결실인지 어느덧 게임은 점차 의도대로 동작하기 시작했어.

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

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



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

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

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



a65b3daa1b17b44cbb35047c29857c6d16bb01b66f5a3f1086d7aa8d3dc4650f13d59f

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



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

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

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

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



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

시간표가 없어지니 시민들이 나름 더 효율적으로 움직이는 것 같아 만족스러운 상태야.




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

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

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



이상 이번 개발일지를 줄이도록 할게!

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

모쪼록 더위 조심햐~