Play Games PC SDK を使用すると、Google Play 開発者サービスにアクセスして、PC でゲームをビルドし、収益化できます。Play 請求サービスを使用してデジタル コンテンツを販売し、Play Games を使用してシームレスにログインし、Play Integrity を使用してユーザーがアプリの有効な利用資格を持っていることを確認できます。
今後の機能、安定版リリース、統合 アーキテクチャの概要については、Play Games PC のロードマップをご覧ください。
準備ができたら
前提条件
Google Play Console 内でアプリのエントリを作成し、Google Play のパッケージ名を申請します。
PC 版 Google Play Games をダウンロードしてインストールし、 Google アカウントでログインします。
ステップ 1: プロジェクトに SDK を追加する
C++
Play Games PC C++ SDK をダウンロードします。
API ヘッダー フォルダ
includes/をアプリケーションのコードベースにコピーします。ターゲット アーキテクチャに応じて、再配布可能なファイルを
imports/ディレクトリからアプリケーションのプロジェクトにコピーします。64 ビット(x64)の場合:
imports/x64/からファイルをコピーします。32 ビット(x86)の場合:
imports/x86/からファイルをコピーします。play_pc_sdk.libに対してプロジェクトをリンクし、play_pc_sdk.dllのコンテンツにアクセスできるようにします。
C#
Play Games PC Unity SDK を tarball(.tgz)ファイルとしてダウンロードします。
SDK は、Unity Package Manager(UPM) と互換性のある tarball(.tgz)として配布されます。パッケージをインポートするには、 ローカルの tar ファイルから UPM パッケージをインストールするをご覧ください。
詳細なドキュメント、設定手順、その他のガイダンスについては、 Play PC Unity パッケージのページをご覧ください。
ステップ 2: マニフェスト ファイルを追加する
ゲーム内で SDK を使用するには、まず、ゲームの実行可能ファイルを、Google Play Console 内で申請した Google 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 デジタル署名を使用してゲームの実行可能ファイルにデジタル 署名する必要があります。 Authenticode デジタル署名。 実行可能ファイルに署名する方法については、 SignTool に関するドキュメントをご覧ください。
ゲームにデジタル署名するプロセスが完了したら、構成のために証明書情報を Google の担当者に送信してください。
ステップ 4: SDK を初期化する
ゲームの起動シーケンス中に SDK を初期化します。これはユーザー インタラクションを必要とせずに自動的に行われる必要があります。ゲーム ウィンドウをレンダリングする前に、初期化が成功したことを確認することをおすすめします。これにより、エラーをできるだけ早く表面化して解決することで、最高のユーザー エクスペリエンスを提供できます。また、ゲーム プロセスを終了する必要がある場合に、ゲーム ウィンドウが一時的に表示されるのを防ぐことができます。
GooglePlayInitialize(C++)/
GooglePlayInitialization.InitializeAsync(C#)を呼び出して API を初期化し、SDK の使用を開始します。これにより、グローバル状態が設定され、SDK ランタイムに接続され、アプリが正しく起動されたことが確認されます。他の 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 Games はコピーを購入するようユーザーに促します。他のエラーが発生した場合も、ゲームの有効なライセンスをユーザーが所有していることを確認するなど、SDK を使用して重要な操作を実行できないため、ゲーム プロセスを終了する必要があります。
レスポンスが成功しなかった場合は、次のいずれかの状態が考えられます。
SDK ランタイムがインストールされていない、デバイスで実行されていない、またはゲームに統合されている SDK と互換性のない古いバージョンである。
SDK ランタイムがゲームのアプリ ID を確認できなかった。これは、無効な
manifest.xmlであるか、開発時に デベロッパー モードを有効にせずに SDK を使用していることが原因である可能性があります。これがないと、ゲームの実行可能ファイルに、Google Play のパッケージ名に登録されているデジタル証明書を使用してデジタル署名する必要があります。ゲームの実行可能ファイルが Google Play Games クライアントから起動されなかった。
Google Play Games のアクティブなユーザーがアプリのライセンスを所有していない。
ステップ 5: (省略可)複数のゲーム プロセスをサポートする
ゲームで複数のプロセスを使用し、PC 版 Google Play Games によって起動されるプロセスとは異なるプロセスで Play Games PC SDK を使用する場合は、次の統合手順を完了します。たとえば、PC 版 Google Play Games がゲームのランチャーを起動し、ランチャーが SDK とやり取りするゲーム プロセスを開始する場合などです。
PC 版 Google Play Games によって直接起動されるプロセスは、Play Games PC 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この例では、PC 版 Google Play Games(
GooglePlayGames.exe)がゲーム(YourGameLauncher.exe)をいくつかのパラメータ(--gpg_args=abc --your_args=123)で起動するプロセス階層を示しています。次に、ゲームは Play Games PC SDK を使用する子プロセス(YourGame.exe)を生成します。これを許可するには、PC 版 Google Play Games によって起動されたゲーム プロセスが、指定されたコマンドライン パラメータを子プロセスに転送します。ゲームの実行が停止したら、すべてのプロセスを終了します。
ユーザーがゲームを閉じたり、
kActionRequiredShutdownClientProcessなどの SDK の初期化エラーが原因でゲームが終了したりした場合は、ゲームが生成したすべてのプロセスを閉じます。これにより、PC 版 Google Play Games クライアントでゲームを次回起動したときに、別のアクティブ アカウントへの切り替えなどの新しい変更が有効になります。
次のステップ
IDE で開発中に SDK を使用する:
- デベロッパー モードを有効にする
アプリに Google Play PC の機能を追加する:
- Play 請求サービスでデジタル アイテムを販売する
- Google Play のインストール リファラーでマーケティングを測定する
- PC 版 Play Integrity でゲームを保護する