マルチプレイヤーゲームとネットワーク
マルチプレイヤープロジェクトの設定

マルチプレイヤーゲーム作成の概要

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

ユーザーの目的に応じて、ネットワーク機能には 2 種類あります。

  • Unity でマルチプレイヤーゲームを作成することができます。これにはまず、NetworkManager高レベル API が必要です。
  • ネットワークインフラや高度なマルチプレイヤーゲームを構築します。これにはまず、NetworkTransport API が必要です。

高レベルスクリプト API

Unity のネットワークには「高レベル」なスクリプト API (Unity では、HLAPI と呼びます) があります。このスクリプト API を使用することで「低レベル」な実装の詳細を気にすることなく、マルチプレイヤーゲームの一般的な要件を含むコマンドのほとんどにアクセスできます。以下は HLAPI の概要です。

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

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

Unity のネットワークは、ゲームエンジンとエディターに統合されました。これにより、コンポーネントやビジュアルツールを使い、マルチプレイヤーゲームを作成できるようになりました。以下の機能が提供されます。

  • 通信状態のオブジェクトの NetworkIdentity コンポーネント
  • ネットワーク対応のスクリプトの NetworkBehaviour
  • オブジェクトの Transform の設定可能な自動同期
  • スクリプト変数の自動同期
  • Unity のシーンで通信状態のオブジェクトを配置するサポート
  • Network コンポーネント

インターネットサービス

Unity は、製作とリリースを通してゲームをサポートするために、以下を含む インターネットサービス を提供します。

  • マッチメイキングサービス
  • マッチの作成と宣伝
  • 参加可能なマッチのリストアップ
  • リレーサーバー
  • 非専用サーバーによるインターネットを通じたゲームプレイ
  • マッチに参加しているプレイヤーへのメッセージのルーティング

NetworkTransport (リアルタイムトランスポート層 API)

Unity は リアルタイムのトランスポート層 API を含んでいます。そのトランスポート層は以下の機能を提供します。

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

サンプルプロジェクト

これらの機能の活用方法を調べるために、マルチプレイヤーゲームのサンプルプロジェクトを詳しく研究することもできます。 Unity のフォーラム には以下のサンプルプロジェクトがあります。

  • マルチプレイヤーゲームサンプル 2D Tanks
  • マッチメイキング付きマルチプレイヤーゲーム Invaders
  • マッチメイキング付きマルチプレイヤーゲーム 2D Space Shooter
  • 必要最低限のマルチプレイヤーゲームプロジェクト
マルチプレイヤーゲームとネットワーク
マルチプレイヤープロジェクトの設定