Google Play Games PC SDK を Unity と統合する

project。SDK のダウンロードから初期化、ビルド 構成までの手順について説明します。 keywords_public: Google Play Games PC、Unity、SDK 統合、ネイティブ PC、 ゲーム開発、IL2CPP、マニフェスト、Play Games PC Unity SDK

このガイドでは、Google Play Games PC SDK を Unity プロジェクトに統合する手順について説明します。

ステップ 1: SDK をダウンロードする

ダウンロード リンクを使用して、Unity パッケージの最新バージョンをダウンロードします。

ダウンロード: Play Games PC Unity SDK

ステップ 2: パッケージをインポートする

SDK は、Unity Package Manager(UPM)と互換性のある tar ファイルとして配布されます。詳細については、 ローカル tar ファイルから UPM パッケージをインストールするをご覧ください。

ステップ 3: ビルド設定を構成する

ネイティブ ライブラリが正しく読み込まれることを確認するには、IL2CPP スクリプティング バックエンドを使用し、正しいアーキテクチャをターゲットとするようにプロジェクトを構成する必要があります。

  1. [ビルド プロファイルを作成] プラットフォームとして [Windows] を選択します。

  2. [プラットフォーム設定] として [Windows] を選択します。アーキテクチャには、次のオプションを使用します。

    • Intel 64 ビット (推奨)
    • Intel 32 ビット

    注: PC 版 Google Play Games プラットフォームは 64 ビット環境で実行されます。ゲームは 32 ビット(x86)または 64 ビット(x64)としてビルドできます。

  3. [Scripting Backend] を [IL2CPP] に設定します。 詳細については、IL2CPP でプロジェクトをビルドするをご覧ください。

    • [Api Compatibility Level] を [.NET Standard 2.0](または .NET Framework)に設定します。

ステップ 4: アプリケーション マニフェストを作成する

ゲームで SDK を使用する前に、ゲームの実行可能ファイルを Google Play Console で申請した Play パッケージ名に関連付ける必要があります。これを行うには、ゲームの実行可能ファイルと同じディレクトリに manifest.xml ファイルを追加します。

注: これは手動で行う必要があります。

  1. ゲームの実行可能ファイルを作成するには、[File] > [Build and Run] を選択するか、Ctrl+B をクリックします。
  2. テキスト エディタを開き、manifest.xml という名前の新しいファイルを作成します。
  3. 次の XML コードをコピーしてファイルに貼り付けます。

    <?xml version="1.0" encoding="utf-8"?>
    <?Manifest version="1">
       <?Application>
         <?PackageName>com.example.package<?/PackageName>
       <?/Application>
    <?/Manifest>

  4. ファイルを manifest.xml として保存します。

  5. このファイルを、ビルドしたゲームの実行可能ファイルと同じフォルダに移動します。

    例: ゲームが Builds/MyGame.exe にある場合、マニフェストは Builds/manifest.xml にある必要があります。

注: ゲームの実行可能ファイルにデジタル署名したり、Google Play Games から起動したりせずに、Unity エディタで開発中に PC SDK を使用する場合は、マニフェスト構成の追加手順については、 デベロッパー モードの設定ガイドをご覧ください。

ステップ 5: SDK を初期化する

課金や Integrity などの機能にアクセスする前に、SDK を初期化する必要があります。PlayPcSdkFactory を使用して初期化ハンドラを作成し、接続を開始します。

SdkInitialization.cs などの新しい C# スクリプトを作成し、次のコードを追加します。

using UnityEngine;
using System;
using System.Threading.Tasks;
// Import the SDK namespaces
using PlayPcSdkManaged.Initialization;
using PlayPcSdkManaged.Unity;

public class GooglePlayPCSDKInit : MonoBehaviour
{
    // Prevent double-initialization if this script is reloaded
    private static bool _isInitialized = false;

    private void Start()
    {
        // Use the "Safe Runner" pattern to fire the async method
        _ = InitializeSdkAsync();
    }

    private async Task InitializeSdkAsync()
    {
        if (_isInitialized)
        {
            Debug.LogWarning("Google Play PC SDK is already initialized. Skipping.");
            return;
        }

        try
        {
            Debug.Log("Initializing Google Play PC SDK...");

            // 1. Get the Unity-specific initialization handler from the factory
            var initHandler = PlayPcSdkFactory.InitializationHandler;

            // 2. Call InitializeAsync to start the connection
            var result = await GooglePlayInitialization.InitializeAsync(initHandler);

            // 3. Check the result
            if (result.IsOk)
            {
                _isInitialized = true;
                Debug.Log("<color=green>Google Play PC SDK Initialized Successfully!</color>");
                // You can now create BillingClient or IntegrityClient instances
            }
            else
            {
                Debug.LogError($"<color=red>Initialization Failed!</color>");
                Debug.LogError($"Error Code: {result.Code}");
                Debug.LogError($"Message: {result.ErrorMessage}");
            }
        }
        catch (Exception ex)
        {
            // Catch unexpected crashes or task failures
            Debug.LogError($"Exception during initialization: {ex.Message}");
            Debug.LogException(ex);
        }
    }
}

このスクリプトを最初のシーンの GameObject に追加します。ゲームを実行したら、コンソールで「SDK Initialized Successfully!」というメッセージが表示されていることを確認します。

ステップ 6: PC ネイティブ ゲームのインストール時に自動再生を有効にする

PC 版 Google Play Games(GPG)では、デベロッパーが「自動再生」機能を有効にできます。この機能を使用すると、インストール プロセスが完了するとすぐにゲームが自動的に起動します。この機能により、プレーヤーは GPG エコシステム内で完全に認証され、ゲームに直接移行できるため、シームレスなユーザー エクスペリエンスを実現できます。

仕組み

この機能を有効にすると、GPG はコマンドライン引数を介してサードパーティ(3P)インストーラ プロセスに GPG セッション トークンを渡します。インストーラは、このトークンを抽出して、認証されたコンテキストでゲームの実行可能ファイルを起動します。

前提条件

この機能を使用するには、3P インストーラがコマンドライン引数を処理できる必要があります。

実装の手順

  1. 公開構成で自動再生を有効にする

    この機能を有効にするには、play_publishing_config.xml<installer> 要素に acceptsCommandLineArguments 属性 を追加します。

    manifest.xml の内容の例:

    <installer requiresElevation="true" acceptsCommandLineArguments="true">
      <path>path/to/installer.exe</path>
      <installation-path-registry-location>
        <key-name>SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\key</key-name>
        <value-name>InstallPath</value-name>
      </installation-path-registry-location>
    </installer>
    
    • 属性: acceptsCommandLineArguments
    • タイプ: Boolean
    • デフォルト: false
    • 動作: true に設定すると、インストーラの実行時に GPG がセッション トークンをコマンドライン引数に追加します。
  2. インストーラでセッション トークンを処理する

    インストーラが GPG クライアントによって起動されると、セッション トークンがコマンドライン引数として渡されます。

    • 引数の形式: --g_session_token=<TOKEN>

    必要な操作:

    • 抽出: インストーラはコマンドライン引数を解析して、トークン文字列を取得する必要があります。
    • 伝播: インストール フローでセカンダリ ランチャーまたはゲーム プロセスを起動する場合は、インストーラが SDK を使用する最終的なゲーム プロセスにセッション トークンを安全に渡す必要があります。
    • 起動: 提供されたセッション トークンを使用して、ゲームの実行可能ファイルを開始します。これにより、ゲームは認証された GPG コンテキスト内で実行されます。そうしないと、 InitializeSDK が失敗し、プレーヤーはゲームを再起動する必要があります。
  3. エラー処理とフォールバック