Version: 2020.2
言語: 日本語
マルチプレイヤーゲームとネットワーク
マルチプレイヤープロジェクトの設定

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

ノート: UNet は非推奨となり、今後 Unity から削除される予定です。新しいシステムが開発中です。詳細は ブログFAQ を参照してください。

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

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

高レベルスクリプト API

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

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

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

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

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

インターネットサービス

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

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

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

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

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

認証

Unity のネットワークはシンプルな組み込みの認証機能を実装し、セッションを検証するための基本的なサポートを提供しますが、堅牢な認証ソリューションではありません。

堅牢な認証は、悪意のあるユーザーによるプレイヤーセッションの乗っ取り、他のユーザーのなりすまし、正規のプレイヤーのゲームからの切断など、ゲームやアプリケーションに特有の悪質な行為を防ぐことができるため、マルチプレイヤープロジェクトの開発において重要な要素です。

Because Unity only provides simple built-in authentication, if you require robust protection against malicious actions in your game or app, you should use 3rd party authentication and encryption solutions, or implement them yourself using plugins such as this reference implementation and the NetworkTransport API.

サンプルプロジェクト

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

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