ネットワークの概要
ユーザーは2種類のネットワーク機能を使うことができます。
高レベル API のスクリプト
Unity のネットワーキングは「高レベル」な API スクリプト(Unity では、HLAPI と呼びます)を持っています。この API スクリプトを使用することで「低レベル」な実装について知る必要なく、マルチプレイヤーゲームに必要な、ほとんどの共通要件をカバーするコマンドにアクセスできます。以下は HLAPI の概要です。
- 「ネットワークマネジャー(Network Manager)」の機能を使用して、ゲームのネットワーク状態をコントロールします。
- ホストはプレイヤーのクライアントでもあり、“クライアントホスト” としてゲームを操作します。
- 汎用シリアライザーを使用してデータをシリアライズします。
- ネットワークメッセージの送受信をします。
- クライアントからサーバーにネットワークのコマンドを送信します。
- サーバーからクライアントにリモートプロシージャコール(RPC)を行います。
- サーバーからクライアントにネットワークイベントを送信します。
エンジンとゲームエディターの統合
Unity のネットワーキングは、ゲームエンジン/エディターに統合されました。マルチプレイヤーゲームを作成するためコンポーネントで制御したり視覚的にビルドすることができます。Unity は以下の機能を提供します:
インターネットサービス
Unity の製品やリリースを通してあなたのゲームをサポートするためにインターネット サービスを提供します。これには以下の機能が含まれます:
- マッチメイキングサービス
- ゲームマッチを宣伝し、マッチを作成します、
- 利用および参加可能なマッチメイキングをリストアップします。
- リレーサーバー(Relay server)
- 非専用サーバーでインターネットを通じてゲームプレイを行います。
- マッチに参加しているプレーヤーにメッセージをルーティングします。
NetworkTransport リアルタイムトランスポートレイヤー
Unity は Transport Layer API を含み以下の機能を提供します:
- 最適化した UDP ベースのプロトコル
- Head of Line Blocking(HoLB; 行頭ブロッキング)の問題を回避するためのマルチチャンネル設計
- チャネル当たりネットワーク上で提供するサービス品質(QoS)のさまざまなレベルに対応するサポートの提供
- P2P やクライアント・サーバ・アーキテクチャをサポートする柔軟性のあるネットワークトポロジー
サンプルプロジェクト
また、Unity のマルチプレイヤーサンプルプロジェクトを見ることで下記の機能がどのように一緒に使用されているか詳しく把握できるはずです。
- マルチプレイヤー「2D Tanks」ゲームサンプル
- マルチプレイヤー対応マッチメイキング Invaders game
- マルチプレイヤー対応マッチメイキング 2D のスペースシューティングゲーム
- 最小構成のマルチプレイヤープロジェクト
サンプルプロジェクトはフォーラムで提供しています。