新しいルームの作成¶
新しいルームを作成する最も簡単な方法は、StrixNetwork
シングルトンでいずれかのCreateRoom
メソッドを呼び出すことです。
void CreateRoom(RoomProperties roomProperties, RoomMemberProperties memberProperties, RoomCreateEventHandler handler, FailureEventHandler failureHandler, RequestConfig config = null)
void CreateRoom(IDictionary<string, object> roomProperties, string playerName, RoomCreateEventHandler handler, FailureEventHandler failureHandler, RequestConfig config = null)
void CreateRoom(IDictionary<string, object> roomProperties, IDictionary<string, object> memberProperties, RoomCreateEventHandler handler, FailureEventHandler failureHandler, RequestConfig config = null)
注釈
CreateRoom
メソッドにはルームを作成するルームサーバーを指定する引数がありませんが、あらかじめ自分でルームサーバーに接続しておく必要はありません。複数のルームサーバーがある場合には、Strixが適切なサーバーを選択します。
プロパティの要件¶
これらの関数には、ルームプロパティとメンバープロパティの両方が必要です。
ここで指定したルームプロパティが、ルームプロパティの初期値になります。ここで、ゲームの状況に応じて必要なルームを定めるためのカスタム値を指定することもできます。メンバープロパティが必要なのは、ルームを作成すると必ず現在のプレイヤーが自動的にそのルームに参加するためです。
必須メンバープロパティ:
名前 |
タイプ |
説明 |
name |
String |
ルームメンバーの名前 |
必須ルームプロパティ:
名前 |
タイプ |
説明 |
capacity |
int |
ルームに入ることができるプレイヤーの数 |
name |
String |
ルームの名前 |
注釈
これらの必須のプロパティの一部または全部を省略しても、ルームの作成は失敗しません。デフォルト値が使用されるからです。しかし、デフォルト値はゲームに適切とは限らず、できあがったルームは期待した通りには機能しないかもしれません。必ず上記のプロパティを全て指定するようにしてください。
注釈
ディクショナリのキー文字列の名前に注意してください。これらはルームとルームメンバーの情報を取得のページにある表に記載されているプロパティの名前と一致している必要があります。プロパティの名前では、大文字小文字を区別します。
注釈
Strix Unity SDKは現在、複数のルームへの同時参加をサポートしていないため、別のルームに参加している間に新しいルームを作成すると、現在のルームを退出することになります。最後のメンバーだった場合はルームが破棄されます。
コード例¶
using SoftGear.Strix.Client.Core.Model.Manager.Filter;
using SoftGear.Strix.Client.Core.Model.Manager.Filter.Builder;
using SoftGear.Strix.Unity.Runtime;
using System.Collections.Generic;
using UnityEngine;
public class StrixCreateRoomExample : MonoBehaviour
{
void Start()
{
var strixNetwork = StrixNetwork.instance;
// これは仮の値です。実際のアプリケーションIDに変更してください
// Strix Cloudのアプリケーション情報タブにあります: https://www.strixcloud.net/app/applist
strixNetwork.applicationId = "00000000-0000-0000-0000-000000000000";
// まずマスターサーバーに接続します
strixNetwork.ConnectMasterServer(
// これは仮の値です。実際のマスターホスト名に変更してください。
// Strix Cloudのアプリケーション情報タブにあります: https://www.strixcloud.net/app/applist
host: "000000000000000000000000.game.strixcloud.net",
connectEventHandler: _ => {
Debug.Log("Connection established.");
// マスターサーバーに接続した後でルームを作成できます
strixNetwork.CreateRoom(
new RoomProperties {
name = "Fire Tournament",
password = "66e3f2nk", // このルームはパスワードで保護されているため、パスワードのないクライアントは参加できません
capacity = 20, // ルームが保持できるクライアントの最大数
key1 = 4.0, // key1を使用してこの試合で使用するNPCの難易度を表すことにします
properties = new Dictionary<string, object> { { // カスタムプロパティを使用してルームに説明を付けます
"description", "The first major tournament of the new season." // 後でルームを検索するときにこの説明を表示できます
} }
},
new RoomMemberProperties {
name = "Braille" // これがプレイヤーの名前になります
},
handler: __ => {
Debug.Log("Room created.");
// ルームを作成したので、SearchRoomメソッドで見つかるかどうかを確認しましょう
strixNetwork.SearchRoom(
condition: ConditionBuilder.Builder().Field("key1").GreaterThan(2.0).Build(), // 難易度が2より大きいルームを検索します
order: new Order("memberCount", OrderType.Ascending), // 最もすいているルームが最初になるように並べます
limit: 10, // 結果を10件のみ取得します
offset: 0, // 結果を最初から取得します
handler: searchResults => {
var foundRooms = searchResults.roomInfoCollection;
Debug.Log(foundRooms.Count + " rooms found.");
// 検索が終わったら、見つかった全てのルームに関する情報を出力します
foreach (var roomInfo in foundRooms)
Debug.Log("Room ID: " + roomInfo.id
+ "\nHost: " + roomInfo.host
+ "\nMember count: " + roomInfo.memberCount
+ "\nCapacity: " + roomInfo.capacity
+ "\nDifficulty: " + roomInfo.key1
+ "\nDescription: " + (roomInfo.properties != null && roomInfo.properties.ContainsKey("description") ? roomInfo.properties["description"] : "None")
);
},
failureHandler: searchError => Debug.LogError("Search failed. Reason: " + searchError.cause)
);
},
failureHandler: createRoomError => Debug.LogError("Could not create room. Reason: " + createRoomError.cause)
);
},
errorEventHandler: connectError => Debug.LogError("Connection failed. Reason: " + connectError.cause)
);
}
}
注釈
applicationId
とhost
の仮の値を、忘れずにStrix Cloudのアプリケーション情報タブにある実際の値に変更してください。