Play Games PC SDK を使用してゲームを強化する

Play Games PC SDK を使用すると、Google Play サービスにアクセスして、PC でゲームを構築し、収益化できます。Play 請求サービスを使用してデジタル コンテンツを販売し、Play Games を使用してシームレスにログインし、Play Integrity を使用してユーザーがアプリの有効な利用資格を持っていることを確認できます。

準備ができたら

前提条件

  • Google Play Console 内でアプリ エントリを作成し、Google Play パッケージ名を請求します。

  • PC 版 Google Play Games をダウンロードしてインストールし、Google アカウントでログインします。

ステップ 1: プロジェクトに SDK を追加する

  • Play Games PC C++ SDK をダウンロードします。

  • API ヘッダー フォルダ includes/ をアプリケーションのコードベースにコピーします。

  • 再配布可能なファイルを imports/ からアプリケーションのプロジェクトにコピーします。

    • play_pc_sdk.lib に対してプロジェクトをリンクし、play_pc_sdk.dll のコンテンツへのアクセスを許可します。

ステップ 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 デジタル署名を使用してゲームの実行可能ファイルをデジタル署名する必要があります。実行可能ファイルに署名する方法については、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 ランタイムでゲームのアプリケーション ID を確認できませんでした。これは、manifest.xml が無効であるか、開発時に デベロッパー モードを有効にせずに SDK を使用していることが原因である可能性があります。これがない場合、ゲームの実行可能ファイルは、Google Play パッケージ名に登録されたデジタル証明書でデジタル署名されている必要があります。

  • ゲームの実行可能ファイルが Google Play ゲーム クライアントから起動されなかった。

  • Google Play ゲームのアクティブ ユーザーが、アプリのライセンスを所有していない。

ステップ 5: (省略可)複数のゲームプロセスをサポートする

ゲームで複数のプロセスを使用しており、Google Play Games for PC によって直接起動されないプロセスから Play Games PC SDK を使用する予定がある場合は、追加の統合手順が必要です。

  1. PC 版 Google Play Games によって直接起動されるプロセスは、Play Games PC SDK の初期化が成功したことを確認する必要があります。

    これにより、エラーをできるだけ早く検出して、最適なユーザー エクスペリエンスを提供できます。SDK を使用する子プロセスも、直接起動されたプロセスに加えて初期化を行う必要があります。

  2. 子プロセスで Play Games PC SDK を使用するには、コマンドライン パラメータを生成された子プロセスに転送します。

    コマンドライン パラメータの転送の例:

    Processes hierarchy tree:
    
    GooglePlayGames.exe
    └───YourGameLauncher.exe --foo=abc --bar=123
        └───YourGame.exe --foo=abc --bar=123
    

    この例では、PC 版 Google Play Games(GooglePlayGames.exe)がいくつかのサンプル パラメータ(--foo=abc --bar=123)を使用してゲーム(YourGameLauncher.exe)を起動するプロセス階層を示しています。ゲームは、Play Games PC SDK を使用する子プロセス(YourGame.exe)を生成します。これを可能にするため、PC 版 Google Play Games によって起動されたゲームプロセスは、与えられたコマンドライン パラメータを子プロセスに転送します。

  3. ゲームの実行が停止したら、すべてのプロセスを終了します。

    ユーザーがゲームを終了した場合や、SDK の初期化の失敗(kActionRequiredShutdownClientProcess など)によりゲームが終了した場合は、ゲームが生成したすべてのプロセスを終了します。これにより、次回 PC 版 Google Play Games クライアントでゲームが起動されたときに、アクティブなアカウントの切り替えなどの新しい変更が有効になります。

次のステップ

IDE で開発する際に SDK を使用する:

アプリに Google Play PC の機能を追加します。