グループ制御
目次
概要
事前設定
MonobitEngine.MonobitView.group 変数
MonobitEngine.MonobitNetwork.SetSendingEnabled メソッド (1)
MonobitEngine.MonobitNetwork.SetSendingEnabled メソッド (2)
MonobitEngine.MonobitNetwork.SetReceivingEnabled メソッド (1)
MonobitEngine.MonobitNetwork.SetReceivingEnabled メソッド (2)
グループごとの、情報の送受信を受け付けるかどうかの設定
MMORPGなど、広大なフィールド上を多人数で共有させた空間を動かした場合、想像するだけでも膨大な通信負荷が発生します。
おそらく通信負荷だけで、サーバのネットワークリソースを食い潰し、「重すぎて一歩も動けない状態」になることも考えられます。
グループとは、上記のような状況を回避するために使用されるものです。
例えば広大なフィールドを幾つかのエリア(グループ)に分け、そのエリアに存在する情報のみ送受信するように、通信制限を加えることができます。
全てのエリア、全てのプレイヤーに対し、グループ制御を加えることによって、全体のトラフィック量を下げる効果が出てくることでしょう。
通常のゲームを作る上では考える必要もないかも知れませんが、
膨大な量(あるいは広大な領域)を動かすゲームであれば、グループ制御の適用も考えてみてください。
事前設定▲
グループ制御の対象物には、MonobitViewコンポーネントの登録が必要です
MonobitView にグループ情報が含まれていますので、MonobitView コンポーネント登録が必須です。
MonobitEngine.MonobitView.group 変数▲
機能
自分自身のグループIDを決定します。
原則的に、同一グループIDを持つオブジェクト同士で、オブジェクト同期&RPC通信を行ないます。
そのため、ここで設定した値と、以下に設定した値とで一致しない場合には、通信を行ないません。
・ MonobitEngine.MonobitNetwork.Instantiate の 第4引数
・ MonobitEngine.MonobitNetwork.InstantiateSceneObject の第4引数
また、この値はネットワーク越しに自動同期しませんので、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 オブジェクトの送信可否を決定します。
引数
型 |
変数名 |
内容 |
int |
group |
設定するグループID |
bool |
enabled |
送信を有効にするには true 、 無効にするには false を設定する |
戻り値
記述例
// グループID 1 の送信を無効にします。
MonobitEngine.MonobitNetwork.SetSendingEnabled( 1, false );
MonobitEngine.MonobitNetwork.SetSendingEnabled メソッド (2)▲
機能
指定したグループに属する MonobitView オブジェクトの送信可否を決定します。
引数
型 |
変数名 |
内容 |
int[] |
enableGroups |
送信を許可するグループID群 |
int[] |
disableGroups |
送信を拒否するグループID群 |
戻り値
記述例
// グループID 0, 2 の送信を有効にし、グループID 1, 3 の送信を無効にします。
MonobitEngine.MonobitNetwork.SetSendingEnabled( new int[] { 0, 2 }, new int[] { 1, 3 } );
MonobitEngine.MonobitNetwork.SetReceivingEnabled メソッド (1)▲
機能
指定したグループに属する MonobitView オブジェクトの受信可否を決定します。
引数
型 |
変数名 |
内容 |
int |
group |
設定するグループID |
bool |
enabled |
受信を有効にするには true 、 無効にするには false を設定する |
戻り値
記述例
// グループID 1 の受信を無効にします。
MonobitEngine.MonobitNetwork.SetReceivingEnabled( 1, false );
MonobitEngine.MonobitNetwork.SetReceivingEnabled メソッド (2)▲
機能
指定したグループに属する MonobitView オブジェクトの受信可否を決定します。
引数
型 |
変数名 |
内容 |
int[] |
enableGroups |
受信を許可するグループID群 |
int[] |
disableGroups |
受信を拒否するグループID群 |
戻り値
記述例
// グループID 0, 2 の受信を有効にし、グループID 1, 3 の受信を無効にします。
MonobitEngine.MonobitNetwork.SetReceivingEnabled( new int[] { 0, 2 }, new int[] { 1, 3 } );