重要: UNet は非推奨のソリューションになり、現在、新しい Multiplayer とネットワーキングソリューション (Netcode for GameObjects) が開発中です。詳細は、GameObjects Web サイトの Unity Netcode を参照してください。 |
NetworkManager コンポーネントを使用すると、ネットワーク化されたゲームの状態を管理することができます。これにより、エディターのインターフェースが提供され、ネットワーク、オブジェクトのスポーンに使うプレハブ、ゲームの状態に合わせ使用するシーンなどを制御することができます。
ゲームに Network Manager を実装する方法の詳細については、Network Managerの使用 を参照してください。
プロパティ | 機能 |
---|---|
Dont Destroy On Load | このプロパティはシーンが変わるときに Network Manager を設定したゲームオブジェクトが破棄されるかどうかを制御します。このチェックボックスにチェックを入れると、ゲームでシーンが変わるときに Network Manager ゲームオブジェクトは破棄されません。チェックボックスにチェックを入れないと、Network Manager を設定したゲームオブジェクトが存在するシーンがアクティブなシーンではなくなるときに、ゲームオブジェクトは破棄されます。 これは、各シーンで複数の別々の Network Manager ゲームオブジェクトを管理したい場合に便利です。デフォルトでは、このチェックボックスはチェックされています。 |
Run In Background | このプロパティを使用すると、実行中のウィンドウがフォーカスされていないときにネットワーク化されたゲームを実行するかどうかを制御できます。ウィンドウがフォーカスされていないときにゲームを実行したい場合はチェックボックスにチェックを入れます。ゲームを停止したい場合は、チェックを外します。デフォルトでは、このチェックボックスはチェックされています。ローカルホストを使用してテストする場合などに、同じマシン上でプログラムの複数のインスタンスを実行する場合は、このプロパティを有効にする必要があります。モバイルプラットフォームにデプロイするときは、この機能を無効にする必要があります。この機能を有効にすると、Network Manager の起動時に Application.runInBackground が True に設定されます。このプロパティは Unity のメニューで設定することもできます。Edit > Project Settings に移動し、Player カテゴリを選択し、Resolution and Presentation パネルに移動します。 |
Log Level | このプロパティを使用すると、コンソールウィンドウへ出力される情報量を制御できます。情報のレベルが低いと、より多くの情報が得られます。 レベルが高いと情報が少なくなります。各レベルでは、それより高いレベルのすべてのメッセージが含まれます。例えば、Warn (警告) を選択すると、コンソールには Error (エラー) と Fatal (致命的エラー) のログメッセージもすべて出力されます。 ドロップダウンはレベルが低い順に表示されています。このプロパティはデフォルトで Info (情報) に設定されています。 ログレベルを Set in Scripting に設定することで、Network Manager がログレベルをまったく設定しないようにすることができます。つまり、独自のスクリプトを使ってレベルを制御することができます。 |
Offline Scene | シーンをこのフィールドに割り当てると、ネットワークセッションが停止する場合に (例えば、クライアントの接続が切れたとき、サーバーがシャットダウンしたときなど)、Network Manager が自動的に指定したシーンに切り替えます。 |
Online Scene | シーンをこのフィールドに割り当てると、ネットワークセッションが開始する場合に (例えば、クライアントがサーバーに接続するとき、サーバーが接続をリッスンし始めるときなど)、Network Manager が自動的に指定したシーンに切り替えます。 |
ネットワーク情報 | インスペクタのこのセクションを展開すると、以下のようなネットワーク関連の設定にアクセスできます。 |
ウェブソケットを使用する | When running as a host, enable this setting to make the host listen for WebSocket connections instead of normal transport layer connections, so that WebGL clients can connect to it (if you build your game for the Web platform). These Web instances of your game cannot act as a host (in either peer-hosted or server-only mode). Therefore, for Web instances of your multiplayer game to be able to find each other and play together, you must host a server-only instance of your game running in LAN mode, with a publicly reachable IP address, and it must have this option enabled. This checkbox is unticked by default. |
ネットワークアドレス | 現在使用されているネットワークアドレス。クライアントの場合は、接続先のサーバーのアドレスです。サーバーの場合、これはローカルアドレスです。デフォルトでは、「localhost」に設定されています。 |
ネットワークポート | 現在使用中のネットワークポート。クライアントの場合は、接続先のサーバーのポートです。サーバーの場合、これはリッスンポートです。デフォルトでは、7777に設定されています。 |
サーバーバインドTo IP | 特定のIPアドレスにバインドするかどうかをサーバーに指示できるようにします。このチェックボックスをオンにしない場合、特定のIPアドレスにバインドすることはありません(IP_ANY)。このチェックボックスは、デフォルトではチェックされていません。サーバーに複数のネットワークアドレスがあり(例:内部LAN、外部インターネット、VPN)、ゲームを提供するIPアドレスを特定したい場合に使用します。 |
サーバーバインドアドレス | このフィールドは、[Server Bind To IP]チェックボックスをオンにしたときのみ表示されます。このフィールドには、サーバーがバインドする特定のIPアドレスを入力します。 |
スクリプトCRCチェック | この機能を有効にすると、Unityはクライアントとサーバーが一致するスクリプトを使用しているかどうかをチェックします。これは、古いバージョンのクライアントが最新(更新)バージョンのサーバーに接続していないことを確認するのに便利です。このチェックボックスはデフォルトでチェックされています。これは、サーバとクライアントの間で(CRCチェック)[https://en.wikipedia.org/wiki/Cyclic_redundancy_check]を実行し、NetworkBehaviourスクリプトが一致することを確認することによって行われます。これは、クライアントとサーバーで意図的に異なるUnityプロジェクトを使用している場合など、適切でない場合があります。しかし、他のほとんどのケースでは、有効にしておくべきです。 |
最大遅延時間 | バッファリングされたメッセージを遅延させる最大時間を秒単位で指定します。デフォルトの0.01秒は、パケットを最大で10ミリ秒遅らせることを意味します。0に設定すると、HLAPI接続バッファリングが無効になります。デフォルトでは0.01に設定されています。 |
最大バッファリングパケット数 | NetworkConnection が各チャネルでバッファリングできるパケットの最大数。これは、ChannelOption.MaxPendingBuffers チャンネルオプションに対応するものです。デフォルトでは16に設定されています。 |
パケットフラグメンテーション | これにより、 NetworkConnection インスタンスは、 maxPacketSize より大きい、最大64Kまでのパケットを断片化することができます。これにより、大きなパケットを送信する際に遅延が発生することがあります。このチェックボックスはデフォルトでオンに設定されています。 |
MatchMakerホストURI | MatchMakerサーバーのホストアドレスです。デフォルトでは mm.unet.unity3d.com にあるグローバルな Unity Multiplayer Service を指しており、通常これを変更する必要はありません。Unity は、ゲームのプレイヤーを世界中の地域サーバーに自動的にグループ化し、同じ地域のプレイヤー間で高速なマルチプレイの応答時間を保証します。これは、例えば、ヨーロッパ、アメリカ、アジアのプレイヤーは、通常、同じグローバル地域の他のプレイヤーとプレイすることになります。この値をオーバーライドして、どの地域のサーバーに接続するかを明示的に制御することができます。プレイヤーにグローバルリージョン外のサーバーに参加するオプションを与えたい場合、スクリプトでこれを行うことができます。例えば、アメリカにいるプレイヤーAが、ヨーロッパにいるプレイヤーBのマッチメーカーに接続したい場合。その場合、ゲーム内で希望するグローバルリージョンを設定できる必要があります。したがって、これを選択するためのUI機能を記述する必要があります。詳細と地域サーバーURIについては、APIリファレンスドキュメントNetworkMatch.baseUri を参照してください。 |
MatchMaker Port | Matchmakerサーバーのホストポートです。 デフォルトでは443番を指しており、通常は変更する必要はありません。 |
試合名 | 現在のマッチの名前を定義する。デフォルトでは “default ”に設定されている。 |
最大マッチングサイズ | 現在のマッチの最大プレイヤー数を定義します。デフォルトでは4人に設定されています。 |
スポーンインフォ | インスペクタのこのセクションを展開すると、以下のスポーン関連の設定にアクセスできます。 |
プレーヤープレハブ | Unity がサーバー上でプレイヤー GameObject を作成するために使用するデフォルトのプレハブを定義します。Unityはサーバー上のAddPlayer のデフォルトハンドラでPlayer GameObjectを作成します。この挙動をオーバーライドするには、(OnServerAddPlayer)[https://docs.unity3d.com/ScriptReference/Networking.NetworkManager.OnServerAddPlayer.html]を実装してください。 |
オートクリエイトプレーヤー | 接続時やSceneの変更時に、プレイヤーのGameObjectを自動生成させたい場合はチェックを入れてください。デフォルトでは、このチェックボックスはオンになっています。MigrationManager を使用していて、Auto Create Player を有効にしていない場合は、クライアントが再接続する際にClientScene.SendReconnectMessage を呼び出す必要があることに注意してください。 |
プレイヤースポーン方式 | Unityが新しいプレイヤーのGameObjectをどこでスポーンするかを決定する方法を定義します。デフォルトではRandomに設定されています。 |
Random | ランダムを選択すると、ランダムに選ばれたstartPositionsにプレイヤーをスポーンします。 |
ラウンドロビン | ラウンドロビンを選択して、セットリスト内のstartPositionsを循環させます。 |
登録されたスポーン可能なプレファブ | このリストを使って、Network Manager に認識させたいプレハブを追加します。これにより、ネットワークマネージャがプレハブを生成できるようになります。また、スクリプトで追加したり削除したりすることもできます。 |
アドバンストコンフィグレーション | このチェックボックスをオンにすると、[Network Manager Inspector] ウィンドウに高度な設定オプションが表示されます。 |
最大接続数 | サポートする同時ネットワーク接続の最大数を定義します。デフォルトでは 4 に設定されています。 |
Qosチャンネル | 現在のネットワーク管理者が持つさまざまな通信チャネルと、各チャネルのQoS(Quality Of Service)設定を含むリストです。このリストを使用して、チャネルの追加や削除、QoS設定の調整を行います。また、スクリプトを使用してチャンネルを設定することもできます。各 QoS オプションの説明については、QosType を参照してください。 |
タイムアウト | |
最小更新タイムアウト | ネットワークスレッドがネットワークメッセージを送信するまでの最短時間(ミリ秒単位)を設定します。ネットワークスレッドは、マルチプレイヤーネットワークメッセージをすぐに送信するわけではありません。代わりに各接続を一定の割合で定期的にチェックし、送信するものがあるかどうかを確認します。これはデフォルトで10msに設定されています。詳細については、API リファレンスドキュメントMinUpdateTimeout を参照してください。 |
接続タイムアウト | Unityが接続を試みる際に、再度接続を試みるまでの時間(ミリ秒単位)を定義します。デフォルトでは2000msに設定されています。詳しくは、APIリファレンスドキュメントConnectTimeout を参照してください。 |
切断タイムアウト | Unityが接続を切断とみなすまでの時間(ミリ秒単位)です。デフォルトでは2000msに設定されています。詳しくは、APIリファレンスドキュメントDisconnectTimeout を参照してください。 |
Pingタイムアウト | Ping(キープアライブパケット)を送信するまでの時間(ミリ秒単位)。pingのタイムアウト時間は、切断タイムアウト時間の約3分の1から4分の1である必要があります。これは、サーバーがクライアントから少なくとも3回のPingを受信できなかった場合に、Unityがクライアントの接続を切断したと判断しないようにするためです。これはデフォルトで500msに設定されています。詳しくは、ConnectionConfig.PingTimeout のAPIリファレンスドキュメントを参照してください。 |
グローバルコンフィグ | これらの設定はReactorに関連しています。Reactorは、基盤となるオペレーティングシステムからネットワークパケットを受信し、処理のためにそれらをマルチプレイヤーシステムに渡す、マルチプレイヤーシステムの一部です。 |
スレッドアウェイクタイムアウト | Reactorが使用するタイムアウト時間(ミリ秒単位)。Reactorがこの値をどのように使用するかは、選択したReactor Modelによって異なります(下記参照)。デフォルトでは1msに設定されています。 |
リアクターモデル | 使用するリアクターの種類を選択します。リアクターモデルは、Unityが受信したパケットを読み取る方法を定義します。ほとんどのゲームやアプリケーションでは、デフォルトのSelectリアクターが適切です。ネットワークメッセージの処理におけるわずかな遅延を、CPU使用率の低下やバッテリー寿命の改善と交換したい場合は、Fix Rateリアクターを使用します。 |
リアクターを選択 | このモデルは select() API を使用しており、パケットが利用可能になるとすぐにネットワークスレッドが「目覚める」(アクティブになる)ことを意味します。この方法を使用すると、ゲームは可能な限り迅速にデータを取得することになります。これはデフォルトのReactor Modelの設定です。 |
フィックスレートリアクター | このモデルでは、処理待ちの着信パケットがあるかどうかを確認する前に、ネットワークスレッドを所定の時間(Thread Awake Timeoutの値で定義)手動でスリープさせることができます。 |
リアクター最大受信メッセージ | 受信キューに格納されるメッセージの最大数を設定します。デフォルトでは1024メッセージに設定されています。 |
Reactor Max送信メッセージ | 送信キューに格納されるメッセージの最大数を設定します。デフォルトでは1024メッセージに設定されています。 |
ネットワークシミュレーターを使用する | ネットワークシミュレータを使用する場合は、このチェックボックスをオンにします。ネットワークシミュレーターは、以下の設定に基づき、遅延とパケットロスをシミュレートして導入します。 |
平均待ち時間のシミュレーション | シミュレーションする遅延量をミリ秒単位で指定します。 |
パケットロスのシミュレーション | シミュレーションするパケットロスの量をパーセントで指定します。 |
NetworkManagerUNet