RoomFilterサンプル

目次

  概要
  ライトの輝度の調整
  複数クライアント動作のための準備
  アプリケーションの作成
  複数クライアントで動作させてみる


概要

「ルームカスタムパラメータ」をベースとした一致検索マッチング処理のサンプルです。

  本サンプルは、「ルームカスタムパラメータ」をベースとした、一致検索マッチング処理のサンプルです。


ライトの輝度の調整

Directional light for UnityChan の輝度を低くする

  Unity5 以降のバージョンを使っている場合、本サンプルを動作させる場合、SDUnityChanの輝度が高くなってしまいます。
  そのため、ライトの輝度を低くしましょう。

  project ビューから Assets/Monobit Unity Networking/Samples/Scenes/RoomFilter/RoomFilter.unity を
  ダブルクリックして開きます。
  hierarchy ビューから、「Directional light for UnityChan」を選択します。
  Inspector にある Light の項目内の「Intensity」について、2 から 1 に変更してください。


複数クライアント動作のための準備

バックグラウンドでの動作を有効にする

  Unity のバージョンによっては「バックグラウンドでの動作」が無効になっている場合があり、
  その状態で複数クライアントを動かすと支障が出ます。
  実行バイナリを生成する前に、まずはその確認と、無効になっていた場合に有効にする手続きを行いましょう。

  Unity のメニューから Edit > Project Settings > Player を選択します。
  PlayerSettings の「Resolution and Presentation」内にある、「Run In Background」のチェックボックスが ON になっているか確認してください。
  もし、OFFになっていた場合には、チェックボックスを ON にします。


アプリケーションの作成

実行バイナリを生成する

  では改めて実行バイナリを生成しましょう。
  Unity のメニューから File > Build Settings... を選んでください。
  Build Settings ウィンドウ内の Scenes In Build に対し、
  Assets/Monobit Unity Networking/Samples/Scenes/RoomFilter/RoomFilter.unity を追加します。
  (他に登録されているシーンファイルがある場合、SceneInBuild 内のチェックボックスで外すか、SceneInBuild 内のリストから削除してください)
  Build Settings ウィンドウ内の右下にある [ Build ] のボタンを押します。
  ここでビルドしますが、ビルド方法が Unity2018.2 以前と Unity2018.3 以降で異なりますので、
  お使いの Unity のバージョンに合わせて、以下のいずれかを選択してビルドしてください。

  ファイル名を RoomFilter.exe として保存します。
  しばらく待つと、新規ファイル RoomFilter.exe が出来上がります。



  まず「新しいフォルダー」をクリックし、新規フォルダを作成します。
  新規に作成したフォルダーに名前を付けます。ここでは「RoomFilter」としましょう。
  フォルダに「RoomFilter」が選択された状態で、[フォルダーの選択] ボタンを押下します。
  ボタンを押すとビルドが開始され、さらにしばらく待つと、先ほど作成した RoomFilterフォルダ内に「MUN_TEST.exe」が作成されます。


複数クライアントで動作させてみる

実行バイナリとUnityエディタの両方を使って、マルチプレイ動作確認を行なう

  実行バイナリをダブルクリックすると、以下の画面が出現します。
  お使いのディスプレイ解像度よりも低いスクリーンサイズで、かつウィンドウモードを有効にした状態で、[ Play! ]ボタンを押してください。
  一方で、Unityエディタ上の実行ボタンも押します。
  実行バイナリ、Unityエディタともに以下のような画面に切り替わります。

ルームカスタムパラメータを設定し、ルームを作成する

  一方のクライアント側でルームを作成します。
  ルームを作成する場合、CreateRoom の Custom Parameters の設定を行ないます。
  「New Key:」と書かれた項目の右隣にあるテキストボックス欄に、ルームカスタムパラメータ検索項目のキーを入力します。
  今回は試しに「KEY01」と入力してみましょう。
  入力したら、その入力欄の右隣にある Add ボタンをクリックします。
  Add ボタンを押すと、キー名「KEY01」に対応した Value 入力のテキストボックスが現れます。
  ここに ルームカスタムパラメータ検索キーに対する値を入力しましょう。
  同様の手順でいくつかルームカスタムパラメータ検索キーと、その値について設定していきましょう。
  キーを設定したら Create Room ボタンを押します。
  Create Room ボタンを押すと、以下の画面に切り替わります。
  ルームホスト(作成側)には、作成したルーム情報として、以下の情報が表示されます。
      ・自身のルーム内プレイヤーID
      ・現在のルーム内プレイヤー人数/ルーム内プレイヤー収容人数の上限
      ・ルームの入室可否設定、およびロビー内プレイヤーへの情報通知設定
      ・ルームカスタムパラメータの情報
      ・ルームカスタムパラメータの編集ダイアログ
  また、作成したルームに対する情報が、同一のロビーに入室しているプレイヤーにも拡散され、表示されます。
  ルームホスト側で既存のルームカスタムパラメータの値を変更すると、同一のロビー、および同一のルームに入室しているプレイヤーに対して
  変更された情報がリアルタイムに反映されます。

  なお、ルーム入室後に新規に追加されたルームカスタムパラメータのキーおよび値は、ロビーに通知されません。
  ルーム入室後に新規に追加されたルームカスタムパラメータは、ルーム内プレイヤーに対してのみ共有されます。

ルームカスタムパラメータ一致検索によるルーム入室を実行する

  もう一方のクライアントで、ルームカスタムパラメータ一致検索によるルーム検索を行ないます。
  試しに、ルームカスタムパラメータ検索キーについて「KEY01」と入力します。
  更に、KEY01の値として「50」と入力します。
  この状態で Join Room ボタンを押します。
  すると該当するルームが存在しないため、入室できません。
  バイナリデータで動かしている場合、OnJoinRoomFailed() などでエラー手続きなどを行なっていないので、以下のように画面の変化はありません。
  Unityエディタ上で動かしていた場合、コンソールログとしてエラーメッセージが表示されます。
  改めて、KEY01 の値について「100」と入力します。
  この状態で Join Room ボタンを押します。
  すると、先に作成したルームが検索条件に一致するため、入室することが可能です。

  ルームホスト側でルーム入室後に新規作成したカスタムパラメータの情報がある場合、
  ルーム入室することで初めて共有されることもわかります。
  ルーム検索条件は複数設定することができます。
  一旦ゲストとして入室した側から Leave Room ボタンを押して退室してみましょう。
  退室して最初の画面に戻ったところで、
  ルームカスタムパラメータ検索キーとして「KEY03」、およびその値として「AAA」と入力します。
  この状態で Join Room ボタンを押します。
  すると入室することができます。

  複数の条件を設定した場合、検索パラメータに対して AND 検索を行ないます。
  すべての条件が一致していて初めて入室が成功します。いずれか1つでも不一致の情報があれば、ルーム入室に失敗します。

ゲームをスタートする

  ゲームをスタートするには「Start Game」ボタンを押します。
  カーソルキーでSDユニティちゃんを動かすことができます。オブジェクトの位置・姿勢・アニメーション同期も取れています。
  (スクリーンショットの都合で値が違っていますが、制限時間(Rest Frame)も同期しています。)