借助 Play Games PC SDK,您可以访问 Google Play 服务,以便在 PC 上构建游戏并从中获利。您可以使用 Play 结算服务销售数字内容,使用 Play Games 无缝登录,并使用 Play Integrity 验证您的用户是否拥有应用的有效使用权。
如需大致了解即将推出的功能、稳定版以及集成 架构,请参阅 Play 游戏电脑版路线图。
准备好开始使用了吗?
前提条件
在 Play 管理中心内创建应用条目,并声明 Play 软件包名称。
下载并安装 Google Play 游戏电脑版,然后使用 您的 Google 账号登录。
第 1 步:将 SDK 添加到您的项目
C++
将 API 标头文件夹
includes/复制到您的应用代码库中。根据您的目标架构,将可再发行文件从
imports/目录复制到您的应用项目中:对于 64 位 (x64): 从
imports/x64/复制文件。对于 32 位 (x86): 从
imports/x86/复制文件。将您的项目与
play_pc_sdk.lib关联,以允许访问play_pc_sdk.dll的内容。
C#
以 tarball (.tgz) 文件的形式下载 Play 游戏电脑 Unity SDK。
该 SDK 以与 Unity Package Manager (UPM) 兼容的 tarball (.tgz) 形式分发。如需导入软件包,请参阅 从本地 tar 文件安装 UPM 软件包
如需详细文档、设置说明和其他指南, 请参阅 Play PC Unity 软件包 页面。
第 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 步:对游戏进行数字签名
在游戏可以使用 SDK 之前,必须使用 Authenticode 数字签名为游戏的可执行文件进行数字签名。 如需了解如何为可执行文件签名,请参阅有关 SignTool 的 文档。
完成对游戏进行数字签名的流程后,请将证书信息发送给您的 Google 代表以进行配置。
第 4 步:初始化 SDK
在游戏的启动序列期间初始化 SDK。此操作应自动完成,无需任何用户互动,建议您先验证初始化是否成功,然后再呈现游戏窗口。 这样可以尽快发现并解决错误,从而提供最佳用户体验,并避免在游戏进程需要退出时游戏窗口短暂显示。
调用
GooglePlayInitialize (C++) /
GooglePlayInitialization.InitializeAsync (C#)
以初始化 API,从而开始使用 SDK。这将设置全局状态,与 SDK 运行时连接,并验证应用是否已正确启动。在可以使用任何其他 API 之前,必须 调用此 API,并且必须让延续回调完成,且 InitializeResult::ok() (C++) / Result.IsOk (C#) 等于 true。
C++
// 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.
// ...
}
C#
// SDK Clients
private BillingClient _billingClient;
private IntegrityClient _integrityClient;
// Stored product information
private string _offerToken;
private async void InitializeSDK()
{
// The factory provides the necessary handler for initialization.
var initializationHandler = PlayPcSdkFactory.InitializationHandler;
var result = await GooglePlayInitialization.InitializeAsync(initializationHandler);
if (result.IsOk)
{
// Use the factory to get Unity-compatible instances of the clients
_billingClient = PlayPcSdkFactory.CreateBillingClient();
_integrityClient = PlayPcSdkFactory.CreateIntegrityClient();
// SDK is ready for use
}
else
{
// Handle specific, actionable errors
if (result.Code == InitializationError.ActionRequiredShutdownClientProcess)
{
Log("This game must be launched through the Google Play Games client. Please exit all game processes immediately, GPG will relaunch the game safely.");
Application.Quit();
}
}
}
如果初始化失败,并显示代码 kActionRequiredShutdownClientProcess (C++) / InitializationError.ActionRequiredShutdownClientProcess (C#),请尽快退出游戏进程 。SDK 的运行时将尝试帮助用户,而无需您的游戏执行任何其他操作。例如,如果用户没有游戏的有效使用权,Google Play 游戏会提示用户购买副本。对于其他错误,您也应退出游戏进程,因为您将无法使用 SDK 执行关键操作,例如验证用户是否拥有游戏的有效使用权。
响应不成功可能表示以下情况之一:
SDK 运行时未安装、未在设备上运行,或者版本较旧,与集成到游戏中的 SDK 不兼容。
SDK 运行时无法验证游戏的应用身份。这可能是因为
manifest.xml无效,或者在开发时未使用开发者模式就使用了 SDK。如果没有此项,则需要使用向您的 Play 软件包名称注册的数字证书为游戏的可执行文件进行数字签名。游戏可执行文件不是通过 Google Play 游戏客户端启动的。
Google Play 游戏中的活跃用户没有应用的使用权。
第 5 步:(可选)支持多个游戏进程
如果您的游戏使用多个进程,并且 Play 游戏电脑版 SDK 由与 Google Play 游戏电脑版启动的进程不同的进程使用,请完成以下额外的集成步骤。例如,如果 Google Play Games 电脑版启动了游戏的启动器,然后您的启动器启动了将与 SDK 互动的游戏进程。
由 Google Play 游戏电脑版直接启动的进程必须 验证 Play 游戏电脑版 SDK 是否已成功初始化。
这样可以尽快发现错误,从而提供最佳用户体验。请注意,除了直接启动的进程之外,使用 SDK 的子进程也必须执行初始化。
如需在子进程中使用 Play Games PC SDK,请将命令行参数转发到生成的子进程。
命令行参数转发示例:
Processes hierarchy tree: GooglePlayGames.exe └───YourGameLauncher.exe --gpg_args=abc --your_args=123 └───YourGame.exe --gpg_args=abc --your_args=123在此示例中,我们看到一个进程层次结构,其中 Google Play 游戏电脑版 (
GooglePlayGames.exe) 使用一些示例参数 (--gpg_args=abc --your_args=123) 启动游戏 (YourGameLauncher.exe)。然后,游戏会生成一个使用 Play 游戏电脑版 SDK 的子进程 (YourGame.exe)。为了允许此操作,由 Google Play 游戏电脑版启动的游戏进程会将它收到的命令行参数转发给子进程。游戏停止运行时,退出所有进程。
当用户关闭游戏或游戏因 SDK 初始化失败(例如
kActionRequiredShutdownClientProcess)而退出时,请关闭游戏生成的所有进程。这样可以确保下次 Google Play Games 电脑版客户端启动游戏时,新更改(例如切换到其他活跃账号)将生效。
后续步骤
在 IDE 中开发时使用 SDK:
- 启用开发者模式
向应用添加 Google Play PC 功能:
- 使用 Play 结算服务 销售数字商品
- 使用 Play Install Referrer 衡量营销效果
- 使用 Play Integrity for PC 保护游戏