如何使 CommitBlocking 提交? -- Google 玩游戏服务
How to make CommitBlocking commit ? -- Google Play Game Services
我正在用 cocos2d-x 玩 android 的小游戏。我目前正在努力为我的游戏实施云保存。剩下的唯一问题是它没有提交。
我用的GPGS API是C++。只需向下滚动到那里的 commitblocking。
//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);
}
);
编译时 运行 在 phone 上:
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.
我曾尝试使用 Commit(),这会使游戏崩溃,而 CommitBlocking() 没有超时,它也不会提交。
我花了将近一周的时间查看文档和示例来解决这个问题。那么,以前有人遇到过这个问题吗?如果是,请与我分享解决方法。
谢谢。
好的,有一些奇怪的错误。
1)一种方法 return 另存为 std::vector 仅在 CommitBlocking 中使用 return 一个大小为零的向量。
2)PNG数据太大,无法被Google云存档接受。
按照1)中所述的方法return修正数据并最小化和松散压缩2)中使用的Png确实解决了问题。
我正在用 cocos2d-x 玩 android 的小游戏。我目前正在努力为我的游戏实施云保存。剩下的唯一问题是它没有提交。
我用的GPGS API是C++。只需向下滚动到那里的 commitblocking。
//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);
}
);
编译时 运行 在 phone 上:
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.
我曾尝试使用 Commit(),这会使游戏崩溃,而 CommitBlocking() 没有超时,它也不会提交。
我花了将近一周的时间查看文档和示例来解决这个问题。那么,以前有人遇到过这个问题吗?如果是,请与我分享解决方法。
谢谢。
好的,有一些奇怪的错误。
1)一种方法 return 另存为 std::vector 仅在 CommitBlocking 中使用 return 一个大小为零的向量。
2)PNG数据太大,无法被Google云存档接受。
按照1)中所述的方法return修正数据并最小化和松散压缩2)中使用的Png确实解决了问题。