ルームカスタムパラメータ

目次

  概要
  注意事項
  事前設定
  MonobitEngine.RoomSettings.roomParameters プロパティ
  MonobitEngine.RoomSettings.lobbyParameters プロパティ
  MonobitEngine.MonobitNetwork.room.SetCustomParameters メソッド
  【応用例】カスタムルームパラメータを使用したルーム作成
  【応用例】カスタムルームパラメータを使用したルーム一致検索
  【応用例】カスタムルームパラメータを使用したクエリー範囲検索


概要

ルームに設定可能な任意の情報群

  ルームカスタムパラメータは、ルームの標準パラメータとは別に、ルームに対し任意に設定可能な情報群です。
  ルーム検索ワードとして利用したり、ルーム招待文などの任意の付加情報として活用することができます。


注意事項

1ルームに対して設定可能な、ルームカスタムパラメータの最大数は 15 です。

  それ以上のルームカスタムパラメータを登録しようとすると、Unityクライアント上で以下のエラーを出力します。
Room parameters max over: 16/15

ルームカスタムパラメータのkeyは、アルファベットから始まる文字列のみ指定可能です

  ルームカスタムパラメータは Hashtable のデータ型で設定することができますが、
  MonobitEngine.MonobitNetwork.JoinRandomRoom メソッド(3) の説明文中にもある通り、
  SQL(SQLite)によるパターンマッチングを実行する必要があるため、サーバ内部のSQLデータベースへ登録されます。

  そのため、インデックスキーとして使用される「ルームカスタムパラメータのkey」については
  アルファベットから始まる文字列のみ指定可能で、数値型や配列型などの情報を設定することはできません

  ルームカスタムパラメータのkeyに数値型、配列型など「アルファベットから始まる文字列」を除く値を設定しようとした場合
  MUN サーバ側の処理でエラーを返しますので、くれぐれもご注意ください。

ルームカスタムパラメータのvalueは、特定のデータ型のみ指定可能です

  上記と同様に、「ルームカスタムパラメータのvalue」に指定できるのは、以下のデータ型に限定されます。
・bool(Boolean)
・byte(Byte)
・char(SByte)
・short(Int16)
・unsingned short(UInt16)
・int(Int32)
・unsigned int(UInt32)
・long(Int64)
・unsigned long(UInt64)
・float(Single)
・double(Double)
・string(String)
  また、上記データ型であっても配列型の使用はできません
   ※ ルームカスタムパラメータに対するクエリー検索機能を実行するための仕様のためで、今後これらのデータ型以外を
     利用できるようになることは現時点ではありません。

  ルームカスタムパラメータのvalueに上述のデータ型以外を設定しようとした場合にもMUN サーバ側の処理でエラーを返しますので、
  くれぐれもご注意ください。


事前設定

MonobitEngine.RoomSetting による設定はルームに入室前に行なうこと

  このページでも解説いたしますが、MonobitEngine.RoomSettings によるルームカスタムパラメータの設定は、ルーム入室前のみ有効です。
  ルーム入室後については MonobitEngine.MonobitNetwork.room.SetCustomParameters メソッドを使用してください。

ルーム入室後のルームカスタムパラメータの変更は MonobitEngine.MonobitNetwork.room.SetCustomParameters メソッドを使うこと

  ルーム入室後については、MonobitEngine.MonobitNetwork.room.SetCustomParameters メソッドを使用してください。

  似たような設定項目に MonobitEngine.MonobitNetwork.room.customParameters プロパティがありますが、こちらは読み取り専用となっていますので、設定できません。

  また、MonobitEngine.MonobitNetwork.room.parametersListedInLobby プロパティも読み取り専用で、
  ロビー公開用ルームカスタムパラメータの設定はルーム入室前のみ有効です。ご注意ください。


MonobitEngine.RoomSettings.roomParameters プロパティ

機能

  MonobitEngine.MonobitNetwork.CreateRoom メソッド等を使い作成するルームの、ルームカスタムパラメータを設定します。

入出力型

内容
Hashtable ルームカスタムパラメータについて、そのハッシュテーブル(KeyおよびValue)を設定します。

記述例

// ルームカスタムパラメータの Key および Value を設定します。
MonobitEngine.RoomSettings settings = new MonobitEngine.RoomSettings();
settings.roomParameters["username"] = "MUN";
settings.roomParameters["password"] = "monobit";


MonobitEngine.RoomSettings.lobbyParameters プロパティ

機能

  作成したルームカスタムパラメータ情報のうち、ロビー内ユーザーに通知するパラメータキーを設定します。
  通知されたパラメータキーを使って、ロビー内ユーザー側から MonobitEngine.MonobitNetwork.JoinRandomRoom メソッドでのルーム内検索を可能とします。

出力型

内容
string[] ルームカスタムパラメータについて、ロビー内ユーザーに通知するパラメータキーを文字列配列として設定します。
MonobitEngine.RoomSettings.roomParameters.Keys 情報内に含まれているKeyである必要があります。

記述例

// ルームカスタムパラメータのうち、"username"と"password"をロビー内ユーザーに通知します。
MonobitEngine.RoomSettings settings = new MonobitEngine.RoomSettings();
settings.lobbyParameters = new string[] { "username", "password" };


MonobitEngine.MonobitNetwork.room.SetCustomParameters メソッド

機能

  現在入室しているルームのカスタムパラメータについて変更を加えます。
  変更可能なものはあくまでカスタムパラメータ本体であり、ロビー内ユーザーに通知できるカスタムパラメータの種類の変更はできません。

引数

変数名 内容
Hashtable parametersToSet 更新・設定・同期するカスタムパラメータのハッシュテーブルを設定します。
Hashtable expectedValues このパラメータは将来の拡張のため用意されています。
現時点ではnullを設定してください。(省略可能で、その場合にはnullが設定されます)
bool webForward このパラメータは将来の拡張のために用意されています。
現時点ではfalseを設定してください。(省略可能で、その場合にはfalseが設定されます)

戻り値

内容
void -

記述例

// ルーム入室中にカスタムパラメータ"password"を更新します。
if( MonobitEngine.MonobitNetwork.inRoom )
{
    Hashtable customParams = new Hashtable();
    customParams["password"] = "monobitengine";
    MonobitEngine.MonobitNetwork.room.SetCustomParameters( customParams );
}


【応用例】カスタムルームパラメータを使用したルーム作成

MonobitEngine.MonobitNetwork.CreateRoom メソッド実行時にカスタムルームパラメータを適用する

  以下のように実行すると、ルーム生成時にカスタムルームパラメータを設定することが出来ます。
// ルーム作成時に使用するカスタムルームパラメータを定義
MonobitEngine.RoomSettings settings = new MonobitEngine.RoomSettings();
settings.roomParameters["username"] = "MUN";
settings.roomParameters["password"] = "monobit";
settings.roomParameters["version"] = 1.0;
settings.lobbyParameters = new string[] { "username", "password", "version" };

// ルーム名を「RoomName」としてルーム作成
MonobitEngine.MonobitNetwork.CreateRoom( null, settings, null );


【応用例】カスタムルームパラメータを使用したルーム一致検索

MonobitEngine.MonobitNetwork.JoinRandomRoom メソッド実行時にカスタムルームパラメータによるフィルタリングを実行する

  上記の「【応用例】カスタムルームパラメータを使用したルーム作成」を適用した状態で作成されたルームに対し、
  以下のような処理を実行すると、ルーム入室時にカスタムルームパラメータとの一致判定を実行し、一致すればルームに入室できます。
// ルーム入室時に使用するカスタムルームパラメータを定義
MonobitEngine.RoomSettings settings = new MonobitEngine.RoomSettings();
settings.roomParameters["username"] = "MUN";
settings.roomParameters["password"] = "monobit";

// "username"と"password"が一致したルームのうち、ランダムに1つ選択して入室する
MonobitEngine.MonobitNetwork.JoinRandomRoom( settings, 0 );


【応用例】カスタムルームパラメータを使用したクエリー範囲検索

MonobitEngine.MonobitNetwork.JoinRandomRoom メソッド実行時にクエリーロビー用カスタムルームパラメータによるフィルタリングを実行する

  上記の「【応用例】カスタムルームパラメータを使用したルーム作成」を適用した状態で作成された、クエリーロビー内のルームに対し、
  以下のような処理を実行すると、ルーム入室時にカスタムルームパラメータとのクエリー範囲判定を実行し、一致すればルームに入室できます。
// クエリー検索ワードの設定
string filter = "username = MUN AND password = monobit AND version >= 1.0";

// クエリーに合致するルームのうち、ランダムに1つ選択して入室する
MonobitEngine.MonobitNetwork.JoinRandomRoom( null, 0,
    MonobitEngine.Definitions.MatchmakingMode.SerialMatching,
    new MonobitEngine.LobbyInfo() { Kind = MonobitEngine.LobbyKind.Query },
    filter );