Quantum 105 - Multiplayer
概要
この時点で、Game
シーンでプレイモードに入ることで、一人用のゲームとしてプレイすることができます。このようなゲームプレイを高品質なマルチプレイヤーゲームにするのは、通常非常に困難です。では、どのようにマルチプレイヤーを追加していくのでしょうか?
実は、マルチプレイヤー・サポートは最初から備わっているのです! Quantum では、ゲームプレイのコードを書くことに集中するだけで、Quantum エンジンがそれをマルチプレイヤーに変えてくれます。
あとは、プレイヤーがオンラインでゲームに参加できるようにするためのメニューシーンを素早くフックするだけです。
メニューシーン
Photon/QuantumDemo/Menu/
フォルダにある Menu
シーンを開いてください。メニューシーンはサンプルシーンで、ロビーシステムなど、Quantumのオンラインゲームに必要な機能が全て揃っています。
カスタムコールバック
シーン内の 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人のプレイヤーキャラクターが生成され、それぞれのインスタンスがプレイヤーキャラクターを操作しています。
備考: クライアントが遠く離れたリージョン(ドイツからアメリカ東部まで)に接続されていても、ゲームプレイは完璧に反応し、クライアントに遅延の兆候は見えません。これは、Quantumの決定論的ロールバックネットワークアーキテクチャによって実現されます。
Back to top