주모 키우기

주모 키우기 개발일지 - #5. 마일스톤/ 피처 구현 첫 번째

로망바드 2026. 10. 1. 17:38

무엇을 먼저 할 것인가?

​

프로토타입을 통해 작업 방향을 정리하고 난 뒤, 작업 순서에 대한 고민을 시작했다.

​

여러 사람이 모인 팀이라면 각 작업이 병렬로 진행 가능 할 테니 고민할 것이 없을 것이다. 그러나 1인 개발을 유지하지는 이상 무언가를 먼저 만들면 필연적으로 나머지는 후순위가 될 수 밖에 없었기에 진행 순서에 대해 고민은 깊어져 갔다.

​

결과적으로 메인 피처에 대한 구현을 우선하여 진행하기로 결정했는데, 그 이유는 다음과 같다.

​

​

1. 그래픽(리소스 & UI 등)은 경험이 있기에 작업 추정이 수월하고 시행착오의 확률이 낮다.

​

2. 반면에 프로그래밍은 대략적인 작업 추정조차 어려울 정도의 생초짜다.

​

3. 프로토타입 때처럼 다 만들더라도 플레이를 해 봤을 때 재미가 없다면 도중에 엎을 가능성이 높다.

​

​

정리하면 프로그래밍 쪽이 불확실성이 높고, 갈아엎을 일이 생겼을 때 그래픽이 진행되지 않은 편이 마음 편하게(?) 갈아 엎을 수 있을 것 같았기 때문이다.

​

이렇게 대략적인 작업 방향까지 정리가 마무리 되자, 그 때부턴 본격적인 구현 작업에 들어가기로 했다.

​

​

​

​

​

프로토타입 피드백 반영 & 기본 피처 개발 1

​

가장 먼저 진행했던 것은 프로토타입 때 받았던 유저 피드백을 반영하는 작업이었다.

​

정말 돌아가기만 하는 미흡한 상태의 빌드였지만, 그럼에도 불구하고 다른 사람의 눈으로 본 시선은 개발 진행에 크게 도움이 되었다. 피드백들 적용 여부를 하나하나 고민해서 결정했고, 다른 메인 피처들도 조금씩 개발을 진행해 나가기 시작했다.

​

마침 당시 커뮤니티에 올렸던 글에 그 때의 진행 상황이 잘 정리되어 있어 해당 글을 옮겨 놓기로 한다.

​​

 


 

 

얘들아 간만임. 다들 개발 잘하고 있어?

​

9월 말 - 10월 초쯤에 프로토타입 피드백 받고 대충 한달쯤 지났네.

처음 시작할 땐 올해 안에 출시를 목표로 잡았는데 진도가 안빠져서 고민이 많다야.

​

지난 한달을 되돌아보는 차원에서 그간 진행했던 작업들을 간단히 정리해봤어.

​

작업 순서상 그래픽을 가장 마지막으로 빼두는 바람에 아직 볼만한건 없지만 그래도 누군가에게 참고가 되었으면 하는 마음에 올려봐.

​

​

​

​

​

프로토타입 피드백 대응

 

먼저 지난 프로토타입때 받은 의견들을 취합해서 반영했어.

​

사소한 버그들은 바로바로 수정했고, 시스템에 관련된 의견들도 고민해봤지.

​

​

​

​

그 결과로

 

이제 호떡만드는 것도 강화가 가능해지고,

​

 

수비대는 개별적으로 커스텀을 지원할 예정이야.

​

어... 사실 커스텀이라고 하면 좀 거창하고, '직접 강화 방향을 선택'한다는 느낌만 주는 것에 가까워. 마음 같아선 캐릭터들마다 특색있는 스킬을 하나씩 추가해주고 싶은데, 내 실력에 개발기간이 너무 길어질 것 같아 당장은 킵해뒀어.

​

출시해보고 반응이 좀 있다 싶으면 그 때 추가하려고.

​

암튼 플레이 해 본 친구들의 피드백이 무척 도움되더라.

​

​

​

예전에 따로 감사글도 작성했지만, 이 글을 빌어서 다시 한번 땡큐함. ㅇㅇ.

​

​

​

​

​

​

신규 시스템 추가 - 탐색

​

나왔다 작업 시간이 길어지게 된 제 1원인.

​

생산 건물이나 수비대가 특정 레벨에 도달했을 때 능력치를 배수(2배 3배 7배...)로 키워주는 시스템이야.

​

기존 성장 그래프가 둔화될 쯤에 등장해서 성장 속도를 빠르게 해주는 역할을 해. 플레이의 목표가 되기도 하고.

​

 

원래는 위의 이미지처럼 간단하게 리스트로 만들어 일정 레벨 도달시마다 그냥 '등장, 구매, 땡' 할 예정이었는데...

​

프로토타입 피드백을 정리해보니 이런 니즈가 있었어.

​

여기서 원래 생각했던 시스템을 그대로 가져가면 기존 건물/ 수비대 업그레이드랑 경험적으로 차이가 없겠다 싶더라구.

​

그러다 예전에 잠깐 고민하다가 내 귀여운 실력으론 안될 거 같아서 폐기했던 탐색 시스템을 떠올렸지.

​

​

그게 뭐냐면...

탐색꾼을 고용해서

 

특정 지역으로 탐색을 보내면

 

 

일정 시간 대기 후 보상과 함께 랜덤으로 능력치를 올려주는 보물을 가져오는 시스템이야. 대기시간이 있다는 점에서 기존 강화들과 경험상의 차이를 줄 수 있을 것 같더라구.

​

작업 사이즈때매 좀 고민하긴 했지만, 어차피 여기까지 온거 한번 벌려보기로 했지.

​

그래서 결국 만듬 ㅇㅇ.

​

​

 

탐색꾼을 고용해서 특정 지역으로 보낸 뒤, 시간이 지나거나 캐시를 사용하면 보상을 획득.

​

​

 

거기에 더해 보물 도감을 추가해서 수집 퍼센트를 확인할 수 있게 만들고

​

​

 

탐색꾼의 효율을 강화시키는 별도 메뉴도 제작했음. ㅇㅇ

​

​

막막하다 싶어도 어떻게 비비다보면 되긴 되더라.

​

​

​

​

​

​

​

재화 단위수 처리

​

재화 단위수 처리는 무작정 성장만 해제끼는 방치형 게임의 기본이지?

​

해야지 해야지 생각만 하다가 겁이 나서 손을 못대고 있었는데 이 참에 처리해버림.

구글은 위대해. 검색하면 다 나오니까.

​

뭐 'a/b/c...'나 'k/m/b...'나 '천/만/억...'이나 여러 타입들이 있을텐데, 주제에 언어별 대응은 어려울 것 같아 공통으로 적용하기 편한 abc로 적용함.

​

자리수는 6자리로 출력되게 했는데(like CookieClicker), 이유는 자리수가 많은 편이 보는 맛이 있으니까. ㅇㅇ 처음엔 멋모르고 float 자료형 썼다가 Infinity의 따끔한 맛을 보고 double로 변경함.

​

혹시 클리커나 방치형 만드는 친구들은 미리미리 재화를 double로 선언해서 나처럼 같은거 두 번 만드는 븅신짓은 하지 말길 바래.

​

잘 되는거 같아서 만족중임 ㅇㅇ.

​

​

​

​

​

​

​

세이브 시스템 추가

​

이지세이브 할인하기만을 기다렸는데 더 못참고 질러버림. 덕분에 구현은 매우 간단했지. 일단은 게임 켤 때 로딩/ 앱을 내리거나 끌 때 저장 정도만 구현해놨어.

​

좀 더 안전하게 일정 텀마다 자동으로 저장을 지원해볼까... 했는데

​

세이브 시간이 꽤 걸리길래(갤럭시 S8 기준 600ms, 갤6은 200ms... 왜 꾸진 폰이 더 빠름?;) 일단은 보류.

​

보통 세이브는 이렇게 하더라- 라는 걸 알고 있는 친구 있음 살짝 힌트 좀 주라야 ㅎ

​

​

​

​

​

​

최적화

​

맞아. 나도 게시판에서 봤어. 느려지는게 확인되기 전까지 최적화는 하는게 아니라는 걸.

​

근데 프로토타입 때 이런 피드백을 봐 버린걸 어떡하겠어.

​

​

갤6가 오래된 폰이긴 한지만 갤럭시 S시리즈 자체가 고급형 라인이잖아? 충분히 현역이지. 거기다 아직 그래픽도 적용안한 이런 개단순한 게임에서 렉이 생긴다? 이건 100% 내가 븅신짓 한거지.

​

다행히 예전에 쓰던 폰이 S6라서 거기다 넣고 한번 돌려봤는데...

​

...12프레임 나오더라. ㅋ?;

​

물론 시스템 다 만들고 최적화를 봐야겠지만, 내면의 찝찝함을 무시하지 못하고 결국 들고 파기 시작함

​

​

​

1. 오브젝트 풀링 적용

​

예전에 여기 갤에서 오브젝트 풀링이 최적화에 좋다는 글을 본 기억이 있어서 적용해보기로 함.

​

새로 만들 자신은 없어서 구글이랑 에셋스토어를 이리저리 뒤져봤는데, 내가 찾아본 무료 에셋들 중에선 AutoPool이 그나마 딱 필요한 기능만 있고 깔끔한거 같더라구.

​

Spawn시 부모 설정을 지원하지 않고 UI 오브젝트 대상으로 생성시 에러가 뜨긴 하던데, 둘 다 어찌저찌 코드 수정해서 해결함.

​

오브젝트 풀을 적용하니 느려졌다 빨라졌다 하는 이슈는 조금 해결된거 같았음.

근데도 프레임은 30을 못넘더라구?

​

​

2. Batches 다이어트

​

그래서 이래저래 찾아보다가 드로우콜과 Batches의 존재를 알게됐어.

​

정확히 이해한 건 아니고, 그냥 이미지를 그릴 때 그런 플로우가 존재하고, 이게 많으면 안좋다는 정도만 알게됨.

​

이후 유니티에서 Stats를 켜놓고 게임을 돌려봤더니 Batches가 120이 나오더라.

​

그때부터 안쓰는 오브젝트 지우고, 스프라이트들 페이지에 맞춰 다 아틀라스로 변환하고, 오브젝트 하나씩 껐다 켜면서 확인하고 등등 개난리를 침.

​

결국 120에 육박하던 Batches는 40대로 줄었고, 그 결과 갤6에서 풀프레임(60fps)을 찍는 걸 확인했다. 허헣.

​

이 쯤에서 마무리하고 더 디테일한건 출시 전에 다시 한번 봐야지.

​

여기서 내가 느낀 교훈 하나.

​

"코드에서 어지간히 뻘짓한게 아니라면 최적화는 그래픽에서 하는거구나!"

​

뭐 이거 외에도 foreach -> for 변환이나 string format 테스트, 유니티 설정 조정 등 뻘짓한 건 많은데, 다 별 차이없고 나한테 제일 효과 좋았던건 위의 2개였음.

​

​

​

​

대충 이 정도네.

​

아무래도 개발일지도 사람이 보는거니 눈에 보이는 캐릭터나 UI에 대한 이야기가 좋다고 생각은 하는데 아쉽게도 아직 그럴 단계가 아니라서...

​

아마 담달인 12월 쯤 되면 대략적인 구현 마무리짓고 그래픽 올리는 걸 보여줄 수 있을거 같아.

​

다음에 진도 좀 빠지면 그 때 다시 공유하러 올게.

​

 


 

이 때가 프로토타입 이후 1-2개월이 지난 시점으로, 글에서 볼 수 있듯 본격적인 구현을 들어가고 있던 단계였다. 다 처음 해보는 것들 투성이라 어려운 것들 투성이었지만, 그래도 조금씩 진도가 나가고 있는 것을 확인할 수 있다.

​

참고로 저 당시 구현에 가장 시간을 많이 썼던 것이 탐색 시스템이었는데, 결과적으로 저 시스템은 몇 달 뒤 갈아엎히게 된다. ㅠ

​

피처가 하나 둘 씩 나오고 있긴 하지만 아직은 갈 길이 먼 상태로, 한동안은 꾸준히 구현에 집중하기로 했다.

​

​