ルームカスタムパラメータ
目次
概要
注意事項
事前設定
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が設定されます) |
戻り値
記述例
// ルーム入室中にカスタムパラメータ"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 );