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 の違い

項目
Room
Group

識別子

サーバーが生成する 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 のブロードキャストも送信者自身には届きません。ローカルに直接表示します。

ブロードキャストの受信

DiarkisByteVectorbyte[] の変換パターンは Tutorial 4・5 と同じです。

参加・送受信フロー

最終更新

役に立ちましたか?