인프런 커뮤니티 질문&답변

raytrace11님의 프로필 이미지
raytrace11

작성한 질문수

[Unity] 함께 만들어가는 방치형 게임 개발

파이어베이스 유저 저장 주기가 고민되요.

해결된 질문

작성

·

43

0

첫번째 질문..

유저데이터 저장을 위해서 주기적으로 파이어베이스 리얼타임 데이터베이스에

쓰기로 저장을 해주고 싶은데요..

요즘 파이어 베이스에 관심을 가지고 이래저래 알아보고있는데

1분주기로 데이터를 리얼타임데이터에 쓰기(저장)을 하게되면

유저가 적을경우는 괜찮을수있겠지만, 왠지.... 많은 유저가 접속을 한 상황에서

그 유저들의 데이터가 1분마다 저장이 계속 된다면 파이어베이스 서버이용요금?? 도 엄청날것같은데

일정시간마다 주기적으로 파베에 저장되게 해도 괜찮을까요?

한명 유저당 파베에 아무리 자주 저장하더라도 파베 사용량 데이터량 변화는 크게 없는것인지...

아직 파베에 대한 지식과 파베 요금 관련해서 아무런 개념이 없어서인지 잘 모르겠네요 ㅜㅜ

----------------------------------------------------------------------------------------

두번째 질문..

게임을 빌드 한 후 APK 파일을 앱플레이어(녹스, LD플레이어)에 설치후 플레이 하다가

(정상적인 게임종료를 누르는게 아닌, 상단탭의 x버튼을 눌러서) 강제로 게임을 꺼버리는경우

OnDestroy 함수가 제대로 호출이 안되는건지.. 게임 데이터를 저장하지않은채로

게임이 꺼지더라구요.

(혹시나해서, OnApplicationQuit() 함수와 OnDestroy() 함수 내용에도 게임이 꺼지거나

파괴될때 '파베에 쓰기'가 되게 코드를 짰을때, 정상적으로 백버튼을 눌러서 게임종료하겠다는

버튼을 누르면 저장이 잘됬는데, 갑자기 또는 강제로 게임이 의도치 않게 게임이 꺼지게되면 데이터가

저장이 안되던데... 혹시 좋은 방법이 있을까요?? )

답변 1

0

Pinous님의 프로필 이미지
Pinous
지식공유자

안녕하세요 🙂

  1. 일단 파이어베이스는 각 유저의 요청 단위로 처리가 진행됩니다. 또한 요청이 이루어 졌을 때 자동적으로 변화된 부분을 처리 후 다른 데이터는 확인 작업만 거치게 됩니다. 데이터 사용량은 현재로써는 크게 걱정하지 않으셔도 될 것 같습니다 🙂

물론 유저가 많아질수록 파베 비용이 높아지기는합니다. 이 부분이 걱정되신다면 자동 저장 주기를 조금 느리게 처리하시는걸 권장 드리겠습니다. 자동 저장이 없게끔 처리하시면 생각하지 못했던 오류 혹은 버그들이 발생 할 수 있으니 저는 저장 주기를 늦추는걸 추천드리겠습니다!

 

  1. OnApplicationPause() 기능을 활용하시는걸 추천드리겠습니다! OnDestroy를 제가 사용한 이유는 라이프사이클을 설명하는 과정에서 손쉽게 설명드릴 수 있을거라 판단하여서 사용을 진행한 것이고, 추후 빌드 진행 전에는 앱이 일시정지 되었을때인 OnApplicationPause() 기능을 활용할 예정입니다.

    (OnApplicationPause는 안드로이드 홈버튼을 눌렀을때에도 동작하니 이 점 참고부탁드립니다 😃 )

또한 또 다른 방법으로는 로컬 저장을 추천드립니다.

강제 종료 시 데이터를 잃지 않으려면, 데이터베이스 저장을 수행하기 전에 우선 로컬에 데이터를 저장한 후, 앱이 다시 시작할 때 파이어베이스와 동기화하도록 설정할 수 있습니다. 이 방식은 데이터 손실을 방지하면서 강제 종료에도 대비할 수 있는 좋은 방법입니다. 다만 해당 방식에 대한 구현 예제는 따로 만들지 않을 예정이며, 로컬에 저장하는 PlayerPrefs와, json기능을 활용하신다면 충분히 가능 하실 것 같습니다 🙂

 

 

 

raytrace11님의 프로필 이미지
raytrace11
질문자

아! 그런 방법이 있었군요. 섬세한 답변 감사드립니다. ^^

raytrace11님의 프로필 이미지
raytrace11

작성한 질문수

질문하기