Google Play Games C++ SDK

概要

組織

Play Games サービス機能のメインのエントリ ポイントは GameServices クラスです。GameServices インスタンスは GameServices::Builder で作成します。GameServices をご覧ください。

GameServices セッション全体の状態にアクセスまたは変更を加えるメソッドは、GameServices クラス自体に存在します。

その他の機能は、機能ごとのマネージャーのセットを介して間接的に呼び出されます。これらのマネージャーは関連する機能をグループ化します。マネージャー自体にはユーザーに表示される状態は含まれません。Manager は参照渡しで返され、そのライフサイクルは、それを含む GameServices インスタンスによって制御されます。そのため、クライアント コードでは、マネージャーの参照を保持せず、代わりに GameServices インスタンスを保持する必要があります。管理者をご覧ください。

データは、変更不能な値型のオブジェクトを介して返されます。クエリが行われた場合、その時点におけるデータに基づく一貫したビューがこれらの値に反映されます。値の型をご覧ください。

スレッドモデル

特に記載のない限り、すべての GameServices メソッドと Manager メソッドはスレッドセーフで非同期です。外部ロックを行わず、どのスレッドでも呼び出すことが可能で、呼び出された順に実行されます。一般に、ミュータタ メソッド(状態を変更するメソッド)はファイア アンド フォーゲット モデルを使用します。状態を読み取る Accessor メソッドには、主に 2 種類のバリアントがあります。最初のバリエーション(GetProperty など)は、指定されたコールバックに非同期で結果を返します。2 番目のバリエーション(GetPropertyBlocking など)は、呼び出し元のスレッドに同期で結果を返します。アクセサは、以前に呼び出されたすべてのミューテータの結果を参照します。ただし、ミューテータがリモートの Game Services の状態を変更したかどうかは、特定の時点ではわかりません。

すべてのユーザー コールバック(アクセサラ メソッドへの引数として指定されたワンショット コールバック、または GameServices のビルド時に構成された再利用可能なコールバック)は、専用のコールバック スレッドで呼び出されます。このスレッドは、「メインスレッド」または「UI スレッド」のようなプラットフォームのコンセプトとは異なることがあります。処理の滞ったコールバック スレッドは、ユーザーが感知するような問題(たとえば、ログアウト リクエストの完了の遅延)を引き起こす可能性があるため、ユーザーのコールバックはすみやかに実行する必要があります。

不変の値型のプロパティは、ブロックすることなく同期的に使用できます。