よくある質問

このドキュメントでは、PC 版 Google Play Games の SDK と公開に関するよくある質問に回答します。

収益化

  1. 新しい請求キーまたはライセンスキーを追加した後、購入フローがエラーコード 6 で失敗するのはなぜですか?

    Google Play Console で新しく生成されたライセンスキーは、Google Play の内部キャッシュがすべてのサービス環境で同期される前に、コマース バックエンドで数時間のキャッシュと伝播の遅延が発生します。ゲーム クライアントが商品の詳細を正常にクエリできても、同期が完了するまで購入リクエストはエラーコード 6 で失敗します。ライセンスキーをアップロードまたは更新してから、購入をテストするまでに数時間お待ちください。

  2. バックエンド サーバーなしで購入フローを使用できますか?

    セキュリティの観点から、Google はバックエンド サーバーの使用をおすすめします。

    詳細については、バックエンド サーバーなしで処理するをご覧ください。

  3. PC 版 Google Play Games SDK を統合した後も、既存の API ベースの支払いシステムを使用できますか?

    すべての支払いは、Google Play 請求サービスを使用して PC 版 Google Play Games SDK で処理する必要があります。同じゲームで既存の API ベースのお支払い方法を使用することはできません。

  4. デベロッパー モードで購入を消費するにはどうすればよいですか?

    デベロッパー モードでは、3 分以内に購入を消費する必要があります。消費しないと、購入は払い戻されます。

  5. 定期的なお支払いや定期購入はサポートされていますか?

    当面は予定していませんが、具体的なユースケースをご提供いただければ、今後のロードマップに追加することを検討いたします。

  6. 購入呼び出しの請求エラーとは何ですか?

    BillingError は、支払い結果のレスポンスです。LaunchPurchaseFlow はブロックせずにすぐに戻りますが、終了したタイミングを把握して結果を取得するには、コールバックをリッスンする必要があります。

  7. クライアントサイドの購入の確認を使用するにはどうすればよいですか?

    サーバーサイドの購入とその確認プロセスを使用することをおすすめします。クライアント アプリからの購入を処理するには、ゲームを許可リストに登録する必要があります。ゲームでアクセスが必要な場合は、Google パートナーにお問い合わせください。 詳細については、バックエンド サーバーなしで処理するをご覧ください。

  8. 商品の詳細をクエリする際の API の上限はどのようになっていますか?

    QueryProductDetails API の 1 回の呼び出しでクエリできる商品の最大数は 50 です。この上限を超えた場合は、リクエストを複数の呼び出しに分割する必要があります。

  9. 多数の商品 SKU を読み込むときに、商品クエリまたは購入フローが内部エラーで失敗するのはなぜですか?

    一度にクエリする商品 SKU が多すぎる場合や、C++ の QueryProductDetails または Unity の QueryProductDetailsAsync を短期間に連続して呼び出しすぎる場合(たとえば、タイトなループで数十のバッチ呼び出しをディスパッチする場合や、バッチごとに新しい BillingClient インスタンスを作成する場合)は、ローカル IPC とバックエンド接続が過負荷になる可能性があります。これらの接続がリセットされると、商品の詳細クエリが失敗し、ゲームは購入フローの開始に必要なオファー トークンを取得できなくなります。

    カタログの読み込み時にこれらのエラーが発生しないようにするには、次の方法を実践してください。

    • 1 回の呼び出しでサポートされる商品数に従う: 1 回の QueryProductDetails 呼び出しまたは QueryProductDetailsAsync 呼び出しでクエリする商品数は 50 個以下にし、返された ProductDetails をメモリにキャッシュして、カタログ全体を繰り返しクエリしないようにします。サポートされているバッチの上限とアイテムの詳細のクエリの詳細については、前述の API の上限に関する質問、C++ の購入可能なアイテムを表示する、Unity のアイテムの詳細をクエリするをご覧ください。
    • 短期間に API を連続して何度も呼び出さないようにする: 複数の商品クエリバッチを同時に、または連続して、ペースを調整せずにディスパッチしないでください。単一の BillingClient インスタンスを再利用し、リクエストをシリアル化するか、同時実行を一度に 2 つまたは 3 つの処理中の呼び出しに制限し、連続するバッチ間に短い遅延を追加します。
    • 最新の SDK に更新する: Google Play Games PC SDK のダウンロード ページから、統合を最新の PC 版 Google Play Games SDK リリース(C++ の場合はバージョン 26.9.261.0、Unity の場合はバージョン 26.9.261.0)に更新して、クライアントに最新の課金と IPC の安定性の改善が含まれるようにします。
  10. Billing Client で Query Purchases または Launch Purchase Flow を呼び出すときに必要なパラメータはどれですか。

    この関数は、std::function<void(QueryPurchasesResult)> 署名を持つ関数コールバックである QueryPurchasesContinuation を受け入れます。コールバックは、すべての ProductPurchaseDetails とともに結果を返します。この情報は、includes/billing/models.h ファイルの SDK ヘッダー ファイルで確認できます。

    結果の launch_purchase_flow_result には ok() 関数と code() 関数があります。ok() 関数は、フローが成功したかどうかを返します。code() 関数は BillingError 列挙型(includes/billing/enums.h)を返します。この列挙型には、ユーザーによるキャンセルやネットワーク エラーなど、10 種類のエラーケースがあります。

  11. Billing Client の購入フローの開始でカスタム注文はサポートされていますか?

    現在の SDK 設計では、独自のペイロードを渡す方法はありません。ただし、obfuscated_account_id と obfuscated_profile_id の任意の組み合わせを指定できます。どちらも指定しないことも、どちらか一方のみを指定することも、両方を指定することもできます。

    offer_token フィールドは必須で、ユーザーが購入手続きのフローで購入しようとしている購入特典を指定します。現時点では、Google Play の各 SKU には 1 つの特典(たとえば、1 つのアイテムを 10 ドルで購入する)しかありません。今後、Google Play 請求サービス チームは複数の特典をサポートする予定です。

    購入フローが中断された場合にメタデータが関連付けられるようにするには、購入ダイアログを起動する前にメタデータをバックエンド サーバーに保存し、ユーザーのアカウント ID、購入する SKU、現在のタイムスタンプに関連付けます。詳細については、購入を内部データに関連付けるをご覧ください。

  12. OAuth を使用した Google 課金から DLL ベースの Google 課金に切り替えるための前提条件は何ですか?

    ゲームでは、引き続き Google での OAuth ログインを使用して、ログイン済みのアカウントを管理できますが、以前の REST 課金 API の使用を停止することをおすすめします。REST 課金 API(OAuth2 ログインを使用)から SDK フローへの切り替えは、フィーチャー トグル操作にすることができるため、ゲームの切り替え中に両方を一定期間共存させることができます。

  13. 購入フローの起動 API 呼び出しはウェブブラウザを介して処理されますか?

    いいえ。購入フローは、ゲーム クライアントを離れることなく、シームレスな WebView オーバーレイを使用してゲーム内で完全に完了するようになりました。

  14. ユーザーは購入を行うために、ゲームごとに個別にログインする必要がありますか?

    Google Play Games のフォアグラウンド アカウントはゲーム セッションごとに使用されるため、再度ログインする必要はありません。ゲーム セッションの開始時に Google Play Games で使用するアカウントは、API 呼び出しが発行されるアカウントです。購入フローでは、このアカウントが自動的に使用されます。

  15. ゲームで PC SDK と以前の支払いシステムの両方を同時にサポートできますか?

    決済システムは、ゲームのバイナリ バージョンに応じてデュアルフロー モデルで動作します。以前のビルドを使用しているユーザーは既存のフローを継続し、新しいビルドを使用しているユーザーは SDK ベースの支払いに移行します。移行期間中は、両方の支払いフローのユーザーが共存します。

Windows App Bundle

  1. サードパーティのランチャーを使用して WAB を送信する場合、審査にゲーム パッケージは必要ですか?

    インストーラを送信するだけで、ゲーム パッケージ全体を送信する必要はありません。審査担当者はインストーラを使用してゲーム パッケージをダウンロードできます。

  2. WAB ファイルのサイズに制限はありますか?

    インストーラの公開では、WAB のファイルサイズを最大 10 GB までアップロードできます。Google Play の管理対象の公開の場合、WAB ファイルの最大サイズは 200 GB です。

  3. WAB をアップロードした後にゲームがインストールされない、または表示されないのはなぜですか?

    既存の PC 版がない状態でゲームがオンボーディングされる場合(「初回 WAB」)、システムによって自動的に管理対象の公開の保留状態にされることがあります。これは、更新する既存のベースラインがないために発生します。WAB を完全にリリースしてゲームをインストールできるようにするには、Google Play Console に移動して、必要な公開アクションを手動で実行する必要があります([変更を公開] をクリックするなど)。

  4. 内部テスト用に WAB をアップロードするにはどうすればよいですか?

    許可リストのアカウントを Google と共有して、Google が内部テスト用に有効にできるようにします。Google は、リストを受け取ると、それらがオンボーディング プロセスに含まれていることを確認します。

  5. WAB パッケージはどこにアップロードすればよいですか?

    WAB パッケージは、最初の質問で説明した場所にアップロードできます。ただし、手動で公開することはできません。Google のバックエンド スタッフに、正確な UTC 時間(時間単位)を提供する必要があります。Google は公開スケジュールを構成し、予定どおりに公開されるようにします。

PC SDK

  1. 以前の API と PC 版 Google Play Games SDK の違いは何ですか?

    • 以前の API では、課金機能のみが提供されます。
    • PC SDK は、Google Desktop Service(GDS)と PC の全機能をサポートしています。
    • PC SDK では、ブラウザベースの Google ログインは必要ありません。
  2. PC 版 Google Play Games を経由せずに、ゲーム ランチャーを使用してゲームを直接起動することで SDK を初期化する別の方法はありますか?

    ゲームは、PC 版 Google Play Games クライアントから起動する必要があります。詳しくは、こちらのデベロッパー向けドキュメントをご覧ください。

  3. PC SDK は、PEM 認証ファイル内のマルチバイト文字をサポートしていますか?

    はい。SDK は、認定用のマルチバイト文字をサポートしています。

  4. SDK は、複数のインスタンスまたはアカウントの Google アカウントへのログインをどのように処理しますか?

    Google Play Games での各ゲームの起動は「ゲーム セッション」として扱われ、各「ゲーム セッション」にはアカウントを関連付けることができます。これらは異なる場合があります。そのため、アカウント A でゲームを起動してから、アカウント B に切り替えて再起動すると、両方のアカウントを同時に実行できます。

  5. Play Install Referrer の統合は PC SDK で機能しますか?

    PC SDK(25.5.409.0 以降)は Play Install Referrer API をサポートしています。詳しくは、Play Install Referrer API をご覧ください。

ランチャー

  1. プレーヤーが Google Play クライアントではなくサードパーティのランチャーを使用している場合、Play Games サービス アカウントは自動的に同期されますか?

    SDK の関数が動作するには、Google Play Games クライアントから直接ゲームを起動する必要があります。インストーラやランチャー アプリケーションなどの別のプロセスがゲームを開始する場合、そのプロセス自体を Google Play Games クライアントから起動する必要があります。ゲームは、クライアントから受信したすべてのパラメータをクライアント プロセスに渡す必要があります。

  2. Google Play Games がサードパーティのゲーム ランチャーを起動する場合、初期化を処理するにはどうすればよいですか?

    SDK をランチャーに直接統合する必要はありません。 ただし、ランチャーが Google Play Games クライアントから受け取ったすべてのコマンドライン引数を、生成された子プロセス(ゲーム実行可能ファイル)に直接渡す必要があります。初期化が失敗した場合(kActionRequiredShutdownClientProcess が返された場合など)、Google Play Games が自動的に復元してゲームを再起動できるように、ランチャーを含むすべてのプロセスを終了する必要があります。詳細については、設定ガイドのステップ 5 をご覧ください。

  3. 製品版のリリース後にゲームとランチャーのアップデートとメンテナンスを行うにはどうすればよいですか?

    以降の更新とメンテナンスは、ランチャーを介して実装する必要があります。Google Play Games クライアントは更新機能をサポートしていないため、ランチャーはゲームとランチャー自体の両方を更新できる必要があります。

  4. インストーラは、自動再生用の GPG セッション トークンをどのように受け取りますか?

    GPG は、--g_session_token=<token> コマンドライン引数を使用してセッション トークンをインストーラに渡します。これを有効にするには、play_publishing_config.xml で acceptsCommandLineArguments="true" を設定する必要があります。

    インストーラは、このトークンを抽出してゲームの起動に使用する役割を担います。トークンの生成に失敗すると、GPG はトークンなしでインストーラを起動します(フォールバック)。

初期化

  1. Google Play Games アプリを使用してゲームを開始すると、Google アカウントの詳細が同期されますか?

    Google Play Games クライアントからゲームを起動すると、アカウントが自動的に同期されるため、Google ログイン プロセスで再度ログインする必要はありません。

  2. 初期化パラメータを複数回再利用することはできますか?

    これは、Google Play Games クライアントが実行されていて、ログイン情報が有効である限り可能です。ただし、このガイドで説明されているようなシナリオでは、ユーザーがゲームを終了したとき、または SDK の初期化エラー(kActionRequiredShutdownClientProcess など)によりゲームが終了したときに、ゲームによって起動されたすべてのプロセスを終了する必要があります。

  3. ゲームを直接開くショートカットを作成する方法はありますか?

    次の URI を使用して、ゲームを直接開くことができます。

    googleplaygames://launch/?pid=2&id=com.company.gamename

    この URI は、PC 版 Google Play Games クライアントが開いているかどうかの検出をサポートしています。クライアントが開いていない場合は、ゲームまたはランチャーが実行される前に Google Play Games クライアントが開きます。複数のインスタンスが実行されないように、ゲームまたはランチャーを管理する必要があります。

  4. SDK を使用せずに PC 版 Google Play Games のインストールを確認する方法はありますか?

    PC 版 Google Play Games のインストール ステータスは、SDK を統合しなくても、次の Windows レジストリ キーの有無を確認することで確認できます。

    HKEY_LOCAL_MACHINE\SOFTWARE\Google\Play Games Services

    このキーが存在する場合、Google Play Games サービス(PC でゲームを実行するために必要)がマシンにインストールされていることを示します。キーがない場合は、PC 版 Google Play Games のインストール ページにユーザーを誘導して、クライアントをダウンロードしてインストールするよう案内する必要があります。

テスト

  1. モバイルと同様のオープンテスト環境またはクローズド テスト環境はありますか?

    専用のエンドツーエンドのサンドボックスは利用できませんが、デベロッパー向けの本番環境に似たテスト環境の必要性は認識しています。より堅牢なソリューションがまもなく提供される予定です。

  2. 新しいテスターを追加するにはどうすればよいですか?

    Google の担当者が、各 PC プロジェクトのメールグループを作成します。このグループに、テスターの Google アカウントを追加する必要があります。このメールグループのメンバーのみが、Google Play Games 内でテスト パッケージをダウンロードする権限を持ちます。

その他

  1. VPN を使用できますか?

    PC 版 Google Play Games がサポートされていない地域でゲームをテストする必要があるデベロッパーは、VPN を使用してサポート対象の地域の IP アドレスを取得することをおすすめします。

    VPN で TUN モードが有効になっていることを確認します。TUN モードを有効にしてファイアウォールを構成する方法については、VPN プロバイダの操作マニュアルをご覧ください。

    TUN モードを有効にしたら、テスト目的で PC 版 Google Play Games とエミュレータをインストールします。

  2. Unity または UE Editor で PC 版 Google Play Games 向けの開発を始めるにはどうすればよいですか?

  3. レジストリキーを正しく使用するにはどうすればよいですか?

    レジストリキーは、ルートハイブに基づいて作成する必要があります。目的とデータの性質に応じて、ルートハイブを HKEY_LOCAL_MACHINE または HKEY_CURRENT_USER に設定できます。ガイドラインでは、HKEY_LOCAL_MACHINE ハイブを例として使用しています。

  4. Google による PC パッケージの審査の要件は何ですか?

    PC パッケージはマルウェア スキャンを受け、その後、審査担当者がゲームのインストール、正常な起動、アンインストールのプロセスのみをテストします。

  5. すべての API を統合する必要がありますか?

    他の API は必須ではありませんが、追加のメリットがあります。google::play::billing は、アプリ内購入とデジタル コンテンツの販売に必要です。google::play::install_referrer は、参照データをトラッキングして、どのトラフィック ソースからアプリをダウンロードするユーザーが最も多いかを把握するために必要です。google::play::games::integrity は、リスクのあるデバイスや不明なエミュレータを検出して、悪意のあるユーザーからアプリを保護するために必要です。

  6. Google Play Games クライアントを閉じると、一部のゲームプロセスが終了し、他のゲームプロセスが終了しないのはなぜですか?

    Google は、実行中のゲームのサブプロセスやプロセスを制御しません。動作は、ゲームがエミュレートされた Android ゲームか PC ゲームかによって異なります。エミュレートされたゲームは独自の環境内にインストールされるため、その動作はエミュレータの初期化とシャットダウンに大きく依存します。

  7. Google Play Games のアンインストール機能とカスタム アンインストーラのどちらを使用すべきですか?

    Google Play Games のアンインストール機能を使用することをおすすめします。

その他のサポート

このよくある質問に記載されていないサポートが必要な場合は、google-play-games-pc@google.com までお問い合わせください。