グループ制御

目次

  概要
  事前設定
  MonobitEngine.MonobitView.group 変数
  MonobitEngine.MonobitNetwork.SetSendingEnabled メソッド (1)
  MonobitEngine.MonobitNetwork.SetSendingEnabled メソッド (2)
  MonobitEngine.MonobitNetwork.SetReceivingEnabled メソッド (1)
  MonobitEngine.MonobitNetwork.SetReceivingEnabled メソッド (2)


概要

グループごとの、情報の送受信を受け付けるかどうかの設定

  MMORPGなど、広大なフィールド上を多人数で共有させた空間を動かした場合、想像するだけでも膨大な通信負荷が発生します。
  おそらく通信負荷だけで、サーバのネットワークリソースを食い潰し、「重すぎて一歩も動けない状態」になることも考えられます。

  グループとは、上記のような状況を回避するために使用されるものです。
  例えば広大なフィールドを幾つかのエリア(グループ)に分け、そのエリアに存在する情報のみ送受信するように、通信制限を加えることができます。
  全てのエリア、全てのプレイヤーに対し、グループ制御を加えることによって、全体のトラフィック量を下げる効果が出てくることでしょう。

  通常のゲームを作る上では考える必要もないかも知れませんが、
  膨大な量(あるいは広大な領域)を動かすゲームであれば、グループ制御の適用も考えてみてください。

  なお、グループIDの「0」番は特殊で、ルーム内プレイヤー間の送受信(RPC, オブジェクト同期)の他にも、
  各種ロビー/ルーム制御のための通信にも利用されるため、送受信を無効にすること(送受信拒否)はできません。


事前設定

グループ制御の対象物には、MonobitViewコンポーネントの登録が必要です

  MonobitView にグループ情報が含まれていますので、MonobitView コンポーネント登録が必須です。


MonobitEngine.MonobitView.group 変数

機能

  自分自身のグループIDを決定します。

  原則的に、同一グループIDを持つオブジェクト同士で、オブジェクト同期&RPC通信を行ないます。
  そのため、ここで設定した値と、MonobitEngine.MonobitNetwork.Instantiate() の第4引数に設定した値とで一致しない場合には、通信を行ないません。

  クライアント間でオブジェクト同期を行っている最中、この値を無理やり「本来MonobitEngine.MonobitNetwork.Instantiate() で設定したものとは別の値」に変更した場合、
  変更した値を他クライアントと同期する前にグループIDの齟齬が発生するため、ネットワーク越しの自動同期ができなくなります。
  どうしてもそういった制御が必要なのであれば、 以下の記述例を参考に monobitView.RPC() メソッドを使用してクライアント間の同期をとってください。

変数型

内容
int ローカル情報として、グループIDとして保持します。
デフォルト値は 0 です。

記述例

// group に 2 を登録します。
class Foo : MonobitEngine.MonoBehaviour
{
    ...

    void Update()
    {
        ...

        monobitView.RPC("SetGroup", MonobitEngine.MonobitTargets.All, 2 );
 
        ...
    }

    ...

    [MunRPC]
    void SetGroup(int groupId)
    {
        monobitView.group = groupId;
    }

    ...
}



MonobitEngine.MonobitNetwork.SetSendingEnabled メソッド (1)

機能

  指定したグループに属する MonobitView オブジェクトの送信可否を決定します。

  なお、グループIDの「0」番は特殊で、ルーム内プレイヤー間の送受信(RPC, オブジェクト同期)の他にも、
  各種ロビー/ルーム制御のための通信にも利用されるため、送信を無効にすること(送信拒否)はできません。

引数

変数名 内容
int group 設定するグループID
bool enabled 送信を有効にするには true 、 無効にするには false を設定する

戻り値

内容
void -

記述例

// グループID 1 の送信を無効にします。
MonobitEngine.MonobitNetwork.SetSendingEnabled( 1, false );


MonobitEngine.MonobitNetwork.SetSendingEnabled メソッド (2)

機能

  指定したグループに属する MonobitView オブジェクトの送信可否を決定します。

  なお、グループIDの「0」番は特殊で、ルーム内プレイヤー間の送受信(RPC, オブジェクト同期)の他にも、
  各種ロビー/ルーム制御のための通信にも利用されるため、送信を無効にすること(送信拒否)はできません。

引数

変数名 内容
int[] enableGroups 送信を許可するグループID群
int[] disableGroups 送信を拒否するグループID群

戻り値

内容
void -

記述例

// グループID 0, 2 の送信を有効にし、グループID 1, 3 の送信を無効にします。
MonobitEngine.MonobitNetwork.SetSendingEnabled( new int[] { 0, 2 }, new int[] { 1, 3 } );


MonobitEngine.MonobitNetwork.SetReceivingEnabled メソッド (1)

機能

  指定したグループに属する MonobitView オブジェクトの受信可否を決定します。

  なお、グループIDの「0」番は特殊で、ルーム内プレイヤー間の送受信(RPC, オブジェクト同期)の他にも、
  各種ロビー/ルーム制御のための通信にも利用されるため、受信を無効にすること(受信拒否)はできません。

引数

変数名 内容
int group 設定するグループID
bool enabled 受信を有効にするには true 、 無効にするには false を設定する

戻り値

内容
void -

記述例

// グループID 1 の受信を無効にします。
MonobitEngine.MonobitNetwork.SetReceivingEnabled( 1, false );


MonobitEngine.MonobitNetwork.SetReceivingEnabled メソッド (2)

機能

  指定したグループに属する MonobitView オブジェクトの受信可否を決定します。

  なお、グループIDの「0」番は特殊で、ルーム内プレイヤー間の送受信(RPC, オブジェクト同期)の他にも、
  各種ロビー/ルーム制御のための通信にも利用されるため、受信を無効にすること(受信拒否)はできません。

引数

変数名 内容
int[] enableGroups 受信を許可するグループID群
int[] disableGroups 受信を拒否するグループID群

戻り値

内容
void -

記述例

// グループID 0, 2 の受信を有効にし、グループID 1, 3 の受信を無効にします。
MonobitEngine.MonobitNetwork.SetReceivingEnabled( new int[] { 0, 2 }, new int[] { 1, 3 } );