ネットワーキング概念の概要
ネットワークビュー(Network Views)

Unity でのネットワーキング要素

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Unity のネイティブなネットワーキングは,前のページで説明位したものすべてをサポートしています。 サーバー作成およびクライアント接続,接続されたクライアント間でのデータの共有,どのプレイヤーがどのオブジェクトをコントロールするか,ネットワーク設定のバリエーションは全て,直ぐに使える形でサポートされます。 このページでは,これらのネットワーキング作業の Unity 固有のUnity の実装について説明します。

サーバーの作成

ネットワーク ゲームのプレイを開始する前に,通信する各種コンピュータを決定する必要があります。 これを行うには,サーバーを作成する必要があります。 サーバーは,ゲームも実行しているマシンであったり,ゲームに参加している専用のマシンでもあります。 サーバーを作成するには,スクリプトから Network.InitializeServer() を呼び出します。 クライアントとして,既存のサーバーに接続したい場合は,代わりに Network.Connect()を呼び出します。

一般的に,Network class 全体に習熟するのに非常に便利なのが分かります。

ネットワーク ビューを使用しての通信

Network View は,ネットワーク上でデータを送信するコンポーネントです。 ネットワーク ビューにより,GameObject は RPC コールまたは状態同期を使用してデータを送信できます。 ネットワーク ビューの使用方法は,ゲームのネットワーキング動作がどのように機能するかを決定します。 ネットワーク ビューにはほとんどオプションはありませんが,ネットワーク ゲームにとっては非常に重要です。

ネットワーク ビューの使用に関する詳細は,Network View ガイド および NetworkView を参照してください。

リモート プロシージャ コール

リモート プロシージャ コール (RPC) は,ネットワーク ビューを含む GameObject に追加されるスクリプトで宣言される関数です。 ネットワーク ビューは,RPC 関数を含むスクリプトを示す必要があります。 次に,その GameObject 内のスクリプトから,RPC 関数を呼び出すことができます。

Unity での RPC の使用に関する詳細については,RPCの詳細 を参照してください。

状態同期

状態同期は,すべてのゲーム クライアント上でデータを継続的に共有します。 このように,プレイヤーの位置をすべてのクライアント上で同期できるので,データが実際ネットワーク上で配信される際に,ローカルでコントロールされているように見えます。 GameObject 内で状態を同期させるには,そのオブジェクトにネットワーク ビューを追加し,何を観察するかを伝える必要があります。 観測されたデータはが,ゲーム内のすべてのクライアント上で同期されます。

Unity での状態同期の使用に関する詳細については,State Synchronization を参照してください。

Network.Instantiate()

Network.Instantiate()により,ナチュラルで簡単な方法で全てのクライアント上のプレハブをインスタンス化できます。 基本的に,これは,`Instantiate()ですが,すべてのクライアント上でのインスタンス化を実行します。

内部では,Network.Instantiate は,すべてのクライアントで実行される単にバッファされた RPC コールにすぎません (ローカルでも)。 NetworkViewID を割り当て,すべてのクライアント上で同期させるインスタンス化プレハブに割り当てます。

詳細については,Network Instantiate ページを参照してください。

NetworkLevelLoad()

データの共有,クライアント プレイヤーの状態,レベルのロードなどの処理は若干難しい場合があります。 Network Level Load ページに,このタスクの管理のための便利なサンプルが用意されています。

マスター サーバー

Master Server はゲームを一致させるのに便利です。 マスター サーバーに接続したいサーバーを起動する際,マスター サーバーはすべてのアクティブなサーバーのリストを提供します。

Master Server は,サーバーとクライアントの出会いの場で,ここではサーバーが宣伝され,互換性のあるクライアントは実行されているゲームに接続できます。 これにより,関与するすべてのパーティに対して IP アドレスを調整する必要がなくなります。 これは,ユーザーが,通常の状況下ではこれが必要とされるルーターに干渉せずに,ゲームのホストとなることもできます。 これは,クライアントがサーバーのファイアウォールをバイパスして,パブリック インターネットを通じて,通常はアクセス出来ないプライベートの IP アドレスに到達するのに役に立ちます。 これは,接続の確立を 容易にする ファシリテータにより行われます。

詳細については,Master Server ページを参照してください。

帯域幅の最小化

最小の帯域幅を使用して,ゲームを正しく実行させることは重要です。 各種データ送信方法, 何を または いつ 送信するかを決める各種手法および好きな様に使用できるその他の手法があります。

使用される帯域幅を減らすためのヒントおよび手法については,ネットワーク帯域幅の最小化 を参照してください。

ネットワーク ゲームのデバッグ

Unity には,ネットワーク ゲームのデバッグを支援するいくつかの機能が用意されています。

  1. Network Manager を使用して,すべての入出するネットワーク トラフィックをログできます。
  2. インスペクタおよび階層ビューを効率的に使用すれば,オブジェクト作成の追跡やビュー ID の検査などを行うことができます。
  3. Unity を同じマシン上で 2 回起動でき,それぞれで異なるプロジェクトを開くことができます。 Windows 上で,これは,別の Unity インスタンスを起動し,プロジェクト ウィザードからプロジェクトを開くだけで行うことができます。 Mac OS X では, 複数の Unity インスタンスを端末から開くことができ,-projectPath 引数を指定できます。 /Applications/Unity/Unity.app/Contents/MacOS/Unity -projectPath “/Users/MyUser/MyProjectFolder/” /Applications/Unity/Unity.app/Contents/MacOS/Unity -projectPath “/Users/MyUser/MyOtherProjectFolder/”

例えば,1 度に実行しているインスタンスが 2 つある場合,1 つにはフォーカスがあるため,ネットワーキングのデバッグ時に,バックグラウンドでプレイヤーに実行させます。 これにより,ネットワーキングのループが断たれ,望まない結果が生じます。 これは,エディタの Edit->Project Settings->Player か,Application.runInBackground で有効にできます。

ネットワーキング概念の概要
ネットワークビュー(Network Views)