ルームの概要¶
Strixでクライアント間の通信を行うには、両者が同じルームに参加している必要があります。
ルーム¶
Strixのルームとは、複数のクライアントを接続する仮想空間です。ルームのことを、多くのオンラインマルチプレイヤーゲームで見かける対戦ロビーのようなものと考えることができます。しかし、Strixのルームはマルチプレイヤーゲームのさまざまな側面を実装するための部品であり、ロビーよりもはるかにフレキシブルです。ルームを使って、ロビーを表すこともできますし、チャットチャネル、インスタンスダンジョン内にいるパーティー、バトルロワイヤルゲームのプレイフィールドにいるプレイヤー全員なども、ゲームデザインに応じて表すことができます。
1台のルームサーバーがそのような複数のルームを保持できますが、各ルームは互いに分離されています。ルームメンバーとはクライアント(つまりプレイヤー)を表すデータで、特定のルームに固有の情報を保持しています。つまり、クライアントがルームから退出して別のルームに参加すると、新しいルームメンバーが作成され、その新しいルームメンバーは元のルームのルームメンバーとは関係がありません。ルームに参加すると、各ルームメンバーは他のルームメンバーに関する情報を取得し、RPCを送信し、ゲームオブジェクトを複製し、リアルタイムでプロパティを同期できるようになります。他方、特定のルームのメンバーは、他のルームで何が起きているかを知ることはできません。
ルーム操作¶
クライアント(プレイヤー)は、ルームを作成し、既存のルームへ参加し、ルームを検索し、ルームかルームメンバーの情報を取得したり設定したりできます。
ルームは常にクライアントによって作成されます。ルームがサーバー上に存在するには、少なくとも1人のメンバーが必要です。ルームを作成したクライアントは、ルームのプロパティを定義し、作成が完了するとそのルームに参加し、さらにそのルームのルームオーナーになります。
ルームオーナーは、ルームのプロパティを変更したり、他のルームメンバーをキックしたり、ルームを破棄したりできます。ルームオーナーが退出すると、別のメンバーが自動的にルームオーナーになります。全てのメンバーがルームから退出すると、ルームは自動的に破棄されます。
注釈
ルームオーナーが他のルームメンバーをルームに残してルームから退出したときの動作は、サーバー側のオプションで設定できます。Strix Cloudのアプリケーションダッシュボードにある [ルームオーナー移譲の有効化] オプションを無効にすると、ルームオーナーがルームから退出したときに残っている全てのメンバーをキックしてルームを破棄するようになります。
ルームのプロパティ¶
各ルームには一式のプロパティがあります。ルームプロパティはルームの内側からも外側からも参照できます。つまり、プロパティを確認するためにルームに参加する必要はありません。プロパティは、ルームオーナーがいつでも変更できます。Strixでは固定した標準プロパティの一式をルームに対して定義していますが、その中には意味が決まっておらず、ゲームデザインに応じて自由に使うことができるものもあります。ルームには複数のカスタムプロパティを追加することもできますが、それらの用途は完全にゲーム次第です。
プロパティの種類 |
例 |
検索可能か? |
---|---|---|
標準のプロパティ(意味も定義済み)
|
name、
capacity
|
はい |
標準のプロパティ(意味は定義可能)
(標準のカスタムプロパティ)
|
key1 ~ key8、
stringKey
|
はい |
カスタム プロパティ(意味は定義可能)
|
(任意の名前)
|
いいえ |
注釈
properties
は特別なプロパティです。これは標準のプロパティの一つで、ディクショナリの型を持ち、意味が定義されています。その定義されている意味(用途)は、カスタムプロパティを格納することです。カスタムプロパティの名前はこのディクショナリに格納されたキーであり、プロパティの値はこのディクショナリの中の値です。