ロビーマネージャー

オンラインマルチプレイヤーゲームという観点からみると、ゲームを面白く、時に際立たせる条件の1つにクライアント、特定の種類のプレイスタイルやスキルレベルの組み合わせが挙げられます。すべてのプレイヤーがゲームを存分に楽しめるようにするためです。

これを念頭におき、PhotonのBoltチームは基本のロビー/マッチメイキングシステムを構築しました。このシステムによって有利なスタートをきることができ、またこのシステムを基礎として独自の拡張機能を実装したり、ビジュアルのみを変更することも可能です。コアとなるコードは変更する必要がありません。 任意の修正が可能です。

Lobbyサンプルに実装されている主な機能:

  • カスタムネーム・カスタムIDで新しいセッションを作成する
  • ランダムセッションに参加する
  • 現在のリージョンでのセッションブラウザ
  • ゲームセッションからプレイヤーを追い出す
  • セッション内でのプレイヤーのカスタム属性(名前や色)
  • 各プレイヤー用の「Ready」ステータス
  • 設定可能な、ゲーム開始に必要となる最低プレイヤー数

ここからは、サンプルのインターフェースの使い方と構成方法について説明します。このサンプルの全ソースコードはこちらのBoltサンプルGitHubリポジトリからご確認ください。

プレイヤーが初めに PhotonLobby シーンをロードしたときに表示されるメインウィンドウから始めましょう。このシーンには、LobbyManagerプレハブのインスタンスがあり、これがPhoton Boltの実行と管理をおこないます。

Main Lobby window
Lobbyメインウィンドウ

インターフェースには以下の要素があります:

  1. Statusラベル: ここにはローカルピアの現在のステータスが表示されます。開始済みまたは未開始、サーバーまたはクライアントなど;
  2. Hostラベル: ここには、クライアントの場合の現在のセッション識別子が表示されます。サーバーとして実行している場合は、「self」と表示されます。
  3. セッション名入力: ここではセッション/ルームを任意の名前に設定できます。デフォルトではランダムIDとなっています。
  4. セッションCreateボタン: 新しいセッションを作成するにはこのボタンをクリックして、他のプレイヤーを待ちます。
  5. Browse Serversボタン: このボタンをクリックすると、ピアがクライアントとして開始され、サーバーリストウィンドウで入れるセッションを探します(以下で表示します)。
  6. Join Randomボタン: プレイヤーがここをクリックすると、ピアはクライアントとして開始され、入れるセッションにランダムに参加します。ルームウィンドウに直接入室します(以下で表示します)。

新しいセッションを作成して先に進みます(画面上のCreateボタンをクリック)。すると、以下のウィンドウが開きます。例をさらに面白くするため、他に3つのクライアントを起動し、Join Randomボタンを使用してセッションに参加します。クリックするだけでセッション内に入ることができます。

Session window
セッションウィンドウ

セッションウィンドウには、以下のコンポーネントがあります:

  1. Shutdownボタン: このボタンはローカルピアのBoltをシャットダウンします。それにより(サーバーの場合)セッションの崩壊につながります。すべてのクライアントもしくはローカルのクライアントのみをシャットダウンし、そのクライアントの入力を接続済みピアのリストから削除します。
  2. ホームアイコン: ローカルピアの入力をマークするのに使用します。
  3. カラーピッカーボタン: ルーム内のプレイヤーに関連した色をカスタムします。これは同期できるものの一例です。他のプレイヤーをランダムに選ぶには色の上をクリックします。
  4. プレイヤー名の入力: ここではプレイヤー名を設定できます。こちらもまたカスタムプロパティの例です。デフォルトでは、サンプルが各プレイヤーのランダム名を生成します。
  5. Join/Readyボタン: このボタンを使うと、ゲームに入る準備が整ったという信号がサーバーに送られます。
  6. キックボタン: これはサーバーサイドでのみ利用できるオプションです。名前の通り、プレイヤーをルームから追い出すためボタンです。追い出されたプレイヤーはシャットダウンされメインウインドウへと戻ります。

ルーム内のインターフェースを確認したので、今度はセッションリストUIについて説明します。ここではクライアントがどのルームに参加するか選択することができます。:

Session list window
セッションリストウィンドウ

セッションリストUIは非常にシンプルです。実行中のサーバーが各行に表示され(この情報はサーバーが作成・破壊・更新されるたびにアップデートされます。)、 以下に記載されたセクションで構成されています:

  1. セッション/ルーム名ラベル: サーバーのセッション識別子です。セッションの作成者によって提供される、人間が解読可能なテキストです。
  2. スロットラベル: ルーム内の現在のプレイヤー数と、許容可能な最大プレイヤー数を表しています。
  3. Joinボタン: クライアントがこのボタンをクリックすることで、この特定のサーバーで接続プロセスが始まります。

以下に、Lobbyサンプルを使用する場合のフロー全体を記載します。 ご覧のとおり長くはありませんが、多くのゲームでの基本的なマッチメイキングの要件を満たしています。 このフローはカスタムセッションパラメーター、ゲームタイプごとのフィルターなどで拡張可能です。

Lobby Matchmaking flow
ロビーマッチメイキングのフロー

設定

Lobbyマネージャーのサンプルでは、変更可能な設定が少ししかありません。また、 これらの設定はLobbyManagerプレハブと関連するLobbyManagerコンポーネントから参照することができます。 設定については、以下を参照してください:

  • Lobby Scene: Lobbyマネージャーが使用される現在のシーン。プレイヤーがマッチから退出する際、オリジナルのシーンをロードするのに必須です。
  • Game Scene: プレイヤーの準備完了時にロードされる対象のシーンです。
  • Min Players: マッチを開始するのに必要な最小プレイヤー数
  • Prematch Countdown: 最小プレイヤー数に達し、ゲームが開始されるまでにかかる秒数。

Lobby Manager configuration
Lobby Managerの設定

ドキュメントのトップへ戻る