2016-06-25 5 views
0

Android用にcocos2d-xを使用して少しゲームをしていました。私は現在、私のゲームでクラウドセーブを実装しようとしています。残っている唯一の問題はコミットしないことです。CommitBlockingをコミットするには? - Google Playゲームサービス

私が使用しているGPGS APIはC++です。そこにあるコミットブロックまでスクロールしてください。

//using sample codes from Google. 
game_services->Snapshots().Open 
(
    "some_save_file", 
    gpg::SnapshotConflictPolicy::MANUAL, 
    [this, &save](gpg::SnapshotManager::OpenResponse const& response) 
    { 
     LOGI("Saving snapshot"); 
     if(gpg::IsSuccess(response.status)) 
     { 
      LOGI("Open success"); 
      gpg::SnapshotMetadata metadata = response.data; 
      if (response.conflict_id != "") 
      { 
       //Conflict detected 
       //Settle conflict 
      } 

      LOGI("Getting PNG data"); 
      //get cover image data 
      //some code to get png data in to png_vector 

      LOGI("Building snapshot builder"); 
      //setting up the builder 
      gpg::SnapshotMetadataChange::Builder builder; 
      gpg::SnapshotMetadataChange metadata_change = 
        builder 
        .SetDescription("Recall Save File") 
        .SetCoverImageFromPngData(png_vector) 
        .Create(); 

      LOGI("Commiting"); 
      // Save the snapshot. 
      // This is the part that does not work !!!!! 
      gpg::SnapshotManager::CommitResponse commitResponse = 
       game_services->Snapshots().CommitBlocking(gpg::Timeout(3000), response.data, metadata_change, save); 

      if (IsSuccess(commitResponse.status)) 
      CSH_LOGI("Saved game"); 
      else 
      CSH_LOGI("Saved game failed error: %d", commitResponse.status); 
    } 
); 

コンパイルおよび携帯電話上で動作しているとき:

06-25 16:51:47.405: V/GamesNativeSDK(10717): Snapshot was not committed, discarding. 
    06-25 16:51:47.410: V/GamesNativeSDK(10717): Snapshot discard complete. 

私はタイムアウトなしで、それはあまりにもコミットしないクラッシュゲーム、およびCommitBlocking()、()コミットしてみました。

この問題については、ドキュメンテーションとサンプルを見てほぼ一週間過ごしました。誰もがこの問題に直面したのですか?もしそうなら、それを解決する方法を私に教えてください。

ありがとうございました。

+0

[EnableSnapshots()](https://developers.google.com/games/services/cpp/savedgames#enabling_the_savedgames_service)を使用してスナップショットを最初に有効にしましたか? [C++の保存実装](https://github.com/playgameservices/cpp-android-basic-samples/blob/master/samples-android/CollectAllTheStarsNative/src/main/jni/CollectAllTheStarsNativeActivity.cpp)サンプルを確認してくださいGithubでそれはあなたをたくさん助けます。 – noogui

+0

そうですね。いくつかのバグを見つけて解決しました。ありがとう –

答えて

0

奇妙なバグがありました。

1)CommitBlockingで使用されるstd :: vector saveとしてsaveを返すメソッドは、サイズがゼロのベクトルのみを返します。

2)Pngデータが大きすぎてGoogle Cloud Saveで受け入れられませんでした。

1)で述べた方法を得て、2)で使用したPngを圧縮して最小限に抑え、正しいデータを返すようにしてから、問題を解決してください。

関連する問題