ルームのイベントとNotification Listener

Strixは、ルーム内のオブジェクトとアクションの同期を処理します。ただし、一部のイベントはプレイヤーの接続かルームの状態に適用されます。これらのイベントの通知を受け取ることが有用な場合があります。例えば、プレイヤーがスコアボードやマップ情報などを更新する必要がある場合です。

これらのイベントが発生すると、サーバーはルームに接続しているプレイヤーに通知します。ただし、プレイヤーがこれらの通知を受信することに関心があるとNotification Listenerコンポーネントに登録している場合に限ります。

Strix Notification Listenerコンポーネント

Strix Notification Listenerはブループリントにアタッチされ、通知を受信したときに何らかの動作を引き起こすために使用します。

このコンポーネントには、[Strix Notifier] > [Channel ID] の下にチャネルIDが必要です。ここに待ち受けるチャネルを指定します。

Notification Listenerコンポーネントは、イベントが発生するとUEブループリントイベントシステムを使用して通知します。このコンポーネントが提供する各イベントは [イベント] の下にあり、イベントの横にある「+」のアイコンをクリックしてブループリントに追加できます。このルームメンバーが指定されたネットワークイベントの通知を受け取ると、グラフ内のUnrealイベントが呼び出されます。

ブループリントが、異なるチャネルに設定した複数のリスナーを持つ場合がありますが、ブループリントイベントはノーティフィケーションの種類ごとに1つしか持っていないかもしれません。Strixでは各ノーティフィケーションイベントにチャネルIDを提供することで、チャネルを区別できるようにしています。

ルームイベント

以下は、ルームイベントとその説明のリストです。各イベントに対して提供する値も記載しています。

Strix Room Context Open

現在のプレイヤーがルームに参加したときに呼び出されます。チャネルIDを返します。

Strix Room Join Notification Arrived

プレイヤーがルームに参加したときに呼び出されます。
チャネルIDと、ルームに参加したメンバーを表すStrix Room Member構造体を返します。

Strix Room Leave Notification Arrived

プレイヤーがルームから退出したときに呼び出されます。
チャネルIDと、ルームから退出したメンバーを表すStrix Room Member構造体を返します。

Strix Room Set Notification Arrived

プレイヤーがルームのプロパティを設定したときに呼び出されます。
チャネルIDと、ルームを設定したメンバーを表すStrix Room Member構造体を返します。

Strix Room Set Member Notification Arrived

プレイヤーがルームメンバーのプロパティを設定したときに呼び出されます。
チャネルIDと、設定されたメンバーを表すStrix Room Member構造体を返します。

Strix Room Kick Notification Arrived

プレイヤーがキックされたときに呼び出されます。
チャネルIDを返します。

Strix Room Delete Notification Arrived

ルームが削除されたときに呼び出されます。
チャネルIDを返します。

Strix Room Context Closed

現在のプレイヤーがキックされたかルームを退出したとき、またはルームが削除されたときに呼び出されます。
チャネルIDを返します。

Strix Room Owner Changed

ルームのオーナーが変わったときに呼び出されます。
チャネルIDに加え、新しいルームオーナーと以前のルームオーナーを返します。

注釈

プレイヤーが起動したイベント(Room Set Memberなど)は、それを起動したプレイヤーには通知を行いません。これらの結果は、成功と失敗のコールバックによって処理します。ルームの他のプレイヤーは通知を受け取ります。

このルールの例外は、Room Context OpenおよびRoom Context Closedイベントで、現在のプレイヤーがルームに出入りしたときに発生します。

Strix Notification Listener Object

高度なユースケースをサポートするために、StrixではこのNotification Listenerの非コンポーネント版も提供します。Strix Notification Listener Objectです。これはUActorComponentではなくUObjectを直接継承しているので、コンポーネントをアタッチするアクターがなくても利用できます。コンポーネント版と同じルームイベント一式を提供しています。

例えば、GameInstance内でStrix Notification Listener Objectのインスタンスを作成し、レベルと無関係にルームイベントを待ち受けることができます。

これは次の手順で使用します。

  1. ゲームでまだ行っていなければ、InitializeStrixNetwork関数(またはその変種)を呼び出してStrixネットワークを初期化します。

  2. Strix Notification Listener Objectクラスのインスタンスを構成(コンストラクト)して変数に保持します。

  3. Initメンバー関数を呼び出してインスタンスを初期化します。

  4. このlistenerオブジェクトにカスタムイベントノードをバインドします。

Using a Strix Notification Listener Object