블로그 이미지
박황기
최근에 스마트폰에 관심이 많습니다. 예전에 상상하던 모습들이 점차 이루어지고 있는게 신기하네요.

calendar

1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

Notice

'Cloud Save in Android'에 해당되는 글 1

  1. 2013.09.07 Cloud Save in Android
2013. 9. 7. 05:57 모바일/안드로이드

https://developers.google.com/games/services/android/cloudsave


구글 플레이 게임서비스 APP ID를 생성해서 사용하면 

사용자별로 게임 데이터를 저장 할 수 있다.

최근에 휴대폰 테블릿등 다양한 기기에서 하는 게임을 연속성 있게

플레이 할 수 있게 해준다. 만약 게임을 삭제하고 다시 설치 한다든지

다양한 기기에서 데이터를 동기화 시켜서 사용 가능하다.


단 구글+에 로그인된 상태에서 동기화가 가능하므로 로그인후에 데이터를 처리한다.

저장하는 데이터 형태는 4개 슬롯을 제공하며  슬롯은 128KB를 제공한다. 4 x 128KB

공식 샘플에서 제공하는 샘플에는 CollectAlltheStar에는 Json형태로 데이터를 만들어서

byte배열로 변환해서 서버에 전송한다.

한개의 슬롯에 저장하고 로딩하는 샘플이 제공되며 수치화된 데이터를 저장하는데 충분한 용량이다.


updateState는 데이터를 구글클라우드에 저장 한다.

loadState는 데이터를 구글클라우드에서 로드 한다.


한가지 특이한점은 로컬의 데이터를 서버에 저장할때 데이터 충돌이 발생하면 

업데이트 시점이 아니라 다음에 데이터를 로드하려고 시도할때 

콜백 메서드로 알려준다는 점이다. 정상적으로 데이터가 저장되고 로딩되면 

콜백메서드인 onStateLoaded가 호출되며 충돌이 발생하면 onStateConflict가 호출된다.


데이터 동기화가 인터넷이 연결되어 있는 상태에서만 가능하기 때문에 인터넷이 없는곳에서

사용할경우 충돌이 일어날 경우가 생기게 되는데 onStateConflict메서드가 호출되면

스테이지 레벨의 경우에는 더 큰 스테이지, 아이템과 같은 데이터는 병합해서 

resolveConflict를 호출에서 클라우드의 데이터를 저장해서 충돌을 해결해준다.


만약 클라우드에 데이터를 저장시점에 인터넷이 연결이 안되거나 해도 내부적으로 

백그라운드에 돌고 있다가 인터넷이 연결이되면 서버에 업데이트가 되도록 되어 있다.




posted by 박황기
prev 1 next