Multi-Client Runner
イントロダクション
QuantumのMulti-Client Runnerは、複数のローカルプレイヤーが同じQuantumのルームで一緒にプレイできるようにするための強力なツールです。このツールは、ゲームを毎回ビルドせずにテストやデバッグをおこないたい場合に特に有用です。
必要な設定
正常に稼働するため、Multi-Client Runnerには複数の前提条件が必要です。
以下が整っている点を確認してください:
- 有効なAppId: Photonウェブサイトのダッシュボードでゲームを登録すれば取得できます。
- 正しく設定された
Photon Server Settings
。これらの値を調整及び確認するには、ゲームのプロジェクトファイル内のスクリプト可能なオブジェクトを参照してください。 - ゲームシーンに
QuantumMultiClientRunner
がある点を確認してください。
セットアップ
開始するにはQuantumMultiClientRunner
を開き、ゲームシーンにドラッグします。このプレハブはMulti-Client Runnerの実装例です。
プレハブをゲームシーンに設定したら、そのゲームシーンを選択してQuantumMultiClientRunner
コンポーネントを表示します。
このコンポーネントでは、設定可能な複数の値があります:
- MultiClientRunnerを使用するには、標準的なゲームのセットアップに通常含まれるQuantumスクリプトを非有効化する必要があります。たとえば
EntityViewUpdater
、Input
、CustomCallbacks
などです。これらのスクリプトを非有効化スクリプトのリストに追加している点を確認してください。 EditorSettings
: 最初のクライアント以降のすべての追加クライアントに、デフォルトでないエディター設定を提供するオプションがあります。たとえば、ギズモの色を変更するなどです。AppSettings
: オプションで、デフォルトでないサーバーアプリ設定を設定できます。たとえば、通常と異なるリージョンなどです。RuntimeConfig
: オプションのカスタムランタイム設定。PlayerCount
: 最大プレイヤー数。InitialPlayerCount
: ゲーム開始時のプレイヤー数。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
の新たなインスタンスが各クライアントに作成されます。
プレイ
セットアップが完了したら、MultiClient Runnerの使用を開始できます。
ゲームの実行中は、ゲームのウィンドウの左上部にメニューが表示されます。
このメニューは複数のトグルからなり、ローカルで接続したクライアントを制御できます:
New Client
オンラインクライアントを追加しますI
クライアントの入力を切り替えますV
クライアントのビューを切り替えますG
クライアントのギズモを切り替えますX
クライアントを切断します
複数クライアントを一度に制御するため、同時に複数の切替を行うことも可能です。
コードサンプル
Multi-Client Runnerのメソッドは、ユーザーコードでも制御可能です。
C#
public void CreateNewLocalClient()
{
var multiclient = FindObjectOfType<QuantumMultiClientRunner>();
// initializes a new local player
multiclient.CreateNewPlayer();
}
public void ShutDownLocalClient()
{
// find the instance you want to shut down
var player = FindObjectOfType<QuantumMultiClientPlayer>();
// stops the local player instance
player.Stop();
}
Back to top