PUN Classic (v1)、PUN 2、Boltはメンテナンスモードとなっております。Unity2022についてはPUN 2でサポートいたしますが、新機能が追加されることはありません。お客様のPUNプロジェクトおよびBoltプロジェクトが停止することはなく、将来にわたってパフォーマンス性能が落ちることはありません。 今後の新しいプロジェクトについては、Photon FusionまたはQuantumへ切り替えていただくようよろしくお願いいたします。

接続の受け入れと拒否

Photon Boltでは、クライアントがシーンの読み込みを開始する前に、完全な接続が行われる前の早い段階で、着信接続を許可したり拒否したりすることができます。
通常は、ボルト設定に移動してAccept ModeManualに変更しない限り、すべての接続が自動的に受け入れられます(下図を参照)。
使用例としては、サーバーが満杯のために着信接続を拒否することが挙げられます。

Setup Accept Mode
受け入れモードを設定。

クライアントは接続時にサーバーにトークンを送ることができます(例:パスワードで保護されたゲームセッションに入力、サードパーティのセッションチケットなど)。
このトークンは、 ConnectionRequest(下記参照)に渡され、さらに、 Connectedなどのコールバックから利用可能な BoltConnection ConnectToken)のメンバーとし、ハンドシェイクで渡されます。

クライアントでは、BoltNetwork.Connect または BoltMatchmaking.JoinSession のいずれかのバージョンを使って、リクエストを送信して、サーバーへの接続を試みることができます。

C#

public static void BoltMatchmaking.JoinSession(string sessionID, IProtocolToken token);
public static void BoltMatchmaking.JoinSession(UdpSession session, IProtocolToken token);
public static void BoltMatchmaking.JoinRandomSession(IProtocolToken token);
public static void BoltMatchmaking.JoinRandomSession(UdpSessionFilter sessionFilter, IProtocolToken token);

public static void BoltNetwork.Connect(UdpEndPoint endpoint, IProtocolToken token);
public static void BoltNetwork.Connect(UdpEndPoint endpoint);

これらのメソッドのいずれかを呼び出した後、次のコールバックは、このピアがサーバに接続しようとしていることを通知します。

C#

public virtual void GlobalEventListenerBase.ConnectAttempt(UdpEndPoint endpoint, IProtocolToken token);

サーバー上では、新しいプレイヤーが接続しようとすると、以下のようなリクエストが表示されます。

C#

public virtual void GlobalEventListenerBase.ConnectRequest(UdpEndPoint endpoint, IProtocolToken token);

クライアントはサーバに接続しようとするときにトークンを渡すことができます。
このトークンはサーバ上の ConnectionRequestConnected の両方に使われます。

Accept ModeManual の場合は、以下のいずれかを呼び出す必要があります。

C#

public static void BoltNetwork.Accept(UdpEndPoint endpoint);
public static void BoltNetwork.Accept(UdpEndPoint endpoint, IProtocolToken acceptToken);

または

C#

public static void BoltNetwork.Refuse(UdpEndPoint endpoint);
public static void BoltNetwork.Refuse(UdpEndPoint endpoint, IProtocolToken refuseToken);

これらのメソッドでは、必要に応じてトークンを返すことができます。クライアントへの応答に使用します。例えば、これを使用して、エラーメッセージの結果をテキストに変換してユーザーに表示することができます。

接続が許可された場合、クライアントは以下のコールバックを受け取ります。

C#

public virtual void GlobalEventListenerBase.Connected(BoltConnection connection);

接続を拒否された場合はこちらを利用できます。

C#

public virtual void GlobalEventListenerBase.ConnectRefused(UdpEndPoint endpoint, IProtocolToken token);

クライアントは Connected コールバック内の BoltConnection.AcceptTokenAccept Token を取得できます。
以下のシーケンス図は、全体のプロセスをまとめたものです。

Accept-Refuse Flow
受け入れ−拒否のフロー
Back to top