Tutorial 4 - Room
このチュートリアルでは、Diarkis の Room 機能を実装します。Room はゲームセッションの基本単位であり、プレイヤーをグループ化してメッセージの交換を可能にします。マッチメイキング後に移行する先として一般的に使われます。
終了時には以下のことが身についています:
DiarkisInterfaceからDiarkisRoomモジュールを取得する方法SendJoinRandomRoomでランダムなルームに参加(なければ作成)する方法OnRoomCreationとOnRoomJoinを別々に処理する方法ルーム内全員にブロードキャストメッセージを送る方法
GetRoomMembers()でメンバーリストを最新状態に保つ方法ルームから退出する方法
Tutorial 1 の接続フローが前提です。このシーンは Start() で自動接続します。
Room とは
Room は最大人数と TTL(有効時間、秒単位)を持つ仮想空間です。メンバー同士が自由にメッセージを交換できます。
SendJoinRandomRoom() は参加可能なルームがあればそこに入室し、なければ新規作成します。結果は OnRoomCreation(新規作成)または OnRoomJoin(既存参加)で届きます。
シーンのセットアップ
Tutorials/Scenes/Tutorial4-Room.unity を開き、定数を環境に合わせて変更してください。
Play モードに入るとシーンが自動接続します。Network State ラベルが緑色になったら Join Room ボタンが有効になります。
コードの解説
Room モジュールの取得
Tutorial 2・3 の diarkis.MatchMaker と同じパターンです。
イベントの登録
このチュートリアルで登録するイベントの一覧です。
OnRoomCreation
新規ルームを作成した(最初のメンバー)
Action<DiarkisRoomCreationEventArgs>
OnRoomJoin
既存ルームに参加した
Action<DiarkisRoomJoinEventArgs>
OnRoomMemberJoin
他のメンバーがルームに参加した
Action<DiarkisRoomMemberJoinEventArgs>
OnRoomMemberLeave
メンバーがルームから退出した
Action<DiarkisRoomMemberLeaveEventArgs>
OnRoomLeave
自分がルームから退出した
Action<DiarkisRoomLeaveEventArgs>
OnRoomMemberBroadcast
ブロードキャストメッセージを受信した
Action<DiarkisPayloadEventArgs>
OnDestroy での UnregisterCallbacks(this) はお忘れなく。オーナーパターンの詳細は Tutorial 1 を参照してください。
SendJoinRandomRoom()
allowEmpty: true にすると、空のルームにも参加します。結果は OnRoomCreation または OnRoomJoin で届きます。
OnRoomCreation と OnRoomJoin の違い
発火状況と取得できるデータが異なります。
注意:
OnRoomCreation内では_room.RoomIDではなくargs.GetRoomID()でルーム ID を取得してください。コールバック時点でモジュールの内部状態がまだ更新されていない場合があります。
メンバーリストの更新
DiarkisMatchMaker と異なり、DiarkisRoom には GetRoomMembers() というローカルキャッシュから即時にメンバー一覧を返すメソッドがあります。サーバーへのリクエストは不要です。
OnRoomMemberJoin・OnRoomMemberLeave・OnRoomJoin・OnRoomCreation から RefreshRoomUI() を呼ぶことで表示を常に最新に保ちます。
ブロードキャスト — 送信と受信
SendBroadcastToRoom は送信者以外の全メンバーにメッセージを届けます。送信者自身の画面に表示するには AddChatLine を直接呼びます。ペイロードに UID を含めることで受信側が送信者を識別できます。
reliable: true は TCP 相当の信頼性保証付き送信です。位置同期など多少のロストが許容できる高頻度更新には false を使います。
ボタン状態の管理
_room.IsJoin() が「現在ルームに参加しているか」の唯一の判断基準です。
Room と MatchMaker を組み合わせる
マッチメイキング後にプレイヤーを Room に移行するのが一般的な本番フローです。
Tutorial 1〜4 が完了すれば、接続 → マッチメイキング → ルーム参加という完全なフローを実装できます。Tutorial 5 では Direct Messaging — UID を指定した特定プレイヤーへのメッセージ送信 — を学びます。
最終更新
役に立ちましたか?

