構成と選び方

relay・sync・stateMachine の違い、選び方、開発の流れ

GS2-Realtime には、ルームのサーバーが何をするかによって 3 つのサーバータイプがあります。このページでは、どれを選ぶかと、選んだ後に何を作るかを説明します。

サーバータイプ

serverTypeサーバーがすることゲーム側で作るもの向いているゲーム
relayメッセージを、指定したプレイヤーや全員へ中継するメッセージの形式と、受け取った後の処理独自の通信を自由に設計したい
syncオブジェクトの状態を全員に配信し、誰が書き換えられるかを管理する表示用の Prefab と、操作する処理位置や状態を共有したい
stateMachinesync の機能に加え、登録したルールでオブジェクトを生成・更新する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 からの移行ガイド