Unity Gaming ServicesのCloud Code
Unity Gaming Services (UGS)
には、クラウド上で実行されるサーバーサイドのコードを作成、管理するCloud Codeというサービスがあります。
Cloud Code
を用いることで、デバイス上ではなくUGS
のサーバー上で処理を実行できるため、
データの一貫性を保ったり不正を防ぐのに役に立ちます。
Cloud Code
は、Remote Config
、Cloud Save
、Leaderboards
など、他のUGS
機能と連動できます。
Cloud Codeを使用するための準備
UnityEditor
上で Package Manager
を開き、以下の手順で Cloud Code
をインストールします。
- 左側の雲のアイコンを選択します。
UGS
のパッケージ一覧からCloud Code
を選択します。Install
をクリックします。
インストールが完了すると、Project Settings
のServices
内に
Cloud Code
が追加されます。
「Go to Dashboard
」を押すと、ブラウザで Unity Cloud
の Cloud Code
管理画面を開けます。
Cloud Codeで出来ること
不正(チート)対策
クライアント側に処理があると改竄される場合があります。
クラウド上にロジックがあることで改竄は難しくなります。
ゲーム内通貨を操作する処理はサーバーサイドにあると安全性が増します。
集中的な処理の管理
よくあるガチャのような機能、
複数のユーザーに影響する様な機能、
などはクラウド側で実装しクライアント側へは結果を返すだけ、といった実装が出来ます。
他のUGSサービスとの連携
ゲーム内通貨を扱ったり、
CloudSave
の内容を調査したり、ランキングを操作したりなどの処理も記述できます。
Cloud Code上のスクリプト
UnityEditor
上のスクリプトはC#
で記述しますが、
Cloud Code
上はC#
モジュールを用意するかJavaScript
で記述することになります。
C#
モジュールは準備がいるので、今回はJavaScript
で解説したいと思います。
JSスクリプトの追加
Dashboard
へアクセスし、Cloud Code
を選択します。
JS
スクリプトを選択します。
Create your first script
を選択します。
ScriptName
を入力します。
Template
は任意で選択しますが、今回はサンプルとしてRoll a Dice
を選択します。
次にNext
を押します。
JavaScript
に渡したいパラメータがある場合は、Add Parameter
から追加出来ます。
必要に応じて追加してください。
次にAdd
を押します。
これでJavaScript
の追加は完了です。
追加されたスクリプトを確認する
以下の様なスクリプトが作成されました。
Run
ボタンを押すと実行することができます。
実行してみると、Response
の部分に結果が表示されます。
このサンプルでは、6面サイコロを振って1が出た、という結果になっています。
問題なければ右上のPublish Version
を押します。
これでスクリプトが公開され、Unity
側から呼び出すことができるようになります。
Unity側から呼び出してみる
以下のスクリプトを用意し、ボタンが押された時にSample
スクリプトを呼ぶようにしました。
public class CloudCodeTest : MonoBehaviour
{
[SerializeField] private Button _runButton;
public class DiceResult
{
public string roll;
public string sides;
}
private void Awake()
{
_runButton.onClick.AddListener(() => RunCloudCode());
}
private void OnDestroy()
{
_runButton.onClick.RemoveAllListeners();
}
private async Task RunCloudCode()
{
var result = await CloudCodeService.Instance.CallEndpointAsync<DiceResult>("Sample");
Debug.Log(result.roll);
Debug.Log(result.sides);
}
}
Sample
スクリプトはJSON
形式で結果を返しているので、DiceResult
というクラスを用意し、
CallEndpointAsync
メソッドに指定することで結果を受け取っています。
ダッシュボード上で実行した時と同様に、roll
とsides
の値を取得できました。
まとめ
今回はCloudCode
について簡単に解説しました。
CloudCode
上にロジックを実装することで改竄や不正を防いだり、他のUGS
サービスと連動する処理を実装しやすくなります。
一方で普段C#
でスクリプトを書いている場合、急にJavaScript
で記述しないといけなくなると少し敷居が高いかもしれません。
どうしてもC#
で記述したい場合はC#
モジュールに挑戦してみてください。
今回は簡単なサンプルでしたが、ソーシャルゲームでよくあるガチャやログインボーナスのような機能を
作成することもできるでしょう。
もしやってみようと思ったらこちらの記事が参考になるか分かりませんが、挑戦してみてください。
📣おしらせ!
Unity Asset Storeでサマーセールが開催中です。