Version: 2017.1
Unity でのネットワーキング要素(旧)
Network View

ネットワークビュー(旧)

(Unity 5.1 からは UNET の使用を推奨しています。下記の情報は旧ネットワークシステムのものです。)

ネットワークビューはネットワーク上でデータを共有するための主要コンポーネントです。二種類のネットワーク通信があり、状態同期( State Synchronization )とリモートプロシージャコール( Remote Procedure Calls )と呼ばれます。

ネットワークビューは特定のオブジェクトの変更を監視します。これらの変更はネットワーク上の他のすべてのクライアントに共有され、状態の変更が通知されていることを保証します。この概念が状態同期( state synchronization )と呼ばれ、詳細は 状態同期の詳細(旧)ページで確認ができます。

状態同期のオーバーヘッドの発生が望ましくない状況はいくつかあり、例えば、新しいオブジェクトの位置や再度生成されたプレイヤーの情報の送信がそれに当たります。このようなイベントは頻繁なものでないため、関連するオブジェクトの状態を同期する意味がありません。その代わり、リモートプロシージャコール( remote procedure call )を用いてクライアントやサーバーに操作を実行するように指示することができます。リモートプロシージャコールに関する詳細は RPC の詳細(旧) を確認ください。

技術的詳細

ネットワークビューは NetworkViewID でネットワーク上識別され、これはネットワークマシン上でユニークにした識別子です。128 ビットの数字として表現されますが、ネットワークを経由する際、可能である場合は 16 ビットに自動圧縮されます。

クライアント側で受信したパケットは NetworkViewID で指定された特定のネットワークビューに適用する必要があります。Unity はこの識別子を使って正しいネットワークビューを見つけることができ、データを展開して、受信パケットの内容をネットワークビューの特定のオブジェクトに適用することができます。

Editor でのネットワークビューの詳細については ネットワークビュー を参照してください。

ネットワークオブジェクトを作成するために Network.Instantiate() を使用する場合は、ネットワークビューを手動で適切に割り当てることを心配する必要がありません。バックグラウンドで自動的に処理されます。

しかし各ネットワークビューの NetworkViewID の値は Network.AllocateViewID を使って手動でセットすることができます。スクリプティングリファレンスのドキュメントで RPC 関数を持つすべてのクライアントでオブジェクトをインスタンス化し、NetworkViewID を AllocateViewID で手動セットする例が示されています。

Unity でのネットワーキング要素(旧)
Network View