래토피아 개발일지 #14 - 전투 시스템

Cassel
2023-05-01
조회수 1413


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

출시일이 다가올수록 참여해야 할 행사들도 많고, 엄청나게 바빠져 오는 나날들입니다.

이번 개발일지에서는 전투 시스템에 관해 설명드리고자 하는데요.

그전에 2가지 행사 소식을 먼저 전해드리고 시작하겠습니다!




텀블벅 크라우드 펀딩과 PlayX4


첫 번째 소식으로는 <래토피아>의 텀블벅 크라우드 펀딩 진행 소식입니다!

전작 <래트로폴리스>의 크라우드 펀딩 때에도 많은 분들의 관심을 확인할 수 있었고,

팀의 사기 진작과 게임의 홍보에도 지대한 영향을 미쳤었기 때문에 이번에도 열심히 준비하였습니다!

5월 1일부터 공개를 하려고 했지만, 심사가 아직 안 끝나서 시간이 조금 더 걸릴 것 같습니다. 

최대한 금주 내로 공개할 예정이오니 소중한 관심과 사랑을 부탁드립니다.


(5월 4일부로 공개가 되었습니다!)

텀블벅 페이지: www.tumblbug.com/ratopia


이번에는 멀티클리너, 주화, 그리고 아트북을 리워드로 준비해보았습니다. 



두 번째 소식은 5월 11일~14일 동안 일산에서 개최하는 PlayX4의 참가 소식입니다.

인디 오락실과 게임 창조 오디션의 지원 덕분에 2개의 부스에서 전시를 하게 되었는데요.

방문해 주시는 분들을 위한 작은 선물들도 준비되어 있으니,

많이 찾아와주셔서 부스를 빛내주시면 감사하겠습니다.


매번 수많은 인디게임들의 전시 지원을 해주시는 관계자분들의 노고에도 감사드립니다! 




전투 시스템 기획 의도


<래토피아>의 초기 컨셉은 <산소미포함>에서 전투의 맛을 가미하는 것에서 시작되었습니다.

디펜스 요소가 더해진다면 <래트로폴리스>의 유저분들에게도 흥미가 생길 것이라 생각했지요.


도시에서 쥐들이 각기 다른 다양한 작업들을 하다가 도시를 노리는 포식자를 발견하면,

분주하게 무장을 하고 도시를 방어하는 모습을 머릿속에 떠올렸습니다.


여기에 2D 기반의 타일 시스템과 시민의 세세한 관리 시스템을 활용해 방어선을 구축하고,

다양한 병사들을 적재적소에 배치하는 등 자신만의 전략을 수립해 나아간다면,

다채로운 수성전의 재미또한 제공할 수 있으리라 생각했지요.


최초의 전투 컨셉 연출 - 방어선


하지만 첫 번째 <개발일지 #1 - 새로운 도전> 에서 다뤘듯이 전투 시스템을 중심으로 게임을 개발하기에는,

다른 시뮬레이션 게임들과의 차별점이 크게 부각되지 않을 것이라는 생각이 들었습니다.

그래서 전투 시스템은 도시 운영의 난이도를 조절하기 위한 부가 콘텐츠 정도로만 활용하기로 하였죠.


일정 시간마다 적들이 쳐들어오게 하여 게임에 가벼운 긴장감을 조성하고,

방어를 위해서는 한정된 자원이 소모되게 하여,

장기적으로는 보다 효율적인 운영과 관리를 유도하는 정도면 괜찮겠다 싶었습니다.


족제비 족장이 나타나자 동료를 버리고 도망가는 시민들


욕심을 조금 보태어 이따금씩 강력한 우두머리의 침략도 한 번씩 발생한다면,

이를 대비하기 위해 기존의 관리 방식을 크게 변경하는 플레이도 나올 수 있을 것이라 생각했죠.

그러나 이러한 전투 시스템을 추가하는 과정은 상상이상으로 문제가 많았습니다.




적의 크기 문제


침략 시스템을 처음 도입하면서 생긴 첫 번째 문제는 적의 크기와 관련된 부분이었습니다.

쥐 크기(1x2)를 기반으로 길 찾기 기능을 제작해두었기 때문에,

이보다 큰 족제비(2x3)의 이동은 어려움이 있었던 것이지요.


계단 같은 타일을 이동할 때 반대편 발이 공중에 떠있는 것도 부자연스러웠고,

길 찾기에 소모되는 연산 시스템의 부하도 컸습니다.

무엇보다 쥐들이 돌아다니는 좁은 통로들을 이동할 수가 없다는 것이 가장 큰 문제였지요.


족제비가 지형지물을 파괴하면서 이동하게 만들자니,

타일 시스템을 활용한 방어 설계가 무의미해지는 현상이 발생할 것이고,

아예 좁은 통로에 막히게 하자니, 침략을 통한 긴장감 조성이 전혀 안될 것 같았습니다.


문제 해결을 위해서 족제비의 크기를 1x2로 줄여보는 방법도 생각해 보았는데요.

포식자인 족제비의 모습으로 보여주고자 했던 공포 분위기를 충분히 줄 수 없었습니다.

그러다 보니 끝내 쥐들보다 큰 대형 생명체의 침략은 보류하고,

시민의 이동 방식을 활용할 수 있는 1x2 크기의 역병쥐를 주 침략원으로 설정하게 되었지요.


우여곡절 끝에 다시 등장하게 된 역병쥐… 안아줘요~


하지만 작은 쥐들이 주인공인 게임에서 거대한 생명체가 등장하지 못한다는 아쉬움을 그냥 넘길 수는 없었습니다.

여러 방법들을 생각해 보던 끝에, 대형 생명체가 멀리서부터 이동해오는 것이 문제이니,

고정된 대형 생명체를 플레이어가 찾아가게 하면 등장시킬 수는 있을 것 같았죠.


이는 대형 생명체의 경로 이동에 대한 개발비용을 줄일 수 있을 뿐만 아니라,

우두머리 전투에 대한 색다른 시스템도 추가가 가능할 것 같았습니다.

다만 어떻게 아군 병사들을 몰고 우두머리 앞까지 데리고 갈지,

또 맵 어디에 우두머리를 어떻게 배치할 것인가 등 다른 해결해야 할 요소들이 추가로 생겼지요.

이를 해결할 지휘 및 던전 시스템을 고안, 테스트해 보고 있습니다만, 아직 갈 길이 많이 남아있습니다.


화산거미 발롭 컨셉 -  <래트로폴리스>의 우두머리 능력들을 <래토피아>화 시켜보려고 합니다.


 


적의 AI 문제


작은 크기의 역병쥐들은 시민과 동일하게 길을 잘 찾아 이동했지만,

지형으로 인해 길이 아예 막혀있거나 차단되어 있는 상황은 다른 형태의 문제였습니다.


초기에는 <래트로폴리스>처럼 맵의 좌우 끝에서부터 적이 생성되어 다가오는 것을 생각했었으나,

맵 끝에서 플레이어의 도시까지 길이 멀쩡히 연결되어 있는 일은 정말 드물었고,

대부분이 자연적으로 생성된 둔덕이나 구덩이 혹은 플레이어가 만든 벽 등으로 길이 막혀있었죠.


적들이 사다리를 짓거나, 지형을 파괴하여 길을 만드는 방식은 개발 난이도와 연산량이 매우 높았기에,

어떻게든 역병쥐가 유저한테 충분히 방해가 되도록 할 다른 방법이 필요했습니다.



첫 번째 개선 방법은 적 생성 지점의 근거리화였습니다.

적이 멀면 멀수록, 도시까지 찾아오는 경로를 찾아오는데 많은 연산이 필요하기 때문에,

도시 근처에서 생성되게 하여 장거리 길찾기 연산에 대한 부하를 줄여보고자 하였죠.

따라서 처음 시작 지점에서 일정 타일 내에 적을 생성하는 지점이 생기도록 하였습니다.


적 생성 지점은 도시로부터 조금만 벗어나도 발견할 수 있기 때문에,

도시를 확장하는 데 있어 거슬리는 장애물로 작용하는 동시에, 적들도 도시까지 무리 없이 찾아올 수 있었죠.

이에 더하여 처음부터 적 생성 지점이 모두 생성되어 있는 것이 아니라,

플레이어가 도시를 확장해 나아갈 때 확장한 지점 주변에 생성되는 방식으로 설계하여,

플레이어의 확장에 따라 난이도가 비례하여 증가될 수 있게 수정하였습니다.

그러나 아직도 플레이어가 길을 막아버리면 충분한 역할을 못해내는 것은 동일하였죠.


그래서 너네가 뭘 할 수 있는데?



그래서 두 번째 개선 방법으로 봉쇄된 적의 순간 이동 기능을 추가하였습니다.

봉쇄된 적들이 주변에 도시로 접근 가능한 위치가 있다면 땅굴을 파서 이동하도록 해보았죠.

기획 당시에는 타일을 활용한 방어 전략을 무너트리진 않을까 우려했던 기능이었으나,

적 생성 지점을 발견하는 즉시 해당 지점을 봉쇄시켜 버리는 현 상황 속에서는,

의도했던 전투가 발생하지도 않고, 긴장감을 조성해 줄 수도 없어 나온 특단의 조치였죠.



자나 깨나 땅굴 조심. 항상 땅굴을 조심해야 한다. 


첫 테스트를 했을 때에는 도시 내에 갑작스럽게 적이 등장해서 당황스러웠는데요.

도시를 확장해 나아갈수록 확장한 방향 근처에서 땅굴이 생성되니, 점점 적응이 되더군요.

이제는 적의 생성 지점을 방치하기보다는 제거하기 위해 좀 더 공격적으로 병사들을 육성하게 되니,

기존보다 방어를 더 신경 쓰며 도시를 운영하게 되어 만족스러웠습니다.




아군의 AI 문제


개발을 이어가면서 발생한 AI 문제는 비단 적 AI의 문제만 있는 것이 아니었습니다.

초기 기획했던 전투 양상은 시민들이 일상생활을 하다가,

적의 침략이 발생하면 무기고에서 무장을 하고 전투를 준비하는 방식이었는데요.


그러나 땅굴 시스템이 생기기 전, 적이 도시로 아예 접근조차 못했던 환경에서,

시민들만 무장을 한 채로 세월아 네월아 대기하는 상황은 의도했던 상황이 아니었지요.


그래서 적이 근처에 있을 때만 시민들이 무장하게 하였더니,

아직 다가오고 있는 적들이 남아있음에도, 적이 검사 범위 밖에 있다는 이유로,

무장을 해제하고 일상으로 돌아가다가, 한참 후에나 다시 무장을 하러 복귀하는 현상이 잦아졌습니다.


여러 처리들을 해가면서 조금은 똑똑하게 무장하도록 개선하였더니, 또 다른 문제가 발견되었습니다.

적을 발견하면 사격하는 초소에서, 적이 아니라 적 방향에 있는 벽을 향해 화살을 쏘는 일이 목격된 것이지요.


야야,, 그러다가 발가락에 화살 박히겠다…


이는 너무 부자연스러웠고, 똑똑하게 행동시키는 방법들은 너무 큰 연산량이 필요해 적용이 어려웠습니다.

결국 초소나 궁수와 같은 원거리 공격 시스템들은 개발을 미뤄두었고,

병영과 같은 병사 양성 시설에 배치된 병사들만 침략한 적들을 추적하게 하여,

일반 시민들이 불필요하게 대기하는 문제를 어느 정도 해결했습니다.


사거리를 이용한 방어가 수성전의 꽃이지만, 아직 적용 가능한 명쾌한 해법을 찾지는 못해서,

투사체를 정해진 경로로 발사하는 방식이나, 투사체를 사용하지 않는 마법 병종들의 추가를 고려하고 있습니다.




데스볼


마지막 문제는 <래트로폴리스> 때에도 경험했고,

<래토피아>의 기획을 시작할 때에도 많이 우려했던 문제로,

적들이 겹치게 되면서 아군 유닛 한 마리 한 마리를 집중 타격하는 현상이었습니다.

애써 육성한 병사들이 뭉친 적과 맞닥뜨리게 되면서 줄줄이 쓰러지면 얼마나 억울합니까?


다수의 아군 병사가 소수의 적을 집중적으로 공격해 잡는 것은 이상적인 그림이겠지만,

그 반대의 상황은 썩 유쾌한 그림은 아니었지요.


전우조 행동을 하지 않은 병사들의 최후


다행히도 적의 경로가 수평으로 제한되어 있는 <래트로폴리스>와는 달리,

<래토피아>는 수직 이동도 가능하고, 여러 시민 및 건조물들이 넓게 깔려있는 형태의 게임입니다.

그래서 적들이 뭉쳐서 도시로 진입한다 하여도, 그 뭉침이 오래 유지되지는 않고,

각자 설정된 목표 대상을 추적하기에 넓게 퍼지긴 합니다.


하지만 이 역시 뭉침 현상으로 인한 일점사 현상을 막을 수 있는 건 아니기에,

적이 자신을 공격한 아군 병사만 공격을 한다거나,

한 시민에게 일정 수 이상의 적이 붙지 않는 방식을 시도해 보았습니다.

그러나 이 또한 적들이 전선을 형성하고 있는 병사들을 지나쳐서 다가오니 부자연스럽게 느껴졌지요.


결국 이에 대해서는 아직도 해결 방법을 찾아보고 있는 중입니다.

아무래도 마을 건설 게임에 전투를 끼얹는 형태로 만들어 나아가다 보니,

시스템적으로 상정되지 않았던 요소가 있어 어려움이 더 많은 것 같습니다.

하지만 이러한 기술적인 요소들과 게임의 특징적인 요소들에 맞춰 새로운 컨텐츠를 넣어가는 것 역시 게임 개발의 묘미겠지요.




전투는 분명히 <래토피아>의 중심 요소는 아닙니다.

따라서, 한계에 봉착할 때마다 기반 시스템을 수정하기보다는 전투 시스템을 기반에 맞춰 적용할 필요가 있습니다.

이러한 과정에서 수많은 시행착오와 이를 해결하기 위한 개발 비용이 발생하겠지만,

포기하기에는 너무 매력적인 시스템이라 생각합니다.

그러니 앞으로도 열심히 만들어 나가겠습니다.

오늘도 긴 글 읽어주셔서 감사합니다!



스팀 스토어: https://store.steampowered.com/app/2244130/Ratopia/

페이스북: https://www.facebook.com/CasselGames/

트위터: https://twitter.com/CasselGames

12 7