主要概念
使用を始める前に、Unity Gaming Services の基盤となるいくつかの主要概念を理解しておきましょう。
サーバー側ゲームシステム
ライブゲーム、特にマルチプレイヤー形式のライブゲームでは、単一の場所でプレイヤーデータを管理できることが重要です。各プレイヤーのデバイスでそのプレイヤーのデータを管理するのではなく、すべてのプレイヤーデバイスと通信する中央サーバーで、ゲームに関する重要な決定を処理します。これにより、プレイヤーが不当に利益を得たり、本来は購入または獲得する必要があるリソースを取得したりできるチート行為を抑制できます。同様に、ライブイベントや競争機能をすべてのプレイヤーに公平に提供するには、ゲームによりクラウド内でデータや意思決定を管理する必要があります。
Unity Gaming Services では以下を行えます。
- Cloud Save サービスを使用して、プレイヤーデータをクラウド内で安全に保持する。
- Economy サービスおよび Cloud Code サービスを使用して、クラウド内で経済ロジックとゲームロジックを実行する。
非同期コード
他のオンラインサービスと同様に、Unity Gaming Services はすべて非同期操作に基づいています。したがって、クライアントからサービスへのリクエストが行われた場合でも、ゲームが応答を待って停止することはありません。サービスリクエストはバックグラウンドで処理され、その間もゲームプレイ、UI、およびアニメーションは継続できます。
このため、Unity Gaming Services ではタスクベース非同期パターン (TAP) を使用しており、C# で比較的容易に非同期コードを記述できます。Unity のコード作成に慣れている方であれば、非同期ロジックに使用できるコルーチンもご存じでしょう。コルーチンは、フォアグラウンドで行われている処理の制御には役立ちますが、バックグラウンドで行われる処理 (ウェブリクエストなど) を管理するには非同期タスクの方が適しています。
この UGS ドキュメントでは、さまざまなところで async
および await
というキーワードを使用します。async
メソッドは、進行中のプロセスを表す Task
を返します。await
キーワードは、呼び出し元に対し、呼び出された async
メソッドが終了するまで待機してから続行するよう指示します。
例えば、プレイヤーの通貨データを更新するには、以下のようなコードを使用します。
async Task RefreshPlayerWallet()
{
// Use an animation to show the player something is happening.
waitIndicator.gameObject.SetActive(true);
// Download this player's currency statuses from UGS;
// this asynchronous task won't interrupt the animation.
var newWalletData = await EconomyManager.RefreshWalletData();
// Once you have the downloaded data, update your UI.
walletView.Refresh(newWalletData);
waitIndicator.gameObject.SetActive(false);
}
詳細については、Microsoft の 非同期プログラミングに関する概念ガイド を参照してください。
SDK API と REST API
Unity Gaming Services にプログラムでアクセスする方法は次の 2 つです。
- SDK (クライアント) API
- REST (ウェブ) API
クライアント API
Unity ゲームエンジンで Unity Gaming Services を使用する場合、プロジェクトにクライアント API を使用することをお勧めします。
クライアント API を使用すると、Unity エディターのコンテキスト内で、サポート対象言語 (C#) から Unity Gaming Services API にアクセスしやすくなります。Unity 開発者は、Unity パッケージ で、サービスのすべての機能にアクセスできます。これらの SDK は Unity プロジェクトに直接インストールされ、必要な C# API ライブラリすべてを提供します。クライアント API により、ワークフローを簡略化し、作成する必要があるコードの量を大幅に抑えられます。
ウェブ API
Made with Unity 以外の開発者は、ウェブエンドポイントを介した Unity Gaming Services API、つまり REST API にアクセスできます。REST API はより柔軟性があり、開発者は好みの言語やゲームエンジンを使用してワークフローを自動化することができます。
オンボーディングへの影響
SDK API と REST API のどちらを使用する場合でも、Unity Cloud Dashboard で プロジェクトを作成 する必要があります。ただし、REST API を使用する場合、使用の準備ガイド のその後の手順が少し異なる可能性があります。これに該当するお客様は、オンボーディングの際に、サービス API ドキュメントのウェブサイト を参照することをお勧めします。