ホストチェック

目次

  概要
  事前設定
  MonobitEngine.MonobitNetwork.isHost プロパティ


概要

ゲーム上の「監視役」として、ホストによる操作可否を設定する

  ネットワークゲームの仕組みにおいて、プレイヤーキャラクタ、およびプレイヤーが制御するものについては、
  MonobitView.isMine による「所有権」の有り無しに基づいて、操作の可否を設定する必要がある、ということを前述にて説明しました。

  では、敵キャラクタなどの「ノンプレイヤーキャラクタ」は「誰」が操作すれば良いでしょうか?
  同様に、制限時間やスコア、勝敗などの「ゲームルール上の決定権」は「誰」にあるでしょうか?

  サーバサイド型(サーバが全ての決定権を持つ)のネットワークゲームであれば、サーバがこの役割を果たします。
  しかし MUN は「クライアントサイド型(クライアントが全ての決定権を持つ)」のネットワーク通信ライブラリです。
  サーバが管理するわけにはいきません。

  かといって、これをクライアント1台1台に任せてしまうと、ネットワーク回線状況や、マシンスペックなど、
  様々な要素から「全員がバラバラの結果になる」というケースも想定されます。

  これを防ぐために、MUNでは、同一ルーム上に存在するプレイヤーの1人(原則的にはルーム作成者)を「ホスト」として定め、
  ノンプレイヤーキャラクタの操作や、ゲームルールの決定権を受け持ちます。


事前設定

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

  ルーム内に所属していない限り、ホストとして認識されることはありません。


MonobitEngine.MonobitNetwork.isHost プロパティ

機能

  自身がサーバよりホストとして認定されているかどうかを調べます。

  この値に直接代入することはできません。
  ホストを変更したい場合には、ホストの移譲 を御覧ください。

出力型

内容
bool この値が true であれば、サーバよりホストとして認定されています。

記述例

// ネットワーク越しに作成されたノンプレイヤーキャラクタに対し、ホストであれば操作するように実装します。
class Foo : MonobitEngine.MonoBehaviour
{
    ...

    public void Update()
    {
        if( MonobitEngine.MonobitNetwork.isHost )
        {
            /*
             * ノンプレイヤーキャラクタの行動処理
             */
        }
    }

    ...
}