使用 Play 游戏电脑版 SDK 为您的游戏注入强劲动力

借助 Play Games PC SDK,您可以访问 Google Play 服务,以便在 PC 上构建游戏并实现游戏创收。您可以使用 Play 结算服务销售数字内容,使用 Play Games 无缝登录,并通过 Play Integrity 确保用户拥有应用的有效授权。

准备好开始了吗?

前提条件

  • 在 Play 管理中心内创建应用条目,并声明一个 Play 软件包名称。

  • 下载并安装 Google Play Games 电脑版,然后使用您的 Google 账号登录。

第 1 步:将 SDK 添加到您的项目

  • 下载 Play Games PC C++ 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,则需要执行额外的集成步骤:

  1. 由 Google Play Games 电脑版直接启动的进程必须验证 Play Games 电脑版 SDK 是否成功初始化

    这样可以尽快发现错误,从而提供最佳用户体验。请注意,使用 SDK 的子进程除了直接启动的进程之外,还必须执行初始化。

  2. 如需在子进程中使用 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 电脑版启动的游戏进程会将收到的命令行参数转发给子进程。

  3. 当游戏停止运行时,退出所有进程。

    当用户关闭游戏或游戏因 SDK 初始化失败(例如 kActionRequiredShutdownClientProcess)而退出时,请关闭游戏生成的所有进程。这样可确保下次 Google Play Games 电脑版客户端启动游戏时,新更改(例如切换到其他有效账号)会生效。

后续步骤

在 IDE 中开发时使用 SDK:

为应用添加 Google Play 电脑版功能: