해수면 상승 위기 속 짜릿한 점프, <애니멀 점핑!> 을 개발하고 있는 바다랑이야요


a15714ab041eb360be3335625683746f00534520d6a6e2890b9df62c37a1c32ff741fb197d67dbf29d2a29190954f93d1472dc6b07


이번에는 최적화를 많이 신경쓴 것 같음


1. 최적화(GC.Alloc)

현재, 내 게임에서 Block들은 Pooling되어 사용되고 있는데, 구조는 다음과 같음


06bcdb27eae639aa6580e6bd19c52b026773e5fd02ff3999075c478c8f24009ee989353976a541461ec3dd6976c03b1042766e09b53658


Block -> 블록 1개

BlockGroup -> 블록 8개가 일렬로 나열된 집합. 이 그룹들이 풀링되고 있음

BlockGroupPrefab -> BlockGroup 3~5개와 로켓과 같은 아이템이 결합된 가장 큰 집합. 풀링하지 않음


평소에는 BlockGroup 들이 계속 나오다가, 일정한 텀을 두고 Prefab이 나오게 해서 게임을 좀 더 재미있게 만들고 싶었음

그런데 Prefab을 Instantiate할 때마다 200KB의 Spike가 생기는 거임..

릴리즈 빌드에서는 2021년부터인가 Incrementally Garbage Collecting을 지원하고 있어서 크리티컬하지는 않지만

내 기준 최신 폰인 아이폰 11에서도 발열과 렉이 발생하는 것을 보고 최적화를 하기로 결심함


우선 어떤 스크립트 때문에 Instantiate할 때 오류가 나는지 찾아봤는데 쉽지 않았음

그래서 로직 자체를 뜯어고침


a15714ab041eb360be3335625683746f00534520d6a6e2890b9df62c37a1c32ff747fa197962dbf29d2a29190954f93d44ca1f5e3c54

BlockGroupInfo, OtherObject 클래스를 만들어서 이 2개를 담는 BlockGroupPrefabInfo를 만듬.

게임을 시작하자마자 이걸 불러와서 저장함

BlockGroupInfo에는 블록들의 구성이 어떻게 되어있는지에 대한 정보가 있고, 

OtherObject는 프리팹 Enum 정보와 Position정보가 있음


이렇게 하면 기존에 BlockGroup을 Get해서 가져다 쓰는 방법을 유지하면서 프리팹도 만들수가 있게 된다

코딩을 워낙 개판으로 해서 이게 맞는 방법인지는 모르겠는데 확실히 스파이크가 줄어들었음

근데 아직도 아이폰 11으로 하면 가~~끔 렉이 걸림 ㅠ





1. 프리팹 기능 추가


https://youtube.com/shorts/HEng9UIQQyU?feature=shared

해수면 상승 속 짜릿한 점프액션, 애니멀 점핑! 티저 영상

Animal Jumping! Game Teaser Video

youtube.com


게임이 훨씬 재미있어짐

'장애물이 다양해졌으면 좋겠다' 라는 피드백을 많이 받았어서

이와 같은 변경은 필수적이었다고 생각함



3. 유저 편의 개선


a67718ad1422b37695350e6558d62d3b10f918aa6bb41c4ff422f956d7

모두 받기 기능을 구현함.

또, 쓸데없이 버튼을 눌러야 하는 것들을 모두 일반 알림으로 바꿈



그리고, 텀블벅을 준비했음!!


a14810ad0e3ab36f8e3316459b24d57d6d6b8c6d11dd130ddf1489b218102e5ed1592d021f1b82060863c2492e0e

굿즈 한번씩 구경해 주라.. 개별제작 단가가 비싸서 많이는 못만들었음 ㅠ

https://tumblbug.com/animaljumping

텀블벅 - 크리에이터를 위한 크라우드펀딩

텀블벅 - 크리에이터를 위한 크라우드펀딩

tumblbug.com



있는 돈 몇백만원 정도로는 큰 효과를 기대하기 어려워서

자꾸 안 좋은 생각만 하게 되는 것 같아

쉬는 시간과 일하는 시간을 구별하지 않는 것이 굉장히 위험한 방법인듯

그럼 다들 파이팅!! 다 잘됐으면 좋겠다.