몬스터 워크에서 배터리 수명 최적화하기

UNITY TEAM /
Jun 2, 2026|3:59 분
몬스터 워크 | 탈로파 게임즈
이 웹페이지는 이해를 돕기 위해 기계 번역으로 제공됩니다. 기계 번역으로 제공되는 콘텐츠에 대한 정확도나 신뢰도는 보장되지 않습니다. 번역된 콘텐츠의 정확도에 관해 의문이 있는 경우 웹페이지의 공식 영어 원문을 참고해 주시기 바랍니다.

Talofa Games의 CEO 제니 쉬(Jenny Xu)와의 인터뷰를 확인해 보세요. 그녀는 매끄러운 백그라운드 경험을 구현하는 데 따르는 기술적 과제와 개발상의 결정 사항을 설명하며, 특히 팀이 게임 상태를 저장하기 위해 Unity의 OnApplicationFocus 및 OnApplicationPause 훅을 어떻게 활용하는지 소개합니다.

제니 쉬:우리가 처음 ‘몬스터 워크’를 구상했을 때, 해결하고자 했던 핵심 디자인 과제는 바로 ‘실생활에서 걷는 것과 같은 발걸음을 어떻게 하면 게임처럼 느껴지게 할 수 있을까?’라는 점이었습니다. 마치 귀찮은 일처럼 느껴지지 않고, 억지로 덧붙인 듯한 느낌도 없으며, 피트니스 앱과 게임이라는 두 가지가 따로 존재하는 것처럼 느껴지지도 않습니다. 오히려 현실에서 더 건강해지면서 즐기는 진정한 게임처럼 느껴집니다.

가장 큰 기술적 과제는 실시간 데이터 전송이나 배터리 수명 등 다양한 플랫폼적 제약 조건 속에서도, 이러한 실시간 요소들이 마치 라이브 데이터처럼 게임 경험에 정말 매끄럽고 자연스럽게 녹아들게 만드는 것이었습니다. 저희에게는 실시간 걸음 수 추적 기능이 핵심이었고, 플레이어들이 건강 관리에 꾸준히 임할 수 있도록 하면서도 이 기능이 지나치게 부담스럽거나 지나치게 보람차게 느껴지지 않도록 하는 방법을 모색해야 했습니다.

단계 데이터 스트림 통합

유니티를 사용했기 때문에, Android와 iOS 네이티브 플러그인 모두에 쉽게 연결할 수 있어 정말 큰 도움이 되었습니다. 그리고 저희는 Android Health Connect, Google Fit, Garmin 등 게임으로 유입되는 모든 데이터 원본을 다루고 있습니다. 그리고 우리는 이 모든 정보를 종합하여, 플레이어가 마지막으로 게임을 종료한 시점부터 다음에 게임을 실행할 때까지 얼마나 많은 단계를 거쳤는지 알려줘야 합니다.

다행히도 Unity는 네이티브 API를 활용할 수 있는 기능을 제공합니다. 그러다 보니, 상대방이 Health Connect를 사용할 거라고 단정할 수 없어서, 어느 순간에는 우리만의 걸음 수 측정기를 직접 만들기도 했어요. 그들이 구글 핏을 사용하고 있다고 가정할 수는 없었다. 아마도 그들에게는 아무것도 없었을지도 모른다. 그리고 우리는 Unity에 연동되는 이 네이티브 플러그인을 개발했는데, 모든 기능이 완벽하게 통합되어 앱이 종료된 상태에서도 백그라운드에서 걸음 수를 측정할 수 있습니다.

그래서 이를 지원하기 위해 Unity 프로젝트 내에서 거의 3단계로 구성된 솔루션을 구축해야 했습니다. 그리고 동시에, 배터리 소모가 너무 심하거나 계속해서 백그라운드에서 실행되어 플레이어들이 그냥 삭제하고 싶어 하지 않도록 해야 합니다.

우리가 수집한 모든 데이터의 균형을 맞추는 데 있어서도 마찬가지였습니다. 애플의 경우, ‘Apple Health’가 있고, 앱이 실행 중일 때 휴대폰이 흔들리면 플레이어가 한 걸음을 내디딘 것으로 인식하는 등 기본 제공되는 전경 활동 추적 기능이 있습니다. 또한 Apple Health도 동시에 걸음 수를 추적하고 있습니다.

그렇다면 중복된 데이터는 어떻게 통합하나요? 어떻게 하면 너무 보람차지도 않고, 너무 가혹하지도 않게 만들 수 있을까요? 플레이어가 사용하는 기기 모델에 맞춰 최적의 경험을 제공하고, 그 과정에서 마법 같은 느낌을 선사하는 것, 바로 그것이 가장 어려운 기술적 과제였습니다.

배터리 수명 최적화

‘몬스터 워크’는 하루 종일 백그라운드에서 계속 실행되는 게임이기 때문에, 휴대폰이 과열되지 않으면서도 게임 진행이 가능하도록 시스템을 설계해야 했습니다. iOS와 Android 사이에서도 백그라운드 동작 방식은 완전히 다릅니다.

그래서 플레이어 상태를 저장할 때는 각별히 주의를 기울여야 했습니다. 또한, 이동 경로나 체력 데이터와 같은 정보를 백그라운드에서 처리하는 작업이 매우 많기 때문에, 앱이 종료된 상태에서도 플레이어가 자리를 비운 동안 자신의 몬스터들이 여전히 함께 걷고 있는 듯한 느낌을 주어야 했습니다.

그러니까, 대부분은 설계상의 문제라고 볼 수 있겠지만, 그 외에도 프로세스를 종료하는 데 꽤 신경을 쓰고 있습니다. 백그라운드 스레드가 실행되지 않도록 하여, 사용자가 앱이 실행 중인 줄도 모른 채 배터리가 소모되는 일이 없도록 하고 있죠.

그래서 우리는 Unity의 OnApplicationFocus, OnApplicationPause와 같은 다양한 훅을 활용하여, 그 순간들을 이용해 상태를 신속하게 저장합니다. 그리고 아이들이 돌아올 때마다 우리는 마지막으로 저장한 내용을 확인하고 게임을 이어가면서 걸음 수를 확인한 뒤, “자, 너희는 방금 이 작은 몬스터 친구와 함께 이만큼이나 걸은 셈이야”라고 말하곤 해요. 다시 오신 걸 환영해요.

유니티 블로그와 리소스 허브에서 유니티 개발자들의 더 많은 이야기를 확인해 보세요.