構成と選び方
relay・sync・stateMachine の違い、選び方、開発の流れ
GS2-Realtime には、ルームのサーバーが何をするかによって 3 つのサーバータイプがあります。このページでは、どれを選ぶかと、選んだ後に何を作るかを説明します。
サーバータイプ
serverType | サーバーがすること | ゲーム側で作るもの | 向いているゲーム |
|---|---|---|---|
relay | メッセージを、指定したプレイヤーや全員へ中継する | メッセージの形式と、受け取った後の処理 | 独自の通信を自由に設計したい |
sync | オブジェクトの状態を全員に配信し、誰が書き換えられるかを管理する | 表示用の Prefab と、操作する処理 | 位置や状態を共有したい |
stateMachine | sync の機能に加え、登録したルールでオブジェクトを生成・更新する | sync の内容に加え、C# で書くルール | 敵の行動や HP、バトルの進行をサーバーで決めたい |
stateMachine では、HP の計算や攻撃の可否をサーバーが決めるので、クライアントの改造で結果を書き換えられません。複数のプレイヤーが同時に操作しても、サーバーが順番に処理するので、全員に同じ結果が表示されます。
選び方
Realtime のネームスペース設定の serverType で選びます。
- 独自のメッセージを参加者に届けたいだけなら、
relayを選びます。 - オブジェクトの位置や状態を共有したいなら、
syncを選びます。 - それに加えて、敵の行動やゲームの進行をサーバーで管理したいなら、
stateMachineを選びます。
relay の使い方は GS2-Realtime の紹介を参照してください。
stateMachine の開発の流れ
| 手順 | 作るもの | 説明するページ |
|---|---|---|
| 1. ルールを書く | 敵の生成、操作の検証、時間経過の処理を書いた C# | ルーム定義リファレンス |
| 2. 生成する | ルール(GSL)と、Unity 用の同期スキーマ | 生成と登録 |
| 3. 登録する | GS2-StateMachine への登録と、Realtime のネームスペース設定 | 生成と登録 |
| 4. Unity で表示する | Prefab、NetworkWorld、接続の処理 | Unity クライアント |
C# で書いたルールは GSL に変換され、ルームの中で実行されます。C# のコードがそのままサーバーで動くわけではないので、使える C# の範囲に決まりがあります。
ページの案内
| やりたいこと | ページ |
|---|---|
| まず一通り動かしてみたい | チュートリアル: サーバーで HP を管理する敵を作る |
| Unity での設定や API を調べたい | Unity クライアント |
| ルールの書き方や上限値を調べたい | ルーム定義リファレンス |
| C# の記述形式(状態、Step、使える構文)を調べたい | C# 定義リファレンス |
| Photon(PUN2)から移行したい | Photon からの移行ガイド |