このドキュメントでは、PC 版 Google Play Games 向け SDK とパブリッシングに関するよくある質問に回答します。
VPN を追加するにはどうすればよいですか?
PC 版 Google Play Games がサポートされていない地域でゲームをテストする必要があるデベロッパーには、VPN を使用してサポートされている地域の IP アドレスを取得することをおすすめします。
VPN で TUN モードが有効になっていることを確認します。 TUN モードを有効にしてファイアウォールを構成する手順については、VPN プロバイダの取扱説明書をご覧ください。
TUN モードを有効にしたら、テスト目的で PC 版 Google Play Games とエミュレータをインストールします。
バックエンド サーバーなしで購入フローを使用できますか?
セキュリティの観点から見ると、バックエンド サーバーなしの処理は一般的に推奨されません。
詳細については、バックエンド サーバーのないプロセスをご覧ください。
Unity または UE エディタで PC 版 Google Play Games 向けの開発を始めるにはどうすればよいですか?
- デベロッパー モードを有効にして、テストに進みます。
manifest.xmlファイルと.dllファイルを追加します。詳細については、デベロッパー向けドキュメントをご覧ください。- テスト用に早期アクセス パートナーの GUID を登録します。
Google Play Games アプリを使用してゲームを開始すると、Google アカウントの詳細が同期されますか?
Google Play Games クライアントからゲームを起動すると、アカウントが自動的に同期されるため、Google ログイン プロセスで再度ログインする必要はありません。
サードパーティ製ランチャーを使用して Windows App Bundle(WAB)を送信する場合、審査にゲーム パッケージは必要ですか?
インストーラを送信するだけで、ゲーム パッケージ全体を送信する必要はありません。審査担当者はインストーラを使用してゲーム パッケージをダウンロードできます。
プレーヤーが Google Play クライアントではなくサードパーティ製ランチャーを使用している場合、Play Games サービス アカウントは自動的に同期されますか?
SDK 関数を動作させるには、Google Play Games クライアントから直接ゲームを起動する必要があります。インストーラやランチャー アプリケーションなどの別のプロセスがゲームを開始する場合、そのプロセス自体が Google Play Games クライアントから起動される必要があります。ゲームは、クライアントから受け取ったすべてのパラメータをクライアント プロセスに渡す必要があります。
SDK は、複数のインスタンスまたはアカウントの Google アカウント ログインをどのように処理しますか?
Google Play Games での各ゲームの起動は「ゲーム セッション」として扱われ、各「ゲーム セッション」にはアカウントを関連付けることができます。これらは異なる場合があります。たとえば、アカウント A でゲームを起動してからアカウント B に切り替えて再起動すると、両方を同時に実行できます。
WAB(Windows App Bundle)ファイルのサイズに制限はありますか?
WAB には最大 10 GB のファイルをアップロードできます。
PC 版 Google Play Games SDK を統合した後も、既存の API ベースの決済システムは許可されますか?
すべての支払いは、Google Play 請求サービスを使用して PC 版 Google Play Games SDK で処理する必要があります。既存の API ベースのお支払い方法を同じゲームで使用することはできません。
モバイルと同様のオープンテスト環境またはクローズド テスト環境はありますか?
現在、専用のエンドツーエンド サンドボックスは利用できませんが、デベロッパー向けの本番環境のようなテスト環境の必要性は認識しています。より堅牢なソリューションをまもなく提供する予定です。
デベロッパー モードで開始された購入を正しく消費できない。
デベロッパー モードでの購入の消費は 3 分以内に行う必要があります。それ以外の場合、購入が払い戻されている可能性があります。
API(以前のバージョン)と PC 版 Google Play Games SDK の違いはありますか?
- 以前のバージョンは課金のみに重点を置いています
- SDK は Google Desktop Service(GDS)と PC のすべての機能をサポートします
- デベロッパー向けの SDK インターフェース
- ブラウザベースの Google ログインは不要
PC 版 Google Play Games を介さずに、ゲーム ランチャーを使用してゲームを直接起動して SDK を初期化する別の方法はありますか?
ゲームは PC 版 Google Play Games クライアントから起動する必要があります。詳しくは、デベロッパー向けドキュメントをご覧ください。
定期的なお支払いや定期購入はサポートされていません。今後実装する予定はありますか?
アプリ内購入以外の購入オプションを追加する予定はありません。具体的なユースケースに関するフィードバックをお待ちしております。
billingerror は、購入フローの開始から発生したのか、支払い結果から発生したのか。
支払い結果のレスポンスです。LaunchPurchaseFlow はブロックせずにすぐに戻りますが、完了したタイミングを把握して結果を取得するには、コールバックをリッスンする必要があります。
ゲームを直接開くショートカットを作成する方法はありますか?
ゲームを直接開くには、次の URI を使用できます。
googleplaygames://launch/?pid=2&id=com.company.gamename
URI は、PC 版 Google Play Games クライアントが開いているかどうかを検出するのに役立ちます。クライアントが開いていない場合は、ゲーム/ランチャーが実行される前に Google Play Games クライアントが開きます。複数のインスタンスが実行されないように、ゲーム/ランチャーを管理する必要があります。
QueryProductDetails API リクエストの上限
QueryProductDetails API への 1 回の呼び出しでクエリできる商品の最大数は 50 個です。この上限を超える場合は、リクエストを複数の呼び出しに分割する必要があります。
最初の Windows App Bundle(WAB)をアップロードした後、ゲームがインストールされない、または表示されないのはなぜですか?
既存の PC 版がない状態でゲームをオンボーディングする場合(「初回 WAB」)、システムによって管理対象の公開の保留状態に自動的に配置されることがあります。これは、更新する既存のベースラインがないためです。WAB を完全にリリースしてゲームをインストール可能にするには、Google Play Console に移動して、必要な公開アクションを手動で実行する必要があります(たとえば、[変更を公開] をクリックします)。
Google Play Games がサードパーティ製ゲーム ランチャーを起動した場合、初期化はどのように処理されますか?
SDK をランチャーに直接統合する必要はありません。ただし、ランチャーが Google Play Games クライアントから受け取ったすべてのコマンドライン引数を、生成された子プロセス(ゲーム実行可能ファイル)に直接渡す必要があります。初期化が失敗した場合(kActionRequiredShutdownClientProcess を返すなど)、ランチャーを含むすべてのプロセスを終了する必要があります。これにより、Google Play Games が自動的に復元を試み、ゲームを再起動できます。詳しくは、設定ガイドのステップ 5 をご覧ください。
購入フローでユーザーが支払いをせずにブラウザを閉じた場合、タイムアウト エラーが発生するのは仕様ですか?
はい。これは既知の問題であり、現在のブラウザベースのフローでは意図された動作です。Google は、ゲーム内で決済フローを維持し、このタイムアウトの不便さを解消するシームレスな購入機能(WebView ベース)を積極的に開発しています。
ネイティブ PC SDK は、認証ファイル(PEM)のマルチバイト文字をサポートしていますか?
はい。SDK は認証用のマルチバイト文字をサポートしています。
BillingClient::QueryPurchases または BillingClient::LaunchPurchaseFlow を呼び出すときに必要なパラメータは何ですか?
この関数は、std::function<void(QueryPurchasesResult)> シグネチャを持つ関数コールバックである QueryPurchasesContinuation を受け取ります。コールバックは、すべての ProductPurchaseDetails を含む結果を渡します。この情報は、includes/billing/models.h ファイルの SDK ヘッダー ファイルで確認できます。
結果の launch_purchase_flow_result には、ok() 関数と code() 関数があります。ok() 関数は、フローが成功したかどうかを返します。code() 関数は、ユーザーがキャンセルした、ネットワーク エラーなどの 10 個のエラーケースがある BillingError 列挙型(includes/billing/enums.h)を返します。
BillingClient::LaunchPurchaseFlow() の呼び出しでカスタム注文番号を渡すことはできますか?
現在の SDK の設計では、独自のペイロードを渡す方法はありません。ただし、obfuscated_account_id と obfuscated_profile_id は任意に組み合わせて指定できます。どちらも指定しない、1 つだけ指定する、両方指定する、のいずれかを選択できます。
offer_token フィールドは必須であり、ユーザーが購入手続きのフローで購入しようとしている購入特典を指定します。現時点では、Google Play の各 SKU には 1 つの特典(1 つのアイテムを 10 ドルで購入するなど)が設定されています。今後、Google Play のお支払いチームは複数の提案をサポートする予定です。
購入フローが中断されてもメタデータが関連付けられるようにするために、購入ダイアログを起動する前にバックエンド サーバーにメタデータを保存し、ユーザーのアカウント ID、購入しようとしている SKU、現在のタイムスタンプにメタデータを関連付けます。詳しくは、購入を社内データに関連付けるをご覧ください。
Play のインストール リファラーの統合は機能していますか?
SDK の最新バージョン(25.5.409.0 以降)は、Play Install Referrer API をサポートしています。詳しくは、Play Install Referrer API をご覧ください。
購入するには、ゲームごとに個別にログインする必要がありますか?
Google Play Games のフォアグラウンド アカウントは各ゲーム セッションで使用されるため、再度ログインする必要はありません。ゲーム セッションの開始時に Google Play Games で使用するアカウントは、API 呼び出しが発行されるアカウントです。ブラウザで購入フローを開始する場合は、ゲーム セッションと同じアカウントでログインして使用する必要があります。別のアカウントでログインしている場合は、アカウントを切り替えるよう求めるウェブフローが表示されます。
OAuth を使用した Google 請求から DLL を使用したネイティブの Google 請求に切り替えるための前提条件は何ですか?
ゲームでは、引き続き Google で OAuth ログインを使用してログイン済みアカウントを管理できますが、以前の REST 請求 API の使用を停止することをおすすめします。REST 課金 API(OAuth2 ログインを使用)から SDK フローへの切り替えは、機能フラグ付きのオペレーションにすることができます。これにより、ゲームの切り替え期間中は両方を共存させることができます。
支払いリクエスト API(LaunchPurchaseFlow)はウェブブラウザで処理されますか?
はい。現時点ではブラウザで処理されます。Google は、SDK を通じてゲームを離れることなく達成できるフロー全体を完了する予定です。
初期化パラメータを複数回再利用することはできますか?
これは、Google Play Games クライアントが実行中で、ログイン情報が有効である限り可能です。ただし、ガイドで説明されているシナリオのように、ユーザーがゲームを閉じたり、kActionRequiredShutdownClientProcess などの SDK の初期化の失敗によりゲームが終了したりした場合は、ゲームによって起動されたすべてのプロセスを終了する必要があります。
HKEY_LOCAL_MACHINE の代わりに HKEY_CURRENT_USER のレジストリキーを使用できますか?
ルートハイブに基づいてレジストリキーを作成する必要があります。目的とデータの性質に応じて、ルートハイブを HKEY_LOCAL_MACHINE または HKEY_CURRENT_USER に設定できます。ガイドラインでは、HKEY_LOCAL_MACHINE ハイブを例として使用しています。
ゲームでネイティブ SDK と以前の決済システムの両方を同時にサポートできますか?
支払いシステムは、ゲームのバイナリ バージョンに応じてデュアルフロー モデルで動作します。以前のビルドのユーザーは既存のフローを継続し、新しいビルドのユーザーは SDK ベースの支払いに移行します。移行期間中は、両方の支払いフローのユーザーが共存します。
内部テスト用に WAB をアップロードするにはどうすればよいですか?
許可リストに登録されたアカウントを Google と共有して、Google が内部テストでそれらのアカウントを有効にできるようにします。Google がリストを受け取ったら、オンボーディング プロセスにそれらのユーザーが含まれるようにします。
新しいテスターはどこで追加できますか?
Google の担当者が、各 PC プロジェクトのメールグループを作成します。このグループには、テスターの Google アカウントを追加する必要があります。このメールグループのメンバーのみが、Google Play Games 内でテスト パッケージをダウンロードできます。
正式なリリース前に、公式の PC パッケージをどこにアップロードする必要がありますか?
WAB パッケージは、最初の質問で説明した場所にアップロードできます。ただし、手動で公開することはできません。Google のバックエンド スタッフに正確な UTC 時間(時間単位まで)を提供する必要があります。Google は公開スケジュールを設定し、予定どおりに公開されるようにします。
正式リリース後のアップグレードとメンテナンスはどのように処理されますか?
以降のアップグレードとメンテナンスは、ランチャーを通じて実装する必要があります。Google Play Games クライアントは更新機能をサポートしていないため、ランチャーはゲームとランチャー自体を更新できる必要があります。
PC パッケージの Google による審査の要件は何ですか?
PC パッケージはマルウェア スキャンを受け、その後、審査担当者はゲームのインストール、起動、アンインストールのプロセスのみをテストします。
すべての API を統合する必要がありますか?
他の API は必須ではありませんが、追加のメリットがあります。アプリ内購入とデジタル コンテンツの販売には google::play::billing が必要です。google::play::games::recall は、リファラ データをトラッキングして、どのトラフィック ソースから最も多くのユーザーがアプリをダウンロードしているかを把握するために必要です。google::play::games::integrity は、潜在的に危険なデバイスや不明なエミュレータを検出して、悪意のあるユーザーからアプリを保護するために必要です。
Google Play Games クライアントを閉じると、一部のゲーム プロセスは終了するのに、他のゲーム プロセスは終了しないのはなぜですか?
Google は、実行中のゲームのサブプロセスやプロセスを制御しません。動作は、ゲームが Android エミュレート ゲームかネイティブ PC ゲームかによって異なります。エミュレートされたゲームは独自の環境内にインストールされるため、その動作は主にエミュレータの初期化とシャットダウンに依存します。
Google Play Games のアンインストール機能を使用すべきか、カスタム アンインストーラを使用すべきか
Google は、Google Play Games のアンインストール機能を使用することをおすすめします。