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