gpg:: SnapshotManager
#include <snapshot_manager.h>
获取和设置各种与快照相关的数据。
摘要
如果应用未在身份验证时启用快照(请参阅 GameServices::Builder::EnableSnapshots),SnapshotManager
上的大多数方法都会失败。
公共类型 |
|
---|---|
CommitCallback
|
typedefstd::function< void(const CommitResponse &)>
定义用于接收 CommitResponse 的回调类型。 |
FetchAllCallback
|
typedefstd::function< void(const FetchAllResponse &)>
定义用于接收 FetchAllResponse 的回调类型。 |
MaxSizeCallback
|
typedefstd::function< void(const MaxSizeResponse &)>
定义用于接收 MaxSizeResponse 的回调类型。 |
OpenCallback
|
typedefstd::function< void(const OpenResponse &)>
定义用于接收 OpenResponse 的回调类型。 |
ReadCallback
|
typedefstd::function< void(const ReadResponse &)>
定义用于接收 ReadResponse 的回调类型。 |
SnapshotSelectUICallback
|
typedefstd::function< void(const SnapshotSelectUIResponse &)>
定义一个可从 ShowSelectUIOperation 接收 SnapshotSelectUIResponse 的回调。 |
公共函数 |
|
---|---|
Commit(const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > data, CommitCallback callback)
|
void
将提供的数据异步提交到快照,并使用提供的元数据对象更新快照的元数据。
|
CommitBlocking(const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents)
|
将提供的数据同步提交到快照,并使用提供的元数据对象更新快照的元数据。
|
CommitBlocking(Timeout timeout, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents)
|
将提供的数据同步提交到快照,并使用提供的元数据对象更新快照的元数据。
|
Delete(const SnapshotMetadata & snapshot_metadata)
|
void
删除指定的快照。
|
FetchAll(FetchAllCallback callback)
|
void
异步加载当前已登录玩家的所有快照数据。
|
FetchAll(DataSource data_source, FetchAllCallback callback)
|
void
异步加载当前已登录玩家的所有快照数据。
|
FetchAllBlocking()
|
同步加载当前已登录玩家的所有快照数据,直接返回
FetchAllResponse 。 |
FetchAllBlocking(DataSource data_source)
|
同步加载当前已登录玩家的所有快照数据,直接返回
FetchAllResponse 。 |
FetchAllBlocking(Timeout timeout)
|
同步加载当前已登录玩家的所有快照数据,直接返回
FetchAllResponse 。 |
FetchAllBlocking(DataSource data_source, Timeout timeout)
|
同步加载当前已登录玩家的所有快照数据,直接返回
FetchAllResponse 。 |
GetMaxSize(MaxSizeCallback callback) const
|
void
以字节为单位,异步获取每个快照的最大数据大小和最大封面图片大小。
|
GetMaxSizeBlocking() const
|
以字节为单位同步获取每个快照的最大数据大小和最大封面图片大小,并直接返回
MaxSizeResponse 。 |
GetMaxSizeBlocking(Timeout timeout) const
|
以字节为单位同步获取每个快照的最大数据大小和最大封面图片大小,并直接返回
MaxSizeResponse 。 |
Open(const std::string & file_name, SnapshotConflictPolicy conflict_policy, OpenCallback callback)
|
void
异步打开具有给定名称的快照。
|
Open(DataSource data_source, const std::string & file_name, SnapshotConflictPolicy conflict_policy, OpenCallback callback)
|
void
data_source 。请改用 Open(file_name, conflict_policy, callback) 。异步打开具有给定名称的快照。 |
OpenBlocking(const std::string & file_name, SnapshotConflictPolicy conflict_policy)
|
同步打开具有给定名称的快照。
|
OpenBlocking(Timeout timeout, const std::string & file_name, SnapshotConflictPolicy conflict_policy)
|
同步打开具有给定名称的快照。
|
OpenBlocking(DataSource data_source, const std::string & file_name, SnapshotConflictPolicy conflict_policy)
|
已废弃。
系统会忽略 data_source 。请改用 OpenBlocking(file_name, conflict_policy) 。同步打开具有给定名称的快照。 |
OpenBlocking(DataSource data_source, Timeout timeout, const std::string & file_name, SnapshotConflictPolicy conflict_policy)
|
已废弃。
系统会忽略 data_source 。请改用 OpenBlocking(timeout, file_name, conflict_policy) 。同步打开具有给定名称的快照。 |
Read(const SnapshotMetadata & snapshot_metadata, ReadCallback callback)
|
void
异步从磁盘读取快照,并将其复制到内存中。
|
ReadBlocking(const SnapshotMetadata & snapshot_metadata)
|
同步从磁盘读取快照,并将其复制到内存中。
|
ReadBlocking(Timeout timeout, const SnapshotMetadata & snapshot_metadata)
|
同步从磁盘读取快照并将其复制到内存中。
|
ResolveConflict(const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, OpenCallback callback)
|
void
使用所提供快照中的数据异步解析冲突。
|
ResolveConflict(const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents, OpenCallback callback)
|
void
使用提供的数据异步解决冲突。
|
ResolveConflictBlocking(const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata)
|
使用所提供快照中的数据同步解决冲突。
|
ResolveConflictBlocking(const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents)
|
使用提供的数据同步解决冲突。
|
ResolveConflictBlocking(Timeout timeout, const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata)
|
使用所提供快照中的数据同步解决冲突。
|
ResolveConflictBlocking(Timeout timeout, const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents)
|
使用提供的数据同步解决冲突。
|
ShowSelectUIOperation(bool allow_create, bool allow_delete, uint32_t max_snapshots, const std::string & title, SnapshotSelectUICallback callback)
|
void
异步显示快照界面,以便玩家选择快照或请求新的快照。
|
ShowSelectUIOperationBlocking(Timeout timeout, bool allow_create, bool allow_delete, uint32_t max_snapshots, const std::string & title)
|
ShowSelectUIOperation 的阻塞版本。
|
ShowSelectUIOperationBlocking(bool allow_create, bool allow_delete, uint32_t max_snapshots, const std::string & title)
|
ShowSelectUIOperationBlocking 的过载,其默认超时时间为 10 年。
|
结构体 |
|
---|---|
gpg:: |
用于存储更新后的快照的数据以及响应状态。 |
gpg:: |
包含所有快照的所有数据以及响应状态。 |
gpg:: |
用于存储快照数据和快照封面图片的最大大小。 |
gpg:: |
用于存储请求的特定快照的数据以及响应状态。 |
gpg:: |
读取从快照读取操作返回的响应状态和快照数据。 |
gpg:: |
|
公共类型
CommitCallback
std::function< void(const CommitResponse &)> CommitCallback
定义用于接收 CommitResponse
的回调类型。
此回调类型会提供给下面的 Commit(*)
和 ResolveConflict(*)
函数。
FetchAllCallback
std::function< void(const FetchAllResponse &)> FetchAllCallback
定义用于接收 FetchAllResponse
的回调类型。
此回调类型会提供给以下 FetchAll(*)
函数。
MaxSizeCallback
std::function< void(const MaxSizeResponse &)> MaxSizeCallback
定义用于接收 MaxSizeResponse
的回调类型。
此回调类型会提供给 GetMaxSize。
OpenCallback
std::function< void(const OpenResponse &)> OpenCallback
定义用于接收 OpenResponse
的回调类型。
此回调类型会提供给以下 Open(*)
函数。
ReadCallback
std::function< void(const ReadResponse &)> ReadCallback
定义用于接收 ReadResponse
的回调类型。
此回调类型会提供给以下 Read(*)
函数。
SnapshotSelectUICallback
std::function< void(const SnapshotSelectUIResponse &)> SnapshotSelectUICallback
定义一个可从 ShowSelectUIOperation
接收 SnapshotSelectUIResponse
的回调。
公共函数
提交
void Commit( const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > data, CommitCallback callback )
将提供的数据异步提交到快照,并使用提供的元数据对象更新快照的元数据。
在操作完成后调用所提供的 CommitCallback
。
CommitBlocking
CommitResponse CommitBlocking( const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents )
将提供的数据同步提交到快照,并使用提供的元数据对象更新快照的元数据。
CommitBlocking
CommitResponse CommitBlocking( Timeout timeout, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents )
将提供的数据同步提交到快照,并使用提供的元数据对象更新快照的元数据。
以毫秒为单位指定 timeout
。
FetchAll
void FetchAll( FetchAllCallback callback )
异步加载当前已登录玩家的所有快照数据。
在操作完成后调用所提供的 FetchAllCallback
。如果不指定 data_source
,此函数调用等同于调用 FetchAll(DataSource data_source, FetchAllCallback callback)
,其中 data_source
指定为 CACHE_OR_NETWORK.
FetchAll
void FetchAll( DataSource data_source, FetchAllCallback callback )
异步加载当前已登录玩家的所有快照数据。
在操作完成后调用所提供的 FetchAllCallback
。将 data_source
指定为 CACHE_OR_NETWORK
或 NETWORK_ONLY
。
FetchAllBlocking
FetchAllResponse FetchAllBlocking()
同步加载当前已登录玩家的所有快照数据,直接返回 FetchAllResponse
。
如果不指定 data_source
和 timeout
,此函数调用等同于调用 FetchAllResponse FetchAllBlocking(DataSource data_source,
Timeout timeout)
,其中 data_source
指定为 CACHE_OR_NETWORK
,timeout
指定为 10 年。
FetchAllBlocking
FetchAllResponse FetchAllBlocking( DataSource data_source )
同步加载当前已登录玩家的所有快照数据,直接返回 FetchAllResponse
。
将 data_source
指定为 CACHE_OR_NETWORK
或 NETWORK_ONLY
。如果不指定 timeout
,此函数调用就等同于使用您指定的 data_source
值调用 FetchAllBlocking FetchAllResponse(DataSource data_source,
Timeout timeout)
,并将 timeout
指定为 10 年。
FetchAllBlocking
FetchAllResponse FetchAllBlocking( Timeout timeout )
同步加载当前已登录玩家的所有快照数据,直接返回 FetchAllResponse
。
以毫秒为单位指定 timeout
。如果不指定 data_source
,此函数调用等同于调用 FetchAllResponse FetchAllBlocking(DataSource data_source,
Timeout timeout)
,其中 data_source
指定为 CACHE_OR_NETWORK
,并且 timeout
包含您指定的值。
FetchAllBlocking
FetchAllResponse FetchAllBlocking( DataSource data_source, Timeout timeout )
同步加载当前已登录玩家的所有快照数据,直接返回 FetchAllResponse
。
将 data_source
指定为 CACHE_OR_NETWORK
或 NETWORK_ONLY
。以毫秒为单位指定 timeout
。
GetMaxSize
void GetMaxSize( MaxSizeCallback callback ) const
以字节为单位,异步获取每个快照的最大数据大小和最大封面图片大小。
在操作完成后调用所提供的 MaxSizeCallback
。
每个快照的数据大小上限保证至少为 3 MB。未来可能会增加。
每个快照封面图片的最大数据大小保证至少为 800 KB。未来可能会增加。
GetMaxSizeBlocking
MaxSizeResponse GetMaxSizeBlocking() const
以字节为单位同步获取每个快照的最大数据大小和最大封面图片大小,并直接返回 MaxSizeResponse
。
每个快照的数据大小上限保证至少为 3 MB。未来可能会增加。
每个快照封面图片的最大数据大小保证至少为 800 KB。未来可能会增加。
GetMaxSizeBlocking
MaxSizeResponse GetMaxSizeBlocking( Timeout timeout ) const
以字节为单位同步获取每个快照的最大数据大小和最大封面图片大小,并直接返回 MaxSizeResponse
。
每个快照的数据大小上限保证至少为 3 MB。未来可能会增加。
每个快照封面图片的最大数据大小保证至少为 800 KB。未来可能会增加。
以毫秒为单位指定 timeout
。
打开
void Open( const std::string & file_name, SnapshotConflictPolicy conflict_policy, OpenCallback callback )
异步打开具有给定名称的快照。
如果指定的快照尚不存在,系统将创建该快照。在操作完成后调用所提供的 OpenCallback
。
快照名称必须包含 1 到 100 个非网址预留字符(a-z、A-Z、0-9 或符号“-”“.””“_”或“~”)。
如果在当前设备上加载和提交快照期间,其他设备提交了快照,则可能会发生冲突。您必须解决这些冲突。如需详细了解冲突,请参阅上文中的 OpenResponse。
conflict_policy
可以是下列值之一:
SnapshotConflictPolicy::MANUAL
- 如果发生冲突,响应的状态为 OpenResponse::VALID_WITH_CONFLICT
。您必须使用 SnapshotManager::ResolveConflict
解决冲突。您可能会连续看到多个冲突,因此请在每次调用 Open
时进行检查。只有这项政策会出现冲突。我们会为您处理其余事宜。此政策可确保用户对游戏存档状态所做的任何更改都不会丢失。
SnapshotConflictPolicy::LONGEST_PLAYTIME
- 如果发生冲突,系统将使用播放时长值最大的快照。如果游戏时长是“最佳”游戏存档的合理替代指标,则此政策是一个不错的选择。请注意,您必须在保存游戏时使用 SnapshotMetadataChange::Builder::SetPlayedTime()
,此政策才有意义。
SnapshotConflictPolicy::LAST_KNOWN_GOOD
- 如果发生冲突,系统将使用基础快照。如果您的游戏需要快照数据的稳定性,此政策是一个合理的选择。此政策可确保播放器仅看到未发生争用的情况,从而保证所有客户端都达到一致。注意:之前是 SnapshotManager::BASE_WINS
SnapshotConflictPolicy::MOST_RECENTLY_MODIFIED
- 如果发生冲突,系统将使用遥控器。如果您的游戏可以容忍玩家在多部设备上覆盖自己的更改,则此政策是一个合理的选择。由于此政策会盲目选择最新数据,因此玩家所做的更改可能会丢失。注意:之前是 SnapshotManager::REMOTE_WINS
SnapshotConflictPolicy::HIGHEST_PROGRESS
如果发生冲突,系统将使用进度值最高的快照。如果出现平局,系统会改为选择上次的已知良好快照。如果您的游戏使用快照的进度值来确定最佳的已存游戏,则此政策是一个不错的选择。请注意,您必须在保存游戏时使用 SnapshotMetadataChange::Builder::SetPlayedTime()
,此政策才有意义。
打开
void Open( DataSource data_source, const std::string & file_name, SnapshotConflictPolicy conflict_policy, OpenCallback callback )
异步打开具有给定名称的快照。
已废弃。
系统会忽略 data_source
。请改用 Open(file_name, conflict_policy, callback)
。
OpenBlocking
OpenResponse OpenBlocking( const std::string & file_name, SnapshotConflictPolicy conflict_policy )
OpenBlocking
OpenResponse OpenBlocking( Timeout timeout, const std::string & file_name, SnapshotConflictPolicy conflict_policy )
OpenBlocking
OpenResponse OpenBlocking( DataSource data_source, const std::string & file_name, SnapshotConflictPolicy conflict_policy )
同步打开具有给定名称的快照。
已废弃。
系统会忽略 data_source
。请改用 OpenBlocking(file_name, conflict_policy)
。
OpenBlocking
OpenResponse OpenBlocking( DataSource data_source, Timeout timeout, const std::string & file_name, SnapshotConflictPolicy conflict_policy )
同步打开具有给定名称的快照。
已废弃。
系统会忽略 data_source
。请改用 OpenBlocking(timeout, file_name, conflict_policy)
。
读取
void Read( const SnapshotMetadata & snapshot_metadata, ReadCallback callback )
异步从磁盘读取快照,并将其复制到内存中。
系统会按值传回数据,以便更轻松地进行修改。对此函数的每次调用都会导致一次完整读取。这意味着,通常最好只读取一次快照。在操作完成后调用所提供的 ReadCallback
。
ReadBlocking
ReadResponse ReadBlocking( const SnapshotMetadata & snapshot_metadata )
同步从磁盘读取快照,并将其复制到内存中。
系统会按值传回数据,以便更轻松地进行修改。对此函数的每次调用都会导致一次完整读取。这意味着,通常最好只读取一次快照。如果不指定 timeout
,此函数调用就等同于调用 ReadBlocking ReadBlocking(Timeout timeout,
const SnapshotMetadata& snapshot_metadata)
,其中 timeout
指定为 10 年。
ReadBlocking
ReadResponse ReadBlocking( Timeout timeout, const SnapshotMetadata & snapshot_metadata )
同步从磁盘读取快照并将其复制到内存中。
系统会按值传回数据,以便更轻松地进行修改。对此方法的每次调用都会执行完整读取,因此通常只会读取一次快照。以毫秒为单位指定 timeout
。
ResolveConflict
void ResolveConflict( const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, OpenCallback callback )
使用所提供快照中的数据异步解析冲突。
这将将服务器上的数据替换为指定的快照。请注意,此操作本身可能会导致冲突,在这种情况下,应重复执行解决方法。
如果使用已提交的快照或未通过 Open 打开的快照调用此方法,则会失败并返回 BaseStatus::ERROR_INTERNAL 状态。
在操作完成后调用所提供的 OpenCallback
。
ResolveConflict
void ResolveConflict( const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents, OpenCallback callback )
使用提供的数据异步解决冲突。
这会将服务器上的数据替换为指定的元数据更改和 contents
。请注意,此操作本身可能会导致冲突,在这种情况下,应重复执行解决方案。
元数据更改中未包含的值将解析为服务器上当前的版本。
请注意,contents
的总大小不得超过 GetMaxSize 提供的 maxDataSize
。
如果使用已提交的快照或未通过 Open 打开的快照调用此方法,则会失败并返回 BaseStatus::ERROR_INTERNAL 状态。
在操作完成后调用所提供的 OpenCallback
。
ResolveConflictBlocking
OpenResponse ResolveConflictBlocking( const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata )
使用所提供快照中的数据同步解决冲突。
这将将服务器上的数据替换为指定的快照。请注意,此操作本身可能会导致冲突,在这种情况下,应重复执行解决方案。
如果使用已提交的快照或未通过 Open 打开的快照调用此方法,则会失败并返回 BaseStatus::ERROR_INTERNAL 状态。
ResolveConflictBlocking
OpenResponse ResolveConflictBlocking( const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents )
使用提供的数据同步解决冲突。
这会将服务器上的数据替换为指定的元数据更改和 contents
。请注意,此操作本身可能会导致冲突,在这种情况下,应重复执行解决方案。
元数据更改中未包含的值将解析为服务器上当前的版本。
请注意,contents
的总大小不得超过 GetMaxSize 提供的 maxDataSize
。
如果使用已提交的快照或未通过 Open 打开的快照调用此方法,则会失败并返回 BaseStatus::ERROR_INTERNAL 状态。
ResolveConflictBlocking
OpenResponse ResolveConflictBlocking( Timeout timeout, const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata )
使用所提供快照中的数据同步解决冲突。
这将将服务器上的数据替换为指定的快照。请注意,此操作本身可能会导致冲突,在这种情况下,应重复执行解决方案。
如果使用已提交的快照或未通过 Open 打开的快照调用此方法,则会失败并返回 BaseStatus::ERROR_INTERNAL 状态。
以毫秒为单位指定 timeout
。
ResolveConflictBlocking
OpenResponse ResolveConflictBlocking( Timeout timeout, const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents )
使用提供的数据同步解决冲突。
这会将服务器上的数据替换为指定的元数据更改和 contents
。请注意,此操作本身可能会导致冲突,在这种情况下,应重复执行解决方案。
元数据更改中未包含的值将解析为服务器上当前的版本。
请注意,contents
的总大小不得超过 GetMaxSize 提供的 maxDataSize
。
如果使用已提交的快照或未通过 Open 打开的快照调用此方法,则会失败并返回 BaseStatus::ERROR_INTERNAL 状态。
以毫秒为单位指定 timeout
。
ShowSelectUIOperation
void ShowSelectUIOperation( bool allow_create, bool allow_delete, uint32_t max_snapshots, const std::string & title, SnapshotSelectUICallback callback )
异步显示快照界面,以便玩家选择快照或请求新的快照。
完成后,系统会通过 SnapshotSelectUICallback
返回所选快照或新快照请求。
ShowSelectUIOperationBlocking
SnapshotSelectUIResponse ShowSelectUIOperationBlocking( Timeout timeout, bool allow_create, bool allow_delete, uint32_t max_snapshots, const std::string & title )
ShowSelectUIOperation 的阻塞版本。
允许调用方指定超时时间(以毫秒为单位)。指定时间过后,该函数会返回 ERROR_TIMEOUT
。
ShowSelectUIOperationBlocking
SnapshotSelectUIResponse ShowSelectUIOperationBlocking( bool allow_create, bool allow_delete, uint32_t max_snapshots, const std::string & title )
ShowSelectUIOperationBlocking 的过载,其默认超时时间为 10 年。