主要概念

使用を始める前に、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 ドキュメントのウェブサイト を参照することをお勧めします。