借助 Play Games PC SDK,您可以访问 Google Play 服务,以便在 PC 上构建游戏并实现游戏创收。您可以使用 Play 结算服务销售数字内容,使用 Play Games 无缝登录,并通过 Play Integrity 确保用户拥有应用的有效授权。
准备好开始了吗?
前提条件
在 Play 管理中心内创建应用条目,并声明一个 Play 软件包名称。
下载并安装 Google Play Games 电脑版,然后使用您的 Google 账号登录。
第 1 步:将 SDK 添加到您的项目
将 API 标头文件夹
includes/
复制到应用的代码库中。将可再分发文件从
imports/
复制到您的应用项目。- 将您的项目与
play_pc_sdk.lib
相关联,以允许访问play_pc_sdk.dll
的内容。
- 将您的项目与
第 2 步:添加清单文件
在游戏中使用 SDK 之前,您需要将游戏可执行文件与您在 Play 管理中心内声明的 Play 软件包名称相关联。为此,请在游戏可执行文件所在的目录中添加 manifest.xml
文件。
示例 manifest.xml
内容:
<?xml version="1.0" encoding="utf-8"?>
<Manifest version="1">
<Application>
<PackageName>com.example.package</PackageName>
</Application>
</Manifest>
示例 manifest.xml
展示位置:
C:\Program Files
└───Example Game
├───Game.exe
└───manifest.xml
第 3 步:对游戏进行数字签名
游戏的可执行文件必须使用 Authenticode 数字签名进行数字签名,然后游戏才能使用该 SDK。如需了解如何对可执行文件进行签名,请参阅 SignTool 文档。
第 4 步:初始化 SDK
在游戏启动序列期间初始化 SDK。此过程应自动完成,无需任何用户互动。建议在渲染游戏窗口之前验证初始化是否成功。 这样可以尽快发现并解决错误,从而提供最佳用户体验,并避免在游戏进程需要退出时游戏窗口短暂显示。
通过调用 GooglePlayInitialize
初始化 API,开始使用该 SDK。这将设置全局状态、与 SDK 运行时连接,并验证应用是否已正确启动。必须调用此方法,并且在可以使用任何其他 API 之前,必须使延续回调完成,且 InitializeResult::ok()
等于 true
。
// Initialize the SDK as part of the startup sequence of your application.
auto promise = std::make_shared<std::promise<InitializeResult>>();
GooglePlayInitialize(
[promise](InitializeResult result) {
promise->set_value(std::move(result));
});
auto initialize_result = promise->get_future().get();
if (initialize_result.ok()) {
// The SDK succeeded with initialization. Continue with the startup sequence
// of the game.
// ...
} else if (initialize_result.code() == InitializationError::kActionRequiredShutdownClientProcess) {
// The SDK failed to initialize and has requested that your game process exit
// as soon as possible.
exit(1);
} else {
// The SDK failed to initialize for an alternative reason. It is still
// generally recommended that you exit the game process as soon as possible,
// because it won't be possible to access any APIs in the SDK. Critical
// operations such as verifying the user owns a valid license to your game
// won't be possible.
// ...
}
如果初始化失败并显示代码 kActionRequiredShutdownClientProcess
,请尽快退出游戏进程。SDK 的运行时将尝试协助用户,而您的游戏无需执行任何其他操作。例如,如果用户没有游戏的有效许可,Google Play Games 会提示用户购买游戏。对于其他错误,仍建议尽快退出游戏进程,因为该进程无法使用 SDK 执行关键操作,例如验证用户是否拥有游戏的有效许可。
不成功的响应可能表示存在以下情况之一:
SDK 运行时未安装、未在设备上运行,或者版本较旧,与集成到游戏中的 SDK 不兼容。
SDK 运行时无法验证游戏的应用身份。这可能是因为
manifest.xml
无效,或者在开发时使用了 SDK 但未启用开发者模式。如果没有此设置,则必须使用注册到您的 Play 软件包名称的数字证书对游戏的可执行文件进行数字签名。游戏可执行文件不是通过 Google Play 游戏客户端启动的。
Google Play Games 中的活跃用户没有相应应用的许可。
第 5 步:(可选)支持多个游戏进程
如果您的游戏使用多个进程,并计划从并非由 Google Play Games for PC 直接启动的进程中使用 Play Games PC SDK,则需要执行额外的集成步骤:
由 Google Play Games 电脑版直接启动的进程必须验证 Play Games 电脑版 SDK 是否成功初始化。
这样可以尽快发现错误,从而提供最佳用户体验。请注意,使用 SDK 的子进程除了直接启动的进程之外,还必须执行初始化。
如需在子进程中使用 Play Games PC SDK,请将命令行参数转发到生成的子进程。
命令行参数转发示例:
Processes hierarchy tree: GooglePlayGames.exe └───YourGameLauncher.exe --foo=abc --bar=123 └───YourGame.exe --foo=abc --bar=123
在此示例中,我们看到一个进程层次结构,其中 Google Play Games 电脑版 (
GooglePlayGames.exe
) 使用一些示例参数 (--foo=abc --bar=123
) 启动游戏 (YourGameLauncher.exe
)。然后,游戏会生成一个使用 Play Games 电脑版 SDK 的子进程 (YourGame.exe
)。为了实现这一点,Google Play Games 电脑版启动的游戏进程会将收到的命令行参数转发给子进程。当游戏停止运行时,退出所有进程。
当用户关闭游戏或游戏因 SDK 初始化失败(例如
kActionRequiredShutdownClientProcess
)而退出时,请关闭游戏生成的所有进程。这样可确保下次 Google Play Games 电脑版客户端启动游戏时,新更改(例如切换到其他有效账号)会生效。
后续步骤
在 IDE 中开发时使用 SDK:
- 启用开发者模式
为应用添加 Google Play 电脑版功能:
- 借助 Play 结算服务销售数字商品
- 使用 Play Install Referrer 衡量营销效果