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

ネットワークの概要

ユーザーは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