機能概要

目次

  概要
  サーバ
  ルーム
  ロビー
  通信同期
  オブジェクト同期


概要


  このページでは、MUNで用意されている、使用頻度の高そうな機能について、軽く触れてみます。

  具体的な機能内容、ここに記載されていない特殊機能については、次ページからの項目を御覧ください。


サーバ

概要

  サーバについて

サーバへの接続

  サーバに接続するためには、以下のメソッドを呼び出します。
  (パラメータに指定する文字定数(以下の例では"v1.0")は開発者で任意の値を設定してください。)
// サーバに接続する
MonobitNetwork.ConnectServer("v1.0");

サーバからの切断

  サーバから切断するためには、以下のメソッドを呼び出します。
// サーバから切断する
MonobitNetwork.DisconnectServer();


ルーム

概要

  ルームについて

ルームへの入室

  ルームに入室するには、以下のいずれかの手法を使って入室します。
// roomName の名称を持つルームを作成して入室する
MonobitNetwork.CreateRoom(roomName);
// roomName の名称を持つルームに入室する(入室するルームが無ければ新規に作成する)
MonobitNetwork.JoinOrCreateRoom(roomName, new RoomSettings(), null);
// roomName の名称を持つルームに入室する(入室するルームが無ければ失敗する)
MonobitNetwork.JoinRoom(roomName);
// ランダムでいずれかのルームに入室する(入室するルームが無ければ失敗する)
MonobitNetwork.JoinRandomRoom();

ルームからの退室

  ルームから退室する場合には、以下のメソッドを呼び出します。
// 現在入室中のルームから退室する
MonobitNetwork.LeaveRoom();

ルーム入室中の各種ルーム情報の取得

  ルームに入室中、以下の方法で、ルーム内情報を取得することが出来ます。
// 入室しているルームの情報の取得
Room room = MonobitNetwork.room;

// 自身の情報を取得
MonobitPlayer myPlayer = MonobitNetwork.player;

// 自身を含む、ルーム内のプレイヤー情報を取得
MonobitPlayer[] playerList = MonobitNetwork.playerList;

// 自身を含まない、ルーム内の他プレイヤー情報を取得
MonobitPlayer[] otherPlayers = MonobitNetwork.otherPlayersList;


ロビー

概要

  ロビーについて

ロビーへの入室

  ロビーに入室するには、以下のいずれかの形式でメソッドを呼び出す必要があります。
// デフォルトのロビーに入室する
MonobitNetwork.JoinLobby();
// ロビー名を作成して入室する
MonobitEngine.LobbyInfo lobbyInfo = new MonobitEngine.LobbyInfo(lobbyName, LobbyKind.Default);
MonobitNetwork.JoinLobby(lobbyInfo);

ロビーからの退室

  ロビーから退室する場合には、以下のメソッドを呼び出す必要があります。
// ロビーから退室する
MonobitNetwork.LeaveLobby();

ロビーに属するルーム情報の一覧を取得

  ロビーに属するルーム情報の一覧を取得するためには、以下のメソッドを呼び出します。
// ロビーに属するルーム情報の一覧を取得する
RoomData[] roomData = MonobitNetwork.GetRoomData();
  注意して頂きたいのは、1つのロビーに大量のルームが存在する場合、
  MonobitNetwork.GetRoomData() の実行を頻繁に行なうことで、サーバに負荷をかけてしまう点です。
  負荷分散のための方法の1つとして、複数のロビーを作成し、ロビー内のルーム数を分散させるということも考慮に入れてください。


通信同期

MonobitViewコンポーネント

  MUN では MonobitView コンポーネントが用意されています。
  通信同期を行なうために、制御したい GameObject に対し、このコンポーネントを事前にアタッチする必要があります。

  GameObject の Inspector から、Add Component > Monobit Networking > Monobit View を選択して割り当ててください。

RPC(リモートプロシージャコール:Remote Procedure Call)

  RPC(リモートプロシージャコール)について

  RPCによる送信処理は、以下のメソッドを呼び出します。
// RPCのメソッドを呼び出し、メッセージを送信する
monobitView.RPC("OnChat", MonobitTargets.All, "Hello MUN!");

  一方、RPCによる受信処理は、[MunRPC]のアトリビュートを適用した、独立した関数を定義します。
// RPCメッセージを受信する
[MunRPC]
void OnChat(string chatMessage)
{
    Debug.Log("ChatMessage : " + chatMessage);
}


オブジェクト同期

MonobitTransformViewコンポーネント

  MUN では MonobitTransformView コンポーネントが用意されています。
  オブジェクトの位置・姿勢・倍率の同期を行なうために、制御したい GameObject に対し、このコンポーネントを事前にアタッチする必要があります。

  GameObject の Inspector から、Add Component > Monobit Networking > Monobit Transform View を選択して割り当ててください。

MonobitAnimatorViewコンポーネント

  同様に、MonobitAnimatorView コンポーネントも用意されています。
  アニメーションの同期を行なうために、制御したい GameObject に対し、このコンポーネントを事前にアタッチする必要があります。

  GameObject の Inspector から、Add Component > Monobit Networking > Monobit Animator View を選択して割り当ててください。

MonobitViewの監視コンポーネントリストへの登録

  上記2つのコンポーネントは、MonobitView の監視コンポーネントリストに登録することで、初めてその機能が有効にすることができます。
  登録は忘れずに行っておいてください。

ネットワーク越しのインスタンス生成

  ネットワーク越しにインスタンスを生成するためには、以下のメソッドを呼び出します。
  ここで生成されたインスタンスは、通常の移動・回転・拡大縮小・アニメーション制御によって、他のクライアントとも連動して動作します。
// ネットワーク越しに、インスタンスを生成する
GameObject obj = MonobitNetwork.Instantiate( "prefabName", Vector3.zero, Quaternion.identity, 0);

ネットワーク越しのインスタンス破棄

  ネットワーク越しにインスタンスを破棄するためには、以下のメソッドを呼び出します。
// ネットワーク越しに、インスタンスを破棄する
MonobitNetwork.Destroy(obj);