This document is about: QUANTUM 2
SWITCH TO

Quantum 105 - Multiplayer

概要

この時点で、Gameシーンでプレイモードに入ることで、一人用のゲームとしてプレイすることができます。このようなゲームプレイを高品質なマルチプレイヤーゲームにするのは、通常非常に困難です。では、どのようにマルチプレイヤーを追加していくのでしょうか?

実は、マルチプレイヤー・サポートは最初から備わっているのです! Quantum では、ゲームプレイのコードを書くことに集中するだけで、Quantum エンジンがそれをマルチプレイヤーに変えてくれます。
あとは、プレイヤーがオンラインでゲームに参加できるようにするためのメニューシーンを素早くフックするだけです。

メニューシーン

Photon/QuantumDemo/Menu/ フォルダにある Menu シーンを開いてください。メニューシーンはサンプルシーンで、ロビーシステムなど、Quantumのオンラインゲームに必要な機能が全て揃っています。

The Menu scene
メニューシーン

カスタムコールバック

シーン内の QuantumCallbacks GameObject にある CustomCallbacks スクリプトを開いてください。このスクリプトはデバッグランナーと同様にQuantumセッションにプレイヤーデータを注入しますが、オンラインセッションのためのものです。

カスタムプレイヤーデータを注入するために、コードを以下のように調整します。

C#

using Quantum;
using UnityEngine;

public class CustomCallbacks : QuantumCallbacks {

  public RuntimePlayer PlayerData;

  public override void OnGameStart(Quantum.QuantumGame game) {
    // IsPaused is true when a player late joins or reconnects to a room.
    // This prevents the spawning of another player object when reconnecting.
    if (game.Session.IsPaused) return;

    foreach (var localPlayer in game.GetLocalPlayers()) {
      Debug.Log("CustomCallbacks - sending player: " + localPlayer);
      game.SendPlayerData(localPlayer, PlayerData);
    }
  }

  public override void OnGameResync(Quantum.QuantumGame game)
  {
    // OnGameResync is called when a player reconnects.
    Debug.Log("Detected Resync. Verified tick: " + game.Frames.Verified.Number);
  }
}

Unity エディタに戻り、キャラクタープロトタイプを CustomCallbacks コンポーネントの CharacterPrototype フィールドにドロップします。

オンラインプレイ

次に、オンラインプレイをテストするためにプレイヤーを構築します。

まず、Edit > ProjectSettings > Player > Resolution and Presentationに行き、Fullscreen ModeをWindowedに変更します。次に、File > Build Settings に移動してビルドを作成します。

ビルドされたアプリケーションを起動し、エディターでプレイモードに入り、ゲームのインスタンスを2つ起動します。ゲーム内の名前欄でそれぞれのクライアントに固有の名前を付け、Play Onlineを押してください。両方のクライアントが同じロビーに表示されるのが見えます。マスタークライアントで "Start Game "を押してゲームを開始します。2人のプレイヤーキャラクターが生成され、それぞれのインスタンスがプレイヤーキャラクターを操作しています。

Two clients playing the game

備考: クライアントが遠く離れたリージョン(ドイツからアメリカ東部まで)に接続されていても、ゲームプレイは完璧に反応し、クライアントに遅延の兆候は見えません。これは、Quantumの決定論的ロールバックネットワークアーキテクチャによって実現されます。

Back to top