我正在使用cocos2d-x为Android做一个小游戏。我目前正努力为我的游戏实施Cloud Save。剩下的唯一问题是它没有提交。
我使用的GPGS API是C ++。只需向下滚动到那里的commitblock。
//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.
我曾尝试过使用游戏崩溃的Commit()和没有超时的CommitBlocking(),它也没有提交。
我花了将近一周的时间来查看文档和示例。那么,以前有人遇到过这个问题吗?如果愿意,请与我分享如何解决它。
感谢。
答案 0 :(得分:0)
好的,有一些奇怪的错误。
1)将save保存为在CommitBlocking中使用的std :: vector save的方法只返回一个零大小的向量。
2)Png数据太大,无法被Google Cloud Save接受。
获得1)中所述的方法以返回正确的数据并最小化和松散压缩2)中使用的Png确实解决了问题。