CloudOnce 에 대한 감상

요즘 모바일 게임에서 PlayGameService 연동하는 강좌 같은걸 유튜브에서 검색하면 몇 몇 강좌가 CloudOnce를 사용하라고 나온다. 내 경우는 아기용사 키우기 프로젝트를 할 때 최초에 CloudOnce에 혹해서 한번 썼다가.. 다시 싹 지워버리고 순수 PlayGameService를 사용했었다. 아기용사 키우기는 1분에 한번 씩 클라우드에 백업을 하는 로직을 사용했고, 무조건적으로 Cloud로그인을 했어야 했는데, CloudOnce의 Sync 시스템이 완벽하지 않아서, 자꾸 데이터가 몇 분 전으로 돌아간다거나, 데이터가 삭제되는 일이 발생했다. 특히나 내 경우처럼 1분에 한번씩 게임을 저장하는 경우에 자주 발생하는 것 같았다. 문제는 CloudOnce가 Cloud상태와 별도로 PlayerPrefs를 Cloud Data의 Mirror처럼 사용하는데에 있다.

예를 들면 상식적으로 Cloud.Stroage.Load 를 실행했으면, 돌아오는 데이터는 현재 클라우드에 있는 데이터여야 하는데, CloudOnce는 PlayerPrefs에 저장되어 있는 백업 데이터를 넘겨주는 경우가 많다는 것이다. 자체적으로 Conflict와 Sync처리를 하기 때문인데, 일단 이 로직 자체가 완벽하지 않아서 사용하기에 불안불안 했다. 순수 PlayGameService로 바꾸고 나서는 데이터 동기화 문제는 전혀 발생하지 않았다.

그런데 이번에 강제 로그인 기능을 제거하면서. "저장과 로드가 빈번하지 않으니 다시 한 번 CloudOnce를 써볼까?" 라고 생각하고 한번 더 써봤는데, 이놈의 Sync는 정말 문제가 많다. 그냥 사용하면 별 문제 없지만,

앱 삭제 후 재설치나, 앱 설정에서 캐시 비우기, 데이터 비우기 등의 동작에 대해서 전혀 대비가 되어 있지 않은 느낌이고, 그럴 때마다 데이터가 사라지기 때문에 너무 불안하다.

어쩔 수 없이 순수 PlayGameService를 사용하는 쪽으로 다시 선회 했다. 추후에 비슷하게 직접 만드는 방법을 써봐야겠다.