Tutorial 6 - Group
このチュートリアルでは、Diarkis の Group 機能を実装します。Group は文字列 ID で識別される軽量な pub/sub チャンネルです。同じ ID を知っているクライアントが全員同じチャンネルに参加してブロードキャストし合えます。
終了時には以下のことが身についています:
Group.SendJoin()で Group に参加する(存在しなければ自動作成)方法OnGroupCreate(新規作成)とOnGroupJoin(既存参加)を区別する方法Group.SendBroadcast()で全メンバーにブロードキャストする方法OnGroupMemberBroadcastでブロードキャストを受信する方法Group.SendLeave()で退出する方法
Tutorial 1 の接続フローが前提です。このシーンは Start() で自動接続します。
Group と Room の違い
識別子
サーバーが生成する ID
任意の文字列(例: "global-chat")
作成
明示的な作成またはランダム参加
SendJoin 時に存在しなければ自動作成
サーバー側メンバー管理
あり(最大メンバー数、TTL)
なし(軽量)
複数同時参加
1 つ
複数の Group に同時参加可能
用途例
ゲームセッション、マッチ
グローバルチャット、チームチャンネル、話題別 pub/sub
Group ID は自分で決める文字列なので、同じ ID を知っているクライアントが自動的に同じチャンネルを共有します。事前の発見ステップは不要です。
シーンのセットアップ
Tutorials/Scenes/Tutorial6-Group.unity を開き、定数を環境に合わせて変更してください。
Play モードに入るとシーンが自動接続します。2 つのクライアントで同じ Group ID(例: global-chat)を入力して Join を押してください。メッセージボタンを押すと相手のチャットログに表示されます。
コードの解説
イベントの登録
このチュートリアルで登録するイベントの一覧です。
OnGroupCreate
SendJoin で新規 Group が作成された(最初のメンバー)
Action<DiarkisGroupEventArgs>
OnGroupJoin
SendJoin で既存の Group に参加した
Action<DiarkisGroupEventArgs>
OnGroupLeave
自分が Group から退出した
Action<DiarkisGroupEventArgs>
OnGroupMemberJoin
他のメンバーが参加した
Action<DiarkisGroupMemberEventArgs>
OnGroupMemberLeave
メンバーが退出した
Action<DiarkisGroupMemberEventArgs>
OnGroupMemberBroadcast
他メンバーからブロードキャストが届いた
Action<DiarkisPayloadEventArgs>
SendJoin()
Group が存在しなければ自動作成します。結果は OnGroupCreate または OnGroupJoin で届きます。
OnGroupCreate と OnGroupJoin
両方とも同じシグネチャと同じデータアクセスパターンです。
e.GetGroupID() で参加した Group の ID を確認します。
SendBroadcast()
Room.SendBroadcastToRoom と同様に、Group のブロードキャストも送信者自身には届きません。ローカルに直接表示します。
ブロードキャストの受信
DiarkisByteVector → byte[] の変換パターンは Tutorial 4・5 と同じです。
参加・送受信フロー
最終更新
役に立ちましたか?

