This page has not been upgraded to Quantum 3.0 yet. The information may be out of date.
マルチクライアントランナー
はじめに
Quantumのマルチクライアントランナーは、複数のローカルプレイヤーを同じQuantumルームで一緒にプレイさせることができる強力なツールです。ゲームを毎回ビルドすることなくテストやデバッグを行いたい開発者にとっては、特に便利なツールです。
必要な設定
マルチクライアントランナーを正しく動作させるためには、いくつかの前提条件が必要です。
以下の項目を確認してください。
- 有効なAppId:Photonウェブサイトのダッシュボードから、ゲームを登録して取得できます。
- 正しく構成された
Photon Server Settings:ゲームのプロジェクトファイル中のScriptableObjectから、値を調整したり確認したりします。 QuantumMultiClientRunnerプレハブ:これがゲームシーン内にあることを確認します。
セットアップ
まずQuantumMultiClientRunnerプレハブをゲームシーンにドラッグします。このプレハブは、マルチクライアントランナーの実装例になっています。
プレハブをゲームシーンに配置したら、QuantumMultiClientRunnerコンポーネントを選択して、インスペクターに表示します。
このコンポーネントには、設定可能な値がいくつか存在します。
DisableOnStart:MultiClientRunnerを利用する際は、通常のセットアップに含まれるQuantumスクリプト(EntityViewUpdater・Input・CustomCallbakcsなど)を無効にする必要があります。これらスクリプトを、無効にするスクリプトのリストに追加してください。EditorSettings:最初のクライアント以降に追加されるクライアントに対して、デフォルト以外のEditorSettings(例:ギズモの色を変更する)を与えることができます。AppSettings:オプションとして、デフォルト以外のServerAppSettings(例:通常とは異なるリージョンを指定する)を与えることができます。RuntimeConfig:オプションとして、カスタムのRuntimeConfigを与えます。PlayerCount:最大プレイヤー数です。InitialPlayerCount:ゲームを開始する際のプレイヤー数です。RuntimePlayer[]:オプションとして、カスタムのRuntimePlayer設定を与えます。PlayerInputTemplate:各クライアントでインスタンス化されるプレイヤー入力テンプレートです。ここには、Unityのメッセージ/メソッドvoid PollInput(CallbackPollInput c)を実装したUnityスクリプトを含む必要があります。正しくスクリプトの実装例は以下の通りです。
C#
public void PollInput(CallbackPollInput callback)
{
Quantum.Input i = new Quantum.Input();
var direction = new Vector3();
direction.x = UnityEngine.Input.GetAxisRaw("Horizontal");
direction.y = UnityEngine.Input.GetAxisRaw("Vertical");
i.Jump = UnityEngine.Input.GetKeyDown(KeyCode.Space);
// convert to fixed point.
i.Direction = direction.ToFPVector3();
callback.SetInput(i, DeterministicInputFlags.Repeatable);
}
EntityViewUpdater:各クライアントでインスタンス化されるカスタムのEntityViewUpdaterゲームオブジェクトです。指定がない場合は、各クライアントでデフォルトのEntityViewUpdaterの新しいインスタンスが作成されます。
実行
セットアップが完了したら、マルチクライアントランナーを使用する準備は整いました。
ゲームが実行されると、ゲームウィンドウの左上にメニューが表示されます。
このトグルメニューから、ローカルクライアントを制御することができます。
New Client:オンラインクライアントを追加するI:クライアントの入力を切り替えるV:クライアントのビューを切り替えるG:クライアントのギズモを切り替えるX:クライアントを切断する
同時に複数のトグルを切り替えることで、複数のクライアントを一度に制御することもできます。
コード例
マルチクライアントランナーのメソッドは、コードからも制御できます。
C#
public void CreateNewLocalClient()
{
var multiclient = FindObjectOfType<QuantumMultiClientRunner>();
// 新しいローカルプレイヤーをインスタンス化する
multiclient.CreateNewPlayer();
}
public void ShutDownLocalClient()
{
// シャットダウンしたいインスタンスを探す
var player = FindObjectOfType<QuantumMultiClientPlayer>();
// ローカルプレイヤーインスタンスを停止する
player.Stop();
}
Back to top