mobile background

래토칼립스 개발일지 #7 - 개발 도구 개발 및 활용

Cassel
2026-04-01
조회수 454


치즈: 안녕하세요. <래토칼립스>를 개발 중인 치즈입니다.

3월에는 현재 진행 중인 2차 유저 테스트를 준비하며, 튜토리얼 개선과 전반적인 폴리싱 작업에 집중했습니다.

다만 위 내용들로 이번 개발일지를 채우기에는 조금 아쉽다는 생각이 들었습니다.

그래서 이번 개발일지에서는 저희가 개발 편의를 위해 직접 만들었거나

현재 활용하고 있는 도구들을 어떤 방식으로 개발했고 실제로 어떻게 사용하고 있는지 소개해 보고자 합니다.




맵 에디터


<래토칼립스>에는 총 3개의 원정 테마가 있으며, 각 테마마다 3개의 난이도로 구성된 다양한 맵 스탬프를 제작해야 했습니다.

단순히 난이도별로 10개씩만 맵이 있다고 가정하더라도, 테마당 30개, 총 90개의 맵을 설계해야 한다는 뜻입니다.

여기에 이벤트 발생 구역이나 각종 특수 맵은 포함되지 않았으므로, 실제로 필요한 맵 수는 이보다 훨씬 많습니다.

그렇기 때문에 이번 작품에서도 개발자들이 맵 스탬프를 보다 수월하게 제작할 수 있는 기능은 필수적이었습니다.




개발 초기에는 맵을 자동으로 생성하는 랜덤 맵 시스템도 고려했습니다.


ace276c7efe07.gif

초기 랜덤 맵생성 시스템으로 제작된 맵



하지만 실제로 테스트해 보니, 다양한 기물과 적을 활용한 정교한 레벨 디자인을 구현하기에는 한계가 있다고 판단했습니다.

결국 <래토피아> 개발 당시 제작했던 맵 스탬프 에디터와 유사한 도구를 이번 작품에서도 새롭게 만들기로 했습니다.


6379df3a330eb.gif

<래토피아> 맵 스탬프 에디터


947d2e3382cc9.gif

<래토칼립스> 맵 스탬프 에디터


겉보기에는 전작의 에디터와 비슷해 보일 수 있지만, 이번 맵 에디터에는 두 가지 큰 특징이 있습니다.




첫 번째는 적의 구성과 이동 경로를 자유롭게 설정할 수 있는 시스템입니다.

이 기능이 필요한 이유는, 이번 작품에서는 모든 적과 반드시 전투를 벌이게 하기보다는,

유저의 판단과 조작에 따라 일부 전투를 회피하거나 조금 더 유리한 상황에서 전투를 유도할 수 있도록 만들고자 했기 때문입니다.

이를 위해 적이 어떤 경로를 반복적으로 이동할지 설정하는 기능을 맵 에디터에 함께 포함했습니다.


8ef8c5c9ec586.gif

적 경로를 작성하는 모습




두 번째는 랜덤/확률 시스템입니다.

맵 에디터를 통해 공간을 제작하는 방식인 만큼, 실제로 손수 제작할 수 있는 맵 수에는 물리적인 한계가 있었습니다.

따라서 반복 플레이를 하는 유저분들은 이미 경험한 맵을 다시 만나게 될 가능성이 높았습니다.

이러한 상황에서 랜덤/확률 시스템은, 같은 맵이라 하더라도

다른 적이나 이전에는 보지 못했던 오브젝트가 등장하도록 하여 조금씩 다른 경험을 제공하기 위해 적용했습니다.


적의 경우에는 사전에 설정해 둔 그룹을 배치하면, 그중 하나의 그룹이 무작위로 선택되어 등장하는 방식입니다.


45d1d73093a60.png

위처럼 지정해둔 적 그룹 중 하나가 등장합니다.


오브젝트는 각각 개별적인 등장 확률을 가지기 때문에, 같은 맵에 진입하더라도 조우할 수 있는 오브젝트 구성이 달라질 수 있습니다.


8ddc7549e1751.png

기물의 등장확률을 조절하는 모습


이렇게 제작된 맵들은 각 테마에 맞게 저장되며, 원정 시작 시 해당 테마의 맵들을 노드 구조에 맞춰 불러오는 방식으로 구성됩니다.



f278487d6dbe7.png

제작된 맵들은 각 맵 노드에 무작위로 배치됩니다.


맵 에디터 덕분에 다양한 맵들을 제작할 수 있게 되었지만,

여전히 다량의 맵을 제작할 때 어느 정도 시간을 필요로하여,

추후에는 초기 자동화 맵생성 시스템과 결합하여 기능을 개선하고자 합니다.




데이터 통계 시스템


이전 작품인 <래토피아>에서는 통계 시스템으로 Unity에서 제공하는 Analytics를 사용했습니다.

그러나 저희가 수집하고자 했던 데이터의 양과 종류에 비해 Unity Analytics의 구조는 다소 단순했고,

결과적으로 저희 게임에 꼭 맞는 도구라고 보기는 어려웠습니다.

그래서 이번 작품에서는 새로운 통계 시스템을 직접 구축하는 편이 더 적합하다고 판단했습니다.


5c89937f7979d.png

위와 같은 순서로 데이터 처리과정을 거칩니다


현재 새롭게 구축한 방식은 위 이미지와 같고, 이제 데이터는 Google Cloud를 통해 저장되고 있습니다.

이렇게 수집된 데이터는 저희가 필요한 카테고리별로 구분해 관리하고 있으며,

각 항목에 맞는 SQL 쿼리문도 함께 작성해 두었습니다.

이를 통해 원하는 데이터를 언제든 손쉽게 조회할 수 있도록 구성했습니다.


21429053bbd1b.png

각 캐릭터별 픽률 / 승률을 조회한 화면


앞으로 이 데이터들은 유저 플레이 테스트와 데모 플레이 기록을 분석하여,

캐릭터별 사용률이나 게임 진행 정도를 파악하는 등 다양한 측면에서 활용할 예정입니다.




AI 로컬라이징 시스템


로컬라이제이션은 개발자에게 아주 즐거운 작업이라고 하기는 어렵지만, 반드시 해결해야 하는 과제에 가깝다고 생각합니다.

지원 언어가 많아질수록 Steam 시장에서의 접근성이 높아진다는 점에는 많은 분들이 공감하실 것입니다.

하지만 다양한 언어를 지원하기 위해서는 상당한 작업량이 필요하고, 각 언어의 품질까지 세심하게 챙기려면 더욱 많은 시간이 들어갑니다.

이러한 부담을 조금이라도 줄일 방법을 고민하던 중, 

작년 Unite Seoul 세션에서 <Shape of Dreams>을 개발하신 개발자분이 자체 AI 번역 시스템을 도입해,

소규모 인원으로도 다국어 지원을 운영하고 있다는 내용을 접하게 되었습니다.

그 때 차기작에서는 이와 관련된 방법을 조사해 저희 팀에도 관련된 기술을 접목하면 좋겠다고 생각했습니다.


이후에는 강연자님께 연락을 해 실제 개발하신 방법도 청취하고 저희가 사용하던 번역시스템과 결합할 수 있는지 검토해 보았습니다만,

상호간의 번역 및 개발 방식의 차이가 커 다른 방법을 모색해야 했습니다.

다른 방법들을 검토하는 과정에서, 현재 저희가 사용하는 Google Spread Sheet에 App Script와 Gemini API를 활용하면

기존 Google Spread Sheet 기능에서 손쉽게 확장이 가능하다는 사실을 알게 되었고, 이를 응용해 보기로 하였습니다.

결과적으로 한국어 또는 영어를 원문으로 지정하면 각 언어 열에 맞는 번역문을 생성하는 기능을

기존 Google Spread Sheet에 확장 도구처럼 추가 할 수 있었습니다.


e2c600e2ec550.gif

이제 단순번역은 GPT에게 물어가며 번역을 할 필요가 줄어들었습니다.


현재 해당 기능은 아직은 테스트 단계이지만, 앞으로 로컬라이징 작업에 큰 도움이 될 것으로 기대하고 있습니다.




마무리


위와 같은 개발도구들을 이용해, 개별로 작업했으면 공수가 많이 들었을 작업들에 소모되는 시간을 단축할 수 있었습니다.

앞으로도 여러 도구를 만들어나가면서 개발 효율을 높여나가고자 합니다.


다가오는 5월에는 플레이엑스포에 참가해, 유저분들께 처음으로 오프라인 빌드를 선보일 예정입니다.

현재 2차 유저 테스트가 스팀에서 진행 중이며, 이번 주 일요일인 4월 5일(UTC+9)까지 참여하실 수 있습니다.

관심 있으신 분들께서는 테스트에 참여하시고 소중한 피드백을 남겨주시면, 게임 개발에 큰 도움이 될 것 같습니다.

이번 개발일지는 여기까지입니다.

긴 글 읽어주셔서 감사합니다.


스팀 스토어: https://store.steampowered.com/app/4156040/Ratocalypse/

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

X: https://x.com/CasselGames

8 0