RPC(Remote Procedure Call)

目次

  概要
  事前設定

  受信制御:受信メソッドの定義

  送信制御:MonobitEngine.MonobitView.RPC メソッド (1)
  送信制御:MonobitEngine.MonobitView.RPC メソッド (2)
  送信制御:MonobitEngine.MonobitView.RPC メソッド (3)

  送信制御:MonobitEngine.MonobitView.RpcSecure メソッド (1)
  送信制御:MonobitEngine.MonobitView.RpcSecure メソッド (2)
  送信制御:MonobitEngine.MonobitView.RpcSecure メソッド (3)

  バッファリング送信無効化:MonobitEngine.MonobitNetwork.RemoveRPCs メソッド (1)
  バッファリング送信無効化:MonobitEngine.MonobitNetwork.RemoveRPCs メソッド (2)
  バッファリング送信無効化:MonobitEngine.MonobitNetwork.RemoveRPCsInGroup メソッド

  補足(1):信頼性のあるUDP通信について
  補足(2):暗号化処理について


概要

任意の情報を通信するための手段

  RPCとは「Remote Procedure Call(リモートプロシージャコール)」の略で、
  簡単に説明すると、ネットワーク上にある、別のクライアント端末のメソッドを呼び出す仕組みのことです。

  MUN では、ネットワーク通信を使って、端末間で情報をやり取りする場合、RPC を用いて実行します。


事前設定

MonobitView コンポーネントの追加が必要です

  RPCメッセージの送受信処理は MonobitView コンポーネントを通じで実行されます。
  そのため、送信処理、および受信処理が、同一のMonobitView コンポーネントを参照できるように、
  GameObject に MonobitView コンポーネントを追加しておく必要があります。

MonobitEngine.MonoBehavior の継承が必要です

  monobitView コンポーネントの参照のため、 RPCメッセージの送信処理、および受信処理が記述されるクラスは、
  MonobitEngine.MonoBehavior を継承している必要があります。

MUNサーバに接続し、かつルームに入室している必要があります

  MUNサーバに接続していない場合はもちろん、ルーム内に入室している状態でない場合にも、
  RPCメッセージの送受信を受け付けません。


受信制御:受信メソッドの定義

[MunRPC]のアトリビュートを付ける

  RPCメッセージの受信に伴い呼び出される「別のクライアント端末のメソッド」の定義については、
  メソッド定義の接頭に [MunRPC] のアトリビュートを付加する必要があります。

RPCメッセージとして受信したい情報は、引数として指定する

  RPCとして任意の情報を送受信したい場合、その受信情報を「メソッドの引数」として指定して下さい。
  なお、現在のMUNでは、以下の種類の値を引数型として指定することが出来ます。
・bool(Boolean)
・byte(Byte)
・char(SByte)
・short(Int16)
・unsingned short(UInt16)
・int(Int32)
・unsigned int(UInt32)
・long(Int64)
・unsigned long(UInt64)
・float(Single)
・double(Double)
・string(String)
・Vector2, Vector3, Vector4
・Quaternion
・MonobitEngine.MonobitPlayer
・上述のデータ型に基づく、任意の長さを持つ配列情報
・上述のデータ型に基づく Hashtable
・上述のデータ型に基づく Dictionary
・上述のデータ型で構成された object(Object)

戻り値型は「void」固定です

  RPCの受信メソッドは、何かしらの情報を送信者に「return で返す」ということはできません。
  もし何らかの情報を返したい場合には、受信メソッド内で、別途 RPC 送信処理を実行してください。
  (その送信処理に対応した受信メソッドが必要です。)

記述例

  RPCの受信メソッドの記述例です。
  (このRPC受信メソッドの送信側の記述については、後述の説明を御覧ください。)
// RPCで「送信者のプレイヤーID」、「送信日時」を受け取り、その情報を表示します。
[MunRPC]
void ReceiveFunc( int id, string nowTime )
{
    Debug.Log( "id = " + id + ", nowTime = " + nowTime );
}


送信制御:MonobitEngine.MonobitView.RPC メソッド (1)

機能

  同一ルーム内のプレイヤーに対し、指定方式に基づき、RPCメッセージを送信します。
  この関数によるRPCメッセージは、以下の設定で送信されます。
     ・ MUNサーバに対し「UDP」の接続プロトコルによる接続を設定した場合、常に「RUDP(信頼性のあるUDP)」で通信する。
     ・ RPCメッセージに対する暗号化処理は行なわない。

引数

変数名 内容
string MethodName 受信メソッドの名前を文字列で指定します。
MonobitEngine.MonobitTargets target 送信する宛先や送信方法に対する指定。
以下に示す定数値の、いずれか1つを指定してください。
MonobitTargets.All 送信者自身には即座に受信し、送信者自身以外のルーム内プレイヤーに対し、サーバを介して送信します。
MonobitTargets.Others 送信者自身以外のルーム内プレイヤーに対し、サーバを介して送信します。
MonobitTargets.Host ホストにのみ、サーバを介して送信します。
MonobitTargets.AllBuffered 送信者自身には即座に受信し、送信者自身以外のルーム内プレイヤーに対し、サーバを介して送信します。
途中入室したユーザーに対しては、送信者自身がルーム内に留まる限り、遅延送信(バッファリング)されます。
MonobitTargets.OthersBuffered 送信者自身以外のルーム内プレイヤーに対し、サーバを介して送信します。
途中入室したユーザーに対しては、送信者自身がルーム内に留まる限り、遅延送信(バッファリング)されます。
MonobitTargets.AllViaServer 送信者自身も含むルーム内プレイヤー全員に対し、サーバを介して送信します。
MonobitTargets.AllBufferedViaServer 送信者自身も含むルーム内プレイヤー全員に対し、サーバを介して送信します。
途中入室したユーザーに対しては、送信者自身がルーム内に留まる限り、遅延送信(バッファリング)されます。
params object[] parameters 受信メソッドに渡す、以下のデータ型で定義された1つ以上の引数を指定します。
・bool(Boolean)
・byte(Byte)
・char(SByte)
・short(Int16)
・unsingned short(UInt16)
・int(Int32)
・unsigned int(UInt32)
・long(Int64)
・unsigned long(UInt64)
・float(Single)
・double(Double)
・string(String)
・Vector2, Vector3, Vector4
・Quaternion
・MonobitEngine.MonobitPlayer
・上述のデータ型に基づく、任意の長さを持つ配列情報
・上述のデータ型に基づく Hashtable
・上述のデータ型に基づく Dictionary
・上述のデータ型で構成された object(Object)
必ず受信メソッドと同じ型、同じ順番で記述してください。

戻り値

内容
void -

記述例

/*
 * 上述の受信メソッドで説明した「ReceiveFunc」に対し、自身のプレイヤーIDと、現在の時刻を、
 * 自身以外の全員(途中入室者を含む)に対して送信します。
 * (MonobitEngine.MonoBehaviour を継承しているクラス内であることが条件です)
 */
monobitView.RPC("ReceiveFunc", MonobitEngine.MonobitTargets.OthersBuffered, MonobitEngine.MonobitNetwork.player.ID, System.DateTime.Now.ToString());


送信制御:MonobitEngine.MonobitView.RPC メソッド (2)

機能

  同一ルーム内の指定した「単数のプレイヤー」に対し、RPCメッセージを送信します。
  この関数によるRPCメッセージは、以下の設定で送信されます。
     ・ MUNサーバに対し「UDP」の接続プロトコルによる接続を設定した場合、常に「RUDP(信頼性のあるUDP)」で通信する。
     ・ RPCメッセージに対する暗号化処理は行なわない。

引数

変数名 内容
string MethodName 受信メソッドの名前を文字列で指定します。
MonobitEngine.MonobitPlayer targetPlayer 送信相手となる単数のプレイヤー情報を指定します。
params object[] parameters 受信メソッドに渡す、以下のデータ型で定義された1つ以上の引数を指定します。
・bool(Boolean)
・byte(Byte)
・char(SByte)
・short(Int16)
・unsingned short(UInt16)
・int(Int32)
・unsigned int(UInt32)
・long(Int64)
・unsigned long(UInt64)
・float(Single)
・double(Double)
・string(String)
・Vector2, Vector3, Vector4
・Quaternion
・MonobitEngine.MonobitPlayer
・上述のデータ型に基づく、任意の長さを持つ配列情報
・上述のデータ型に基づく Hashtable
・上述のデータ型に基づく Dictionary
・上述のデータ型で構成された object(Object)
必ず受信メソッドと同じ型、同じ順番で記述してください。

戻り値

内容
void -

記述例

/*
 * 上述の受信メソッドで説明した「ReceiveFunc」に対し、自身のプレイヤーIDと、現在の時刻を、
 * 「他のプレイヤーの誰か」に対して送信します。
 * (MonobitEngine.MonoBehaviour を継承しているクラス内であることが条件です)
 */
if( MonobitEngine.MonobitNetwork.otherPlayersList != null )
{
    monobitView.RPC( "ReceiveFunc", MonobitEngine.MonobitNetwork.otherPlayersList[0], MonobitEngine.MonobitNetwork.player.ID, System.DateTime.Now.ToString() );
}


送信制御:MonobitEngine.MonobitView.RPC メソッド (3)

機能

  同一ルーム内の指定した「単数あるいは複数のプレイヤー」に対し、RPCメッセージを送信します。
  この関数によるRPCメッセージは、以下の設定で送信されます。
     ・ MUNサーバに対し「UDP」の接続プロトコルによる接続を設定した場合、常に「RUDP(信頼性のあるUDP)」で通信する。
     ・ RPCメッセージに対する暗号化処理は行なわない。

引数

変数名 内容
string MethodName 受信メソッドの名前を文字列で指定します。
MonobitEngine.MonobitPlayer[] targetPlayers 送信相手となる単数あるいは複数のプレイヤー情報を指定します。
params object[] parameters 受信メソッドに渡す、以下のデータ型で定義された1つ以上の引数を指定します。
・bool(Boolean)
・byte(Byte)
・char(SByte)
・short(Int16)
・unsingned short(UInt16)
・int(Int32)
・unsigned int(UInt32)
・long(Int64)
・unsigned long(UInt64)
・float(Single)
・double(Double)
・string(String)
・Vector2, Vector3, Vector4
・Quaternion
・MonobitEngine.MonobitPlayer
・上述のデータ型に基づく、任意の長さを持つ配列情報
・上述のデータ型に基づく Hashtable
・上述のデータ型に基づく Dictionary
・上述のデータ型で構成された object(Object)
必ず受信メソッドと同じ型、同じ順番で記述してください。

戻り値

内容
void -

記述例

/*
 * 上述の受信メソッドで説明した「ReceiveFunc」に対し、自身のプレイヤーIDと、現在の時刻を、
 * 「ルームホストと自分自身を除くすべてのプレイヤー」に対して送信します。
 * (MonobitEngine.MonoBehaviour を継承しているクラス内であることが条件です)
 */
if( MonobitEngine.MonobitNetwork.otherPlayersList != null )
{
    // 送信対象となるプレイヤーを検出
    List<MonobitEngine.MonobitPlayer> playerList = new List<MonobitEngine.MonobitPlayer>();
    foreach ( MonobitEngine.MonobitPlayer player in MonobitEngine.MonobitNetwork.otherPlayersList )
    {
        if ( !player.isHost )
        {
            playerList.Add( player );
        }
    }
    // 送信
    monobitView.RPC( "ReceiveFunc", playerList.ToArray(), MonobitEngine.MonobitNetwork.player.ID, System.DateTime.Now.ToString() );
}


送信制御:MonobitEngine.MonobitView.RpcSecure メソッド (1)

機能

  同一ルーム内のプレイヤーに対し、指定方式に基づき、セキュアなRPCメッセージを送信します。

引数

変数名 内容
string MethodName 受信メソッドの名前を文字列で指定します。
MonobitEngine.MonobitTargets target 送信する宛先や送信方法に対する指定。
以下に示す定数値の、いずれか1つを指定してください。
MonobitTargets.All 送信者自身には即座に受信し、送信者自身以外のルーム内プレイヤーに対し、サーバを介して送信します。
MonobitTargets.Others 送信者自身以外のルーム内プレイヤーに対し、サーバを介して送信します。
MonobitTargets.Host ルーム内の特定の単数あるいは複数のプレイヤーに対して送信します。
MonobitTargets.AllBuffered 送信者自身には即座に受信し、送信者自身以外のルーム内プレイヤーに対し、サーバを介して送信します。
途中入室したユーザーに対しては、送信者自身がルーム内に留まる限り、遅延送信(バッファリング)されます。
MonobitTargets.OthersBuffered 送信者自身以外のルーム内プレイヤーに対し、サーバを介して送信します。
途中入室したユーザーに対しては、送信者自身がルーム内に留まる限り、遅延送信(バッファリング)されます。
MonobitTargets.AllViaServer 送信者自身も含むルーム内プレイヤー全員に対し、サーバを介して送信します。
MonobitTargets.AllBufferedViaServer 送信者自身も含むルーム内プレイヤー全員に対し、サーバを介して送信します。
途中入室したユーザーに対しては、送信者自身がルーム内に留まる限り、遅延送信(バッファリング)されます。
bool reliable 送信するRPCメッセージについて「信頼性のあるUDP通信(RUDP)」による送信を行うかどうかの設定です。
なお、この値はMUNサーバとの接続プロトコルとして「UDP」を選択している場合にのみ有効です。
  ※ MUNサーバとの接続プロトコルとして「TCP」を選択している場合、この値は意味を成しません。

この値を true に設定した場合、送信されるRPCメッセージに対し「信頼性のあるUDP通信(RUDP)」を適用します。
false に設定した場合には、送信されるRPCメッセージに対して一般的なUDP通信を行ないます。

詳細につきましては 補足(1):信頼性のあるUDP通信について をご覧ください。
bool encrypt 送信するRPCメッセージの暗号化を適用するかどうかの設定です。
この値を true に設定した場合、送信されるRPCメッセージに暗号化を施して送信します。
false に設定した場合には、送信されるRPCメッセージに対して暗号化を施しません。

詳細につきましては 補足(2):暗号化処理について をご覧ください。
params object[] parameters 受信メソッドに渡す、以下のデータ型で定義された1つ以上の引数を指定します。
・bool(Boolean)
・byte(Byte)
・char(SByte)
・short(Int16)
・unsingned short(UInt16)
・int(Int32)
・unsigned int(UInt32)
・long(Int64)
・unsigned long(UInt64)
・float(Single)
・double(Double)
・string(String)
・Vector2, Vector3, Vector4
・Quaternion
・MonobitEngine.MonobitPlayer
・上述のデータ型に基づく、任意の長さを持つ配列情報
・上述のデータ型に基づく Hashtable
・上述のデータ型に基づく Dictionary
・上述のデータ型で構成された object(Object)
必ず受信メソッドと同じ型、同じ順番で記述してください。

戻り値

内容
void -

記述例

/*
 * 上述の受信メソッドで説明した「ReceiveFunc」に対し、自身のプレイヤーIDと、現在の時刻を、
 * 自身以外の全員(途中入室者を含む)に対し送信します。
 * (MonobitEngine.MonoBehaviour を継承しているクラス内であることが条件です)
 *
 * 送信する際、MUNサーバとの接続プロトコルにUDPを指定している場合、信頼性のあるUDP通信(RUDP)を利用します。
 * また、送信するRPCメッセージに対し、暗号化を適用します。
 */
monobitView.RpcSecure( "ReceiveFunc", MonobitEngine.MonobitTargets.OthersBuffered, true, true, MonobitEngine.MonobitNetwork.player.ID, System.DateTime.Now.ToString() );


送信制御:MonobitEngine.MonobitView.RpcSecure メソッド (2)

機能

  同一ルーム内の指定した「単数のプレイヤー」に対し、RPCメッセージを送信します。

引数

変数名 内容
string MethodName 受信メソッドの名前を文字列で指定します。
MonobitEngine.MonobitPlayer targetPlayer 送信相手となる単数のプレイヤー情報を指定します。
bool reliable 送信するRPCメッセージについて「信頼性のあるUDP通信(RUDP)」による送信を行うかどうかの設定です。
なお、この値はMUNサーバとの接続プロトコルとして「UDP」を選択している場合にのみ有効です。
  ※ MUNサーバとの接続プロトコルとして「TCP」を選択している場合、この値は意味を成しません。

この値を true に設定した場合、送信されるRPCメッセージに対し「信頼性のあるUDP通信(RUDP)」を適用します。
false に設定した場合には、送信されるRPCメッセージに対して一般的なUDP通信を行ないます。

詳細につきましては 補足(1):信頼性のあるUDP通信について をご覧ください。
bool encrypt 送信するRPCメッセージの暗号化を適用するかどうかの設定です。
この値を true に設定した場合、送信されるRPCメッセージに暗号化を施して送信します。
false に設定した場合には、送信されるRPCメッセージに対して暗号化を施しません。

詳細につきましては 補足(2):暗号化処理について をご覧ください。
params object[] parameters 受信メソッドに渡す、以下のデータ型で定義された1つ以上の引数を指定します。
・bool(Boolean)
・byte(Byte)
・char(SByte)
・short(Int16)
・unsingned short(UInt16)
・int(Int32)
・unsigned int(UInt32)
・long(Int64)
・unsigned long(UInt64)
・float(Single)
・double(Double)
・string(String)
・Vector2, Vector3, Vector4
・Quaternion
・MonobitEngine.MonobitPlayer
・上述のデータ型に基づく、任意の長さを持つ配列情報
・上述のデータ型に基づく Hashtable
・上述のデータ型に基づく Dictionary
・上述のデータ型で構成された object(Object)
必ず受信メソッドと同じ型、同じ順番で記述してください。

戻り値

内容
void -

記述例

/*
 * 上述の受信メソッドで説明した「ReceiveFunc」に対し、自身のプレイヤーIDと、現在の時刻を、
 * 「他のプレイヤーの誰か」に対して送信します。
 * (MonobitEngine.MonoBehaviour を継承しているクラス内であることが条件です)
 *
 * 送信する際、MUNサーバとの接続プロトコルにUDPを指定している場合、信頼性のあるUDP通信(RUDP)を適用せず、一般的なUDP通信で送信します。
 * また、送信するRPCメッセージに対し、暗号化を適用します。
 */
if( MonobitEngine.MonobitNetwork.otherPlayersList != null )
{
    monobitView.RpcSecure( "ReceiveFunc", MonobitEngine.MonobitNetwork.otherPlayersList[0], false, true, MonobitEngine.MonobitNetwork.player.ID, System.DateTime.Now.ToString() );
}


送信制御:MonobitEngine.MonobitView.RpcSecure メソッド (3)

機能

  同一ルーム内の指定した「単数あるいは複数のプレイヤー」に対し、RPCメッセージを送信します。

引数

変数名 内容
string MethodName 受信メソッドの名前を文字列で指定します。
MonobitEngine.MonobitPlayer[] targetPlayers 送信相手となる単数あるいは複数のプレイヤー情報を指定します。
bool reliable 送信するRPCメッセージについて「信頼性のあるUDP通信(RUDP)」による送信を行うかどうかの設定です。
なお、この値はMUNサーバとの接続プロトコルとして「UDP」を選択している場合にのみ有効です。
  ※ MUNサーバとの接続プロトコルとして「TCP」を選択している場合、この値は意味を成しません。

この値を true に設定した場合、送信されるRPCメッセージに対し「信頼性のあるUDP通信(RUDP)」を適用します。
false に設定した場合には、送信されるRPCメッセージに対して一般的なUDP通信を行ないます。

詳細につきましては 補足(1):信頼性のあるUDP通信について をご覧ください。
bool encrypt 送信するRPCメッセージの暗号化を適用するかどうかの設定です。
この値を true に設定した場合、送信されるRPCメッセージに暗号化を施して送信します。
false に設定した場合には、送信されるRPCメッセージに対して暗号化を施しません。

詳細につきましては 補足(2):暗号化処理について をご覧ください。
params object[] parameters 受信メソッドに渡す、以下のデータ型で定義された1つ以上の引数を指定します。
・bool(Boolean)
・byte(Byte)
・char(SByte)
・short(Int16)
・unsingned short(UInt16)
・int(Int32)
・unsigned int(UInt32)
・long(Int64)
・unsigned long(UInt64)
・float(Single)
・double(Double)
・string(String)
・Vector2, Vector3, Vector4
・Quaternion
・MonobitEngine.MonobitPlayer
・上述のデータ型に基づく、任意の長さを持つ配列情報
・上述のデータ型に基づく Hashtable
・上述のデータ型に基づく Dictionary
・上述のデータ型で構成された object(Object)
必ず受信メソッドと同じ型、同じ順番で記述してください。

戻り値

内容
void -

記述例

/*
 * 上述の受信メソッドで説明した「ReceiveFunc」に対し、自身のプレイヤーIDと、現在の時刻を、
 * 「ルームホストと自分自身を除くすべてのプレイヤー」に対して送信します。
 * (MonobitEngine.MonoBehaviour を継承しているクラス内であることが条件です)
 *
 * 送信する際、MUNサーバとの接続プロトコルにUDPを指定している場合、信頼性のあるUDP通信(RUDP)を適用せず、一般的なUDP通信で送信します。
 * また、送信するRPCメッセージに対し、暗号化を適用します。
 */
if( MonobitEngine.MonobitNetwork.otherPlayersList != null )
{
    // 送信対象となるプレイヤーを検出
    List<MonobitEngine.MonobitPlayer> playerList = new List<MonobitEngine.MonobitPlayer>();
    foreach ( MonobitEngine.MonobitPlayer player in MonobitEngine.MonobitNetwork.otherPlayersList )
    {
        if ( !player.isHost )
        {
            playerList.Add( player );
        }
    }
    // 送信
    monobitView.RpcSecure( "ReceiveFunc", playerList.ToArray(), false, true, MonobitEngine.MonobitNetwork.player.ID, System.DateTime.Now.ToString() );
}


バッファリング送信無効化:MonobitEngine.MonobitNetwork.RemoveRPCs メソッド (1)

機能

  バッファリング送信されたRPCメッセージについて、指定されたプレイヤーが保持するRPCバッファを消去し、
  以降のバッファリング送信を無効化します。

  バッファリング送信とは、MonobitEngine.MonobitView.RPC メソッド または MonobitEngine.MonobitView.RpcSecure メソッド における
  送信方法の指定について、以下の3種類を設定した場合の送信方法です。

      ・MonobitTargets.AllBuffered
      ・MonobitTargets.OthersBuffered
      ・MonobitTargets.AllBufferedViaServer

  送信方法の指定について、上記を指定して送信していない場合には、このメソッドは何の効果も与えません(エラー表示もなされません)。

引数

変数名 内容
MonobitEngine.MonobitPlayer player バッファリング送信を行なっているプレイヤー情報

戻り値

内容
void -

記述例

/*
 * 自分自身のバッファリング送信されているRPCメッセージについて、
 * RPCバッファを消去し、以降のバッファリング送信を無効化します。
*/
MonobitEngine.MonobitNetwork.RemoveRPCs( MonobitEngine.MonobitNetwork.player );


バッファリング送信無効化:MonobitEngine.MonobitNetwork.RemoveRPCs メソッド (2)

機能

  バッファリング送信されたRPCメッセージについて、指定された MonobitView オブジェクトが保持するRPCバッファを消去し、
  以降のバッファリング送信を無効化します。

  バッファリング送信とは、MonobitEngine.MonobitView.RPC メソッド または MonobitEngine.MonobitView.RpcSecure メソッド における
  送信方法の指定について、以下の3種類を設定した場合の送信方法です。

      ・MonobitTargets.AllBuffered
      ・MonobitTargets.OthersBuffered
      ・MonobitTargets.AllBufferedViaServer

  送信方法の指定について、上記を指定して送信していない場合には、このメソッドは何の効果も与えません(エラー表示もなされません)。

引数

変数名 内容
MonobitEngine.MonobitView targetMonobitView バッファリング送信を行なっている MonobitView オブジェクト情報

戻り値

内容
void -

記述例

/*
 * このスクリプトがアタッチされている MonobitView コンポーネントからバッファリング送信されている
 * RPCメッセージについて、RPCバッファを消去し、以降のバッファリング送信を無効化します。
 *
 * 事前に以下の要件を満たしている必要があります。
 *   ・削除対象のオブジェクトに、MonobitView コンポーネントが登録されていること。
 *   ・このメソッドが実行されるクラスが、MonobitEngine.MonoBehaviour を継承していること。
 *   ・このメソッドが実行されるスクリプトが、削除対象のオブジェクトコンポーネントとしてアタッチされていること。
 */
MonobitEngine.MonobitNetwork.RemoveRPCs( monobitView );


バッファリング送信無効化:MonobitEngine.MonobitNetwork.RemoveRPCsInGroup メソッド

機能

  バッファリング送信されたRPCメッセージについて、指定されたグループに所属する MonobitView オブジェクトが保持するRPCバッファを消去し、
  以降のバッファリング送信を無効化します。

  バッファリング送信とは、MonobitEngine.MonobitView.RPC メソッド または MonobitEngine.MonobitView.RpcSecure メソッド における
  送信方法の指定について、以下の3種類を設定した場合の送信方法です。

      ・MonobitTargets.AllBuffered
      ・MonobitTargets.OthersBuffered
      ・MonobitTargets.AllBufferedViaServer

  送信方法の指定について、上記を指定して送信していない場合には、このメソッドは何の効果も与えません(エラー表示もなされません)。

引数

変数名 内容
int targetGroup バッファリング送信を行なっている MonobitView オブジェクト群が所属するグループ。
グループについては、以下のページをご覧ください。
  「■MUNクライアントの主要機能」 > 「ネットワーク越しのオブジェクトの生成」 > 「MonobitEngine.MonobitNetwork.Instantiate メソッド(1)」
  「■MUNクライアントの主要機能」 > 「ネットワーク越しのオブジェクトの生成」 > 「MonobitEngine.MonobitNetwork.Instantiate メソッド(2)」
  「■MUNクライアントの主要機能」 > 「ネットワーク越しのオブジェクトの生成」 > 「MonobitEngine.MonobitNetwork.InstantiateSceneObject メソッド」
  「■MUNクライアントの主要機能」 > 「グループ制御」

戻り値

内容
void -

記述例

/*
 * グループID : 0 に所属する MonobitView コンポーネントからバッファリング送信されている
 * RPCメッセージについて、RPCバッファを消去し、以降のバッファリング送信を無効化します。
 */
MonobitEngine.MonobitNetwork.RemoveRPCsInGroup( 0 );


補足(1):信頼性のあるUDP通信について

「信頼性のあるUDP通信」とは?

  「信頼性のあるUDP通信」とは、「Reliable UDP」とも「RUDP」とも呼ばれる通信方式のことで、
  接続プロトコルとしては「UDP」であるものの、「TCPにはあってUDPにはない」以下の機能を備えさせることが出来ます。

  1. 送信データを受信したときにエラーが発生したり、データ自体に欠損があった場合、送信側に再送要求を行ないます。
      UDPの接続プロトコルは、原則として、受信時に発生したエラーやデータ欠損に対し保証をしません。
      しかし、このフラグを有効にした場合、送信側に再度同じデータを再送信するように、内部的に処理します。
      これにより、送信データについてほぼ間違いなく受信されることを可能にします。

  2. 送信側が送信した順番通りに、受信側が受信するようにします。
      UDPの接続プロトコルは、原則として、送信したメッセージの順番通りに受信側が受信することを保証しません。
      先に送信した情報が、後に送信した情報よりも遅れて受信側に到達することもあり得ます。
      しかし、このフラグを有効にした場合、送信した順番通りに受信側で受信することを保証します。
      (内部的には、後から送信されたものを先に受信した場合、先に送信した情報を受信するまで受信時の処理を留保します。)

  なお、この項目は、MonobitServerSettings.asset の Server Settings > Protocol の項目について「UDP」 を選択している場合のみ意味を成します。
  同項目について「TCP」を選択している場合、このフラグを無効にした状態でも、自動的に有効にした状態と同一の効果が現れます。


補足(2):暗号化処理について

MUN における暗号化処理のメカニズムについて

  MUN では、RPCメッセージについて暗号化処理を有効にした場合、ECDH を用いた以下の手続きによる「暗号鍵共有」と
  データ送受信に伴う「暗号化&復号化処理」を行ないます。
1. クライアント側からサーバ側に接続を確立すると同時に、サーバ側がそのクライアント専用の秘密鍵と公開鍵を生成し、
  その接続確立応答を受けたクライアント側でも、サーバに対する秘密鍵と公開鍵を生成する。

2. クライアント側からサーバ側に、クライアント側で生成した公開鍵を送信し、
  その受信を受けたサーバ側からクライアント側に、サーバ側で生成した「そのクライアント専用の公開鍵」を送信する。

3. クライアント側はサーバ側より受信した「サーバ側の公開鍵」と「クライアント側の秘密鍵」を使って「クライアント側の共通鍵」を生成し、
  サーバ側はクライアント側より受信した「クライアント側の公開鍵」と「サーバ側の秘密鍵」を使って「サーバ側の共通鍵」を生成する。
    ※ 「クライアント側の共通鍵」と「サーバ側の共通鍵」は同一のものになる。

4. サーバ/クライアントを問わず、送信側は「送信側の共通鍵」を使ってデータを暗号化し、受信側に送信する。

5. 受信側は「受信側の共通鍵」を使ってデータを復号化し、受信処理を実行する。