tanaka's Programming Memo

プログラミングについてのメモ。

Unity5.1 ネットワークリファレンス概要

前へ | 終わり

UNet Unity5.1からの新しいネットワークシステム
Unity5.1のネットワークマニュアル斜め読み(2)
UNet NetworkManagerの利用
Unity5.1 ネットワークシステムのオブジェクト生成
Unity5.1 ネットワークシステムの状態同期
Unity5.1 ネットワークシステムのRemote Actions
Unity5.1 ネットワークシステム PlayerObjects
Unity5.1 ネットワークシステム Object Visibility
Unity5.1 ネットワークシステム Network Messages
Unity5.1 ネットワークシステム Matchmaker
Unity5.1 ネットワークシステム Scene Objects
Unity5.1 ネットワークシステム:シングルプレイヤーゲームを多人数に対応させる
Unity5.1 ネットワークシステム Multiplayer Lobby
Unity5.1 ネットワークシステム Network Clients and Servers
Unity5.1 ネットワークリファレンス概要

以下の公式サイトにあるネットワーク関連のリファレンスの斜め読みメモです。概要のみで、メンバーについては省略しています。
Unity - マニュアル: Networking Reference

Network Animator

ネットワークを介してアニメーションの同期を行います。

NetworkBehaviour

NetworkBehaviourは、NetworkIdentityコンポーネントと一緒にオブジェクトに追加して使う特殊なスクリプトです。このクラスを継承したスクリプトは、Commands、ClientRPC、SyncEvent、SyncVarなどのHLAPIの機能が利用できるようになります。

Unityのネットワークシステムのサーバー管理システム(server authoritative system)では、NetworkIdentityを追加したネットワーク上のオブジェクトはサーバー上でNetworkServer.Spawn()関数を使って"spawn"される必要があります。これによりネットワーク上のオブジェクトにNetworkInstanceIdが割り振られて、サーバーに接続されているクライアント上に生成されます。

NetworkBehaviourは以下の機能を持っています。

  • 変数の同期機能
  • ネットワークのコールバック
  • サーバーとクライアント関数
  • Commandsの送信
  • ClientRPCの呼び出し
  • ネットワークからのイベント

詳細:Unity - マニュアル: NetworkBehaviour

NetworkClient

NetworkClientは、UNETネットワークサーバーにネットワーク接続することを管理するためのHLAPIクラスです。このクラスを使って、メッセージをサーバーに送信したり、サーバーからのメッセージを受信したりすることができます。また、ネットワークオブジェクトのspawnの管理を補助したり、RPCメッセージやネットワークベントの受け渡しを行います。

NetworkConnection

NetworkConnectionはネットワーク接続をカプセル化するHLAPIクラスです。NetworkClientオブジェクトはNetworkConnectionを一つ持ち、NetworkServerは接続されているクライアントの数だけの複数のNetworkConnectionを持ちます。NetworkConnectionはバイト配列や、オブジェクトをネットワークメッセージとしてシリアライズする機能を持ちます。

NetworkIdentity

NetworkIdentityコンポーネントは、Unityの新しいネットワークシステム(UNET)の心臓となるコンポーネントです。このコンポーネントはオブジェクトをネットワークで識別して、ネットワーク機能を持たせます。

NetworkIdentityを持ったオブジェクトはNetworkServer.Spawn()で生成したり、シーンオブジェクトとしてあらかじめシーンに配置します。

インスペクターの"serverOnly"にチェックが入っているオブジェクトは、クライアント上でspawnされたり、enabledになりません。

このコンポーネントではscene IDやnetwork ID、オブジェクトにアサインされたasset IDなどの情報を監視できます。scene IDはNetworkIdentityコンポーネントを持ったすべてのシーンオブジェクトで利用できます。network IDは、オブジェクトのインスタンスを判別するためのIDです。同じオブジェクト型から生成された複数のオブジェクトを個別に特定するのに利用されます。例えば、同種のオブジェクトのうちの特定のオブジェクトへネットワークの更新を行う場合などに利用します。asset IDはオブジェクトがどのアセットから生成されたかを表すIDです。これはネットワーク上であるプレハブからオブジェクトをspawnするときなどに内部的に利用されます。この情報はインスペクターパネルの下部に表示されます。

Network Lobby Manager

NetworkLobbyManagerは、ゲームを遊ぶシーンに行こうする前に、多人数プレイヤーのlobbyを提供することができる特殊なNetworkManagerです。

詳しくはこちら:Unity5.1 ネットワークシステム Multiplayer Lobby - tanaka's Programming Memo

Network Lobby Player

NetworkLobbyPlayerは、lobbyを実行中にプレイヤーごとの状態を保持するためにNetworkLobbyManagerから使用されます。

NetworkManager

NetworkManagerは、ネットワークゲームの状態の制御機能を提供する高レベルクラスです。このクラスは、ネットワークの設定や、ネットワークでspawnする可能性のあるプレハブ、そしてシーンを異なるネットワークゲームシステムに利用するなどの設定用のインターフェースをエディターに提供します。

Network Manager HUD

Network Manager HUDは、ゲームのネットワークの状態を操作するためのUIを提供するコンポーネントです。NetworkManagerの現在の状態をエディタに表示する機能もあります。

このコンポーネントで、開発とテストが楽になります。公開するゲーム向けではありません。

Network Proximity Checker

NetworkProximityCheckerは、ネットワーク上のプレイヤーとの近さを基準にして、クライアント上でのオブジェクトの表示を制御するコンポーネントです。これを利用するには、一定の距離に入ると表示されるようにしたいオブジェクトにコンポーネントを追加します。3D Physicsや2D Physicsの機能を利用して表示の有無を判定します。

NetworkReader

NetworkReaderは、バイトストリームからオブジェクトを読み込むためのUNETのHigh Level API(HLAPI)です。このクラスはNetworkWriterと対で利用します。NetworkReaderは様々なUnityで定義されている型のデータをシリアライズできます。

NetworkServer

NetworkServerは、複数のクライアントからの接続を管理するUNETのHigh Level-API(HLAPI)です。

NetworkStartPosition

NetworkStartPositionは、プレイヤーオブジェクトを作成する時にNetworkManagerから利用されます。NetworkStartPositionの座標と向きが、新しく作成するプレイヤーのオブジェクトに適用されます。

NetworkTransform

NetworkTransformコンポーネントは、ゲームオブジェクトの動きをネットワーク上で同期します。このコンポーネントはaccountに管理者(authority)を設定します。local authorityを持つLocalPlayerオブジェクトは、ローカルで操作したクライアントの座標をサーバーに同期して、それがその他のクライアントに送信されます。サーバーで管理されるその他のオブジェクトは、サーバーからクライアントに座標が同期されます。

このコンポーネントを利用するには、移動を同期させたいプレハブやゲームオブジェクトに、このコンポーネントを追加します。このコンポーネントはNetworkIdenityコンポーネントも一緒に追加される必要があります。ネットワークオブジェクトが同期されるには、spawnされる必要があります。

ヒント

NetworkTransformのインスペクターにはNetworkSendRateというスライダーがあります。弾のように、作成後に変更が不要なオブジェクトでは、このスライダーを0にします(Rigidbodyで自動的に位置が更新されるから?)。

NetworkTransformVisualizer

NetworkTransformVisualizerは、NetworkTransformコンポーネントを持つオブジェクトの変化を視覚化するためのユーティリティーコンポーネントです。

NetworkTransport

(これは公式サイトで日本語化されていました)
NetworkTransport は、UNET の Low Level API のインターフェースです。これは静的クラスです。

NetworkWriter

NetworkWriterは、バイトストリームへオブジェクトを書き込むためのUNETのHigh Level API(HLAPI)です。このクラスはNetworkReaderと対で利用されます。NetworkWriterは、様々なUnityの型をシリアライズすることができます。

NetworkWriterは、MessageBaseクラスでネットワークメッセージにデータを組み込むためのバイト配列を作成するのに利用することができます。


前へ | 終わり