mobile background

래트로폴리스 개발일지 #35 – 저장 & 이어하기

Cassel
2021-03-01
조회수 3214


안녕하세요! 래트로폴리스를 개발 중인 카셀입니다.

2월 동안은 저장 기능 구현과 게임의 무작위성을 감소시키는데 시간을 사용하였습니다.

그럼 구현한 내용을 간략히 소개해보도록 하겠습니다.




- 저장 기능 -

 

예전부터 많은 유저분들께서 저장 기능의 추가를 요청해 주셨었는데요.

래트로폴리스는 짧은 플레이 타임을 가진 로그라이크 게임에 실시간이라는 특징도 가지고 있어서,

저장 기능을 지원하는 것을 망설여 왔습니다.

대신 그 시간을 컨텐츠 추가에 집중해 왔는데요,

그러나 이제는 충분하리만큼 컨텐츠들이 추가가 되었고,

오랜 시간 동안 플레이할 수 있는 무한 모드도 생겼기 때문에,

저장 기능을 지원해보기로 마음을 먹었습니다.


우선 게임의 정보들을 데이터 파일로 저장하는 기능부터 차근차근 개발하였습니다.

플레이어 카드 가방, 무덤, 손에 들고 있는 카드, 방어선에 배치된 유닛들,

도시에 건설된 건물들, 획득한 조언자들, 현재 진행 중인 노동/이벤트 효과들,

이벤트 진행 내역들 등 게임 내 수많은 요소들을 모두 기록하여 하나의 데이터 파일로 만들었습니다.


그다음에는 저장된 데이터 파일을 불러오는 기능을 개발하였습니다.

로딩 화면을 만들어서 화면을 가린 후 건물을 건설하고, 유닛을 배치하는 등 저장된 데이터들을 순차적으로 적용하였지요.

적용이 모두 끝나면 로딩 화면을 치워 화면을 다시 보여주고,

저장 전 상태와 동일한지 확인 작업을 하였습니다.


< 그렇게 완성된 저장 기능 >


신경 써서 처리해야 할 특수한 상황들이 계속해서 발견되어,

수많은 테스트와 수정 작업을 진행하였는데요.

그럼에도 정말 아쉬운 점은 전투 상황에 대한 데이터는 저장하지 못했다는 점입니다.

아군과 적군의 AI까지 저장하려면 저장할 데이터들과 특수 상황들이 대폭 늘어나고,

데이터를 불러오는 과정에서 비정상적으로 작동할 확률이 너무 높아지기 때문이었지요.


저장 기능을 구현하기 전에는 게임이 매 웨이브 종료 시마다 예외 없이 자동 저장되고,

플레이어가 원할 때 저장 후 종료가 가능한 저장 기능을 지원하길 원하였으나,

적이 끊임없이 몰려오거나, 전투 상황 때는 저장이 되질 않으니 머리가 아프더군요.


어쩔 수 없이 수동 저장 기능은 빼고 적이 없을 때만 자동 저장되도록 구현하였습니다.

그나마 할 수 있는 것은 적들이 덜 등장하고, 빨리 등장하도록 조정하여

저장이 가능한 상황을 더욱 확보하는 방식이었지요.


아쉬운 부분이 많지만 그래도 저장 기능을 구현했다는 것에 나름의 만족하고 있습니다.

지속적인 관찰 및 개선 작업을 거친다면 좀 더 완성도 높은 기능으로 자리 잡을 것 같네요.




- 이벤트 무작위성 감소 - 


게임 내 무작위성이 주는 재미는 분명히 존재하지만,

무작위성이 플레이어에게 불편함이나 방해를 주는 점은 최대한 줄이고 싶었습니다.

대표적인 것이 이벤트에서 무작위 조언자나 카드를 지급하는 선택지들인데요.

어떤 보상을 받게 될지 모르는 상태로 선택하는 선택지였기 때문에,

플레이어에게 부정적인 경험을 제공하거나, 게임에 방해가 되는 경우가 잦았지요.


그래서 어떤 보상을 획득하게 될지 미리 표시되도록 이벤트들을 변경하였고,

무작위로 카드를 제거하거나, 무작위로 카드를 강화하는 선택지들도

해당되는 카드를 표시하여 유저가 운에 의존하지 않게 수정하였죠.


< 변경된 이벤트 선택지들 >


변경된 시스템은 상당히 반응이 좋았는데요,

플레이어가 보상을 선택할 때 위험부담이 덜하였고, 좀 더 전략적인 선택이 가능한 장점이 부각되었습니다.

저장 기능도 마찬가지고 진작에 적용했으면 좋았을 것 같다는 생각이 드네요.




- 스팀 트레이딩 카드 -


제안 게시판을 보다 보면 몇몇 유저분들의 스팀 트레이딩 카드를 지원해달라는 요청을 볼 수 있었는데요.

처음에는 스팀 트레이딩 카드가 무엇인지 정확히 몰라서 지원하기를 망설이다가,

자세히 알아보고 나니 손쉽게 지원할 수 있을 것 같아서 이번에 추가하게 되었습니다.


스팀 트레이딩 카드는 스팀에서 게임을 플레이해서 얻을 수 있는 카드입니다.

카드를 모아서 세트를 만들게 되면, 배지와 프로필 배경 등의 보상을 받아서 스팀 프로필을 꾸밀 수 있습니다.

다만 한 계정 당 얻을 수 있는 카드의 수가 정해져 있기 때문에,

부족한 카드는 다른 사람들과의 구매/교환을 통해 세트를 만들어야 합니다.

스팀 프로필을 꾸미는데 관심이 없다면 다른 사람에게 판매를 해도 되지요.


< 래트로폴리스에서는 지도자 카드 6장을 모아 배지를 만들 수 있습니다 >


스팀 트레이딩 카드를 지원하려면 스팀에서 요구하는 그래픽 에셋들을 제작해야 합니다.

스팀에서 어떤 식으로 만들어야 되는지 자세하게 가이드라인을 제공해 주기 때문에,

가이드라인과 다른 게임들의 트레이딩 카드들을 참고하여 필요한 에셋들을 제작하였습니다.



1. 트레이딩 카드 이미지 5~15장

< 작업하고 나니 너무 잘 만들어진것 같아 데스크톱 바탕화면으로 사용하는 중입니다 >



2. 이모티콘 5~10개

< 지도자 이모티콘 6개만 등록해놓고 나머지는 디스코드에 등록하여 사용 중입니다 >



3. 배지 이미지 6개

< 6번째 배지는 다른 배지와는 크게 차이가 나야 된대서 여러 번 수정하였습니다 >



4. 프로필 배경 이미지 3~10개

< 쥐가 나오는 컨셉 아트들을 수정하여 제작하였습니다 >



스팀 트레이딩 카드 작업은 크게 영양가 있는 작업은 아니지만,

수많은 스팀 게임들이 트레이딩 카드를 지원하는 만큼,

스팀 출시를 생각하시는 분이라면 어렵지 않으니 한 번쯤 미리 생각해 보시면 좋을 것 같습니다.

다만 한번 등록된 스팀 트레이딩 카드들은 변경이 불가하므로 신중히 등록하셔야 합니다.




여기까지가 저번 달 동안 작업한 주요 내용인데요,

우려했던 것과는 다르게 저장 기능을 빠르게 추가할 수 있어서 안도했던 한 달이었습니다.

저장 기능을 추가하면서 아직 미발견된 버그들이 잔존해 있을 것 같기 때문에

지속적으로 관리/개선하면서 다음 업데이트를 준비해 나아갈 계획입니다.

다음 업데이트로는 커스텀 모드의 추가를 계획하고 있습니다.


이번 한 달도 좋은 일 가득한 한 달이 되세요~


< 래트로폴리스 by Somadeathberry >



홈페이지: https://www.CasselGames.com/

스팀 스토어: https://store.steampowered.com/app/1108370/Ratropolis/

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

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

13 2