This document is about: QUANTUM 2
SWITCH TO

Multi-Client Runner

イントロダクション

QuantumのMulti-Client Runnerは、複数のローカルプレイヤーが同じQuantumのルームで一緒にプレイできるようにするための強力なツールです。このツールは、ゲームを毎回ビルドせずにテストやデバッグをおこないたい場合に特に有用です。

必要な設定

正常に稼働するため、Multi-Client Runnerには複数の前提条件が必要です。

以下が整っている点を確認してください:

  • 有効なAppId: Photonウェブサイトのダッシュボードでゲームを登録すれば取得できます。
  • 正しく設定されたPhoton Server Settings。これらの値を調整及び確認するには、ゲームのプロジェクトファイル内のスクリプト可能なオブジェクトを参照してください。
  • ゲームシーンにQuantumMultiClientRunnerがある点を確認してください。

セットアップ

開始するにはQuantumMultiClientRunnerを開き、ゲームシーンにドラッグします。このプレハブはMulti-Client Runnerの実装例です。

runner search screenshot

プレハブをゲームシーンに設定したら、そのゲームシーンを選択してQuantumMultiClientRunnerコンポーネントを表示します。

multi client runner

このコンポーネントでは、設定可能な複数の値があります:

  • MultiClientRunnerを使用するには、標準的なゲームのセットアップに通常含まれるQuantumスクリプトを非有効化する必要があります。たとえばEntityViewUpdaterInputCustomCallbacksなどです。これらのスクリプトを非有効化スクリプトのリストに追加している点を確認してください。
  • 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の使用を開始できます。

ゲームの実行中は、ゲームのウィンドウの左上部にメニューが表示されます。

runner runtime screenshot

このメニューは複数のトグルからなり、ローカルで接続したクライアントを制御できます:

  • 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