マルチプレイヤーとネットワーキング
高レベル API

ネットワークの概要

関連チュートリアル: Multiplayer Networking

ユーザーは2種類のネットワーク機能を使うことができます。

  • ユーザーは Unity でマルチプレイヤーゲームを作成することができます。これには NetworkManager高レベル API を使用する必要があります。
  • ユーザーはネットワークのインフラと高度なマルチプレイヤーゲームを構築できます。これには Transport Layer API を使用する必要があります。

高レベル API のスクリプト

Unity のネットワーキングは「高レベル」な API スクリプト(Unity では、HLAPI と呼びます)を持っています。この API スクリプトを使用することで「低レベル」な実装について知る必要なく、マルチプレイヤーゲームに必要な、ほとんどの共通要件をカバーするコマンドにアクセスできます。以下は HLAPI の概要です。

  • 「ネットワークマネジャー(Network Manager)」の機能を使用して、ゲームのネットワーク状態をコントロールします。
  • ホストはプレイヤーのクライアントでもあり、“クライアントホスト” としてゲームを操作します。
  • 汎用シリアライザーを使用してデータをシリアライズします。
  • ネットワークメッセージの送受信をします。
  • クライアントからサーバーにネットワークのコマンドを送信します。
  • サーバーからクライアントにリモートプロシージャコール(RPC)を行います。
  • サーバーからクライアントにネットワークイベントを送信します。

エンジンとゲームエディターの統合

Unity のネットワーキングは、ゲームエンジン/エディターに統合されました。マルチプレイヤーゲームを作成するためコンポーネントで制御したり視覚的にビルドすることができます。Unity は以下の機能を提供します:

  • ネットワーク上にあるオブジェクトの NetworkIdentity コンポーネント
  • ネットワーク対応のスクリプト NetworkBehaviour
  • Transform オブジェクトの自動同期(automatic synchronization)を設定します。
  • スクリプト変数を自動的に同期化します。
  • Unity のシーンでネットワーク上のオブジェクトを配置するためのサポートをします。
  • Network components

インターネットサービス

Unity の製品やリリースを通してあなたのゲームをサポートするためにインターネット サービスを提供します。これには以下の機能が含まれます:

  • マッチメイキングサービス
  • ゲームマッチを宣伝し、マッチを作成します、
  • 利用および参加可能なマッチメイキングをリストアップします。
  • リレーサーバー(Relay server)
  • 非専用サーバーでインターネットを通じてゲームプレイを行います。
  • マッチに参加しているプレーヤーにメッセージをルーティングします。

NetworkTransport リアルタイムトランスポートレイヤー

Unity は Transport Layer API を含み以下の機能を提供します:

  • 最適化した UDP ベースのプロトコル
  • Head of Line Blocking(HoLB; 行頭ブロッキング)の問題を回避するためのマルチチャンネル設計
  • チャネル当たりネットワーク上で提供するサービス品質(QoS)のさまざまなレベルに対応するサポートの提供
  • P2P やクライアント・サーバ・アーキテクチャをサポートする柔軟性のあるネットワークトポロジー

サンプルプロジェクト

これらの機能を一緒に使用する方法を知るために、さらにマルチプレイヤーのサンプルプロジェクトを勉強することもできます。 Unity のフォーラム で以下のようなサンプルプロジェクトを見ることができます。

  • マルチプレイヤー「2D Tanks」ゲームサンプル
  • マルチプレイヤー対応マッチメイキング Invaders game
  • マルチプレイヤー対応マッチメイキング 2D のスペースシューティングゲーム
  • 最小構成のマルチプレイヤープロジェクト
マルチプレイヤーとネットワーキング
高レベル API