# Unity マルチプレイヤーの概要

> Learn about the Unity packages and services available for building multiplayer games.

Unity には、マルチプレイヤープロジェクトの作成をサポートするための多くのマルチプレイヤーパッケージとサービスが用意されています。マルチプレイヤーゲームに慣れていない場合は、最初に [Multiplayer Center パッケージ](#multiplayer-center)を使用することをお勧めします。

## スタートガイド

### Multiplayer Center

[Multiplayer Center](/engine/6000.0/manual/multiplayer/center.md) は、マルチプレイヤーゲームを作成するための起点になります。ゲームのニーズに基づいて、Unity マルチプレイヤーのパッケージとサービスを推奨し、それらの使用をサポートするためのサンプルやチュートリアルへアクセスできるようにします。

Multiplayer Center パッケージは、デフォルトで Editor にインストールされます。このパッケージは、Editor で新しいマルチプレイヤープロジェクトを作成すると自動的に開きます。また、**Window** > **Multiplayer** > **Multiplayer Center** と選択して直接開くこともできます。

### マルチプレイヤーサービスとウィジェット

[Multiplayer Services パッケージ](https://docs.unity.com/ugs/en-us/manual/mps-sdk/manual.md)は、[Unity Gaming Services (UGS)](#unity-gaming-services) を利用するゲームにマルチプレイヤー要素を追加し、セッションを介してゲーム内のプレイヤーグループ間のやりとりを定義するための SDK を提供します。[Multiplayer Widgets パッケージ](https://docs.unity3d.com/Packages/com.unity.multiplayer.widgets@latest?subfolder=/manual/index.html)を使用すると、ワークフローの側面を簡単にテストしてから、自分で開発を進めることができます。

Multiplayer Services パッケージは、デフォルトで [Netcode for GameObjects](#netcode-for-gameobjects) と [Netcode for Entities](#netcode-for-entities) の両方と互換性があり、より高度なユースケース向けの[カスタムネットワーキングソリューション](https://docs.unity.com/ugs/en-us/manual/mps-sdk/manual/create-session.md#Advanced_usage:_Specifying_a_custom_network_handler)もサポートしています。

## Netcode for GameObjects

[Netcode for GameObjects](https://docs-multiplayer.unity3d.com/netcode/current/about/) は、ネットワーキングロジックを抽象化した高レベルのネットワーキングライブラリで、ネットワーキングセッションを通じてゲームオブジェクトとワールドデータを多くのプレイヤーに一度に送信できます。ほとんどのタイプのマルチプレイヤープロジェクトに適していますが、特に大規模な、または高度に最適化されたゲームを作成したい場合は、[Netcode for Entities](#netcode-for-entities) が適しています。Netcode for GameObjects は、ネットワークトポロジーにおいてクライアント/サーバー型と分散型の両方の権限形態をサポートしています。

Netcode for GameObjects は、[Multiplayer Tools](#multiplayer-tools)、[Multiplayer Play Mode](#multiplayer-play-mode)、[Dedicated Server パッケージ](#dedicated-server)、[Unity Gaming Services](#unity-gaming-services) と互換性があります。

## Netcode for Entities

[Netcode for Entities](https://docs.unity3d.com/Packages/com.unity.netcode@latest?subfolder=/manual/index.html) は、Unity の Data-Oriented Technology Stack (DOTS) の一部であり、マルチプレイヤーゲームの作成に使用できるクライアント予測フレームワークを備えたサーバー権威型ネットワーキングソリューションを提供します。あらゆるマルチプレイヤープロジェクトに使用できますが、特に高度な最適化が必要な大規模なプロジェクトで、マルチプレイヤーゲームの制作経験を持つ上級者が使用するのに適しています。Netcode for Entities は、クライアント/サーバー型のネットワークトポロジーのみサポートしています。

Netcode for Entities は、[Multiplayer Tools](#multiplayer-tools)、[Multiplayer Play Mode](#multiplayer-play-mode)、[Dedicated Server パッケージ](#dedicated-server)、[Unity Gaming Services](#unity-gaming-services) と互換性があります。

## マルチプレイヤーゲームのテスト

### Multiplayer Tools

[Multiplayer Tools パッケージ](https://docs-multiplayer.unity3d.com/tools/current/about/)には、プロファイラーやネットワークシミュレーターなど、マルチプレイヤーゲームの分析、デバッグ、テストを行うためのさまざまなツールが用意されています。Unity Package Manager を使用して[パッケージをインストール](https://docs-multiplayer.unity3d.com/tools/current/install-tools/)し、Editor から **Window** > **Multiplayer Tools** を選択するとアクセスできます。

Multiplayer Tools は [Netcode for GameObjects](#netcode-for-gameobjects) と [Netcode for Entities](#netcode-for-entities) の両方と互換性があります。

### Multiplayer Play Mode

[Multiplayer Play Mode](https://docs-multiplayer.unity3d.com/mppm/current/about/) を使用して、Unity エディターからマルチプレイヤー機能をテストします。ディスク上の同じソースアセットを使用しながら、同じ開発デバイスで最大 4 人のプレイヤー (メインのエディタープレイヤー 1 人と仮想プレイヤー 3 人) を同時にシミュレートすることができます。Unity Package Manager を使用して[パッケージをインストール](https://docs-multiplayer.unity3d.com/mppm/current/install/)し、Editor から **Window** > **Multiplayer Play Mode** を選択するとアクセスできます。

Multiplayer Play Mode は [Netcode for GameObjects](#netcode-for-gameobjects)、[Netcode for Entities](#netcode-for-entities)、[Dedicated Server パッケージ](#dedicated-server)、[Unity Gaming Services](#unity-gaming-services) と互換性があります。

## ユーティリティ

### Unity Transport

[Unity Transport パッケージ](https://docs-multiplayer.unity3d.com/transport/current/about/)は、マルチプレイヤーゲーム開発用の低レベルのネットワーキングライブラリです。[Netcode for GameObjects](#netcode-for-gameobjects) と [Netcode for Entities](#netcode-for-entities) の両方の基本プロトコルとして機能しますが、カスタムソリューションで使用することもできます。Unity Transport は、ユーザーデータグラムプロトコル (UDP) と WebSockets を介して提供される接続ベースの抽象化レイヤー (ビルトインネットワークワークドライバー) を使用して、Unity Engine がサポートしているすべてのプラットフォームをサポートします。

Unity Package Manager を使用して[パッケージをインストール](https://docs-multiplayer.unity3d.com/transport/current/install/)できます。

### Dedicated Server

[Dedicated Server パッケージ](https://docs.unity3d.com/Packages/com.unity.dedicated-server@1.0/manual/index.html)を使用すると、別のプロジェクトを作成せずにサーバーとクライアントのロール間でプロジェクトを切り替えることが可能で、[Dedicated Server ビルドターゲット](/engine/6000.0/manual/platform-specific/dedicated-server/introduction.md)を対象にした場合のマルチプレイヤー開発ワークフローを改善できます。Unity Package Manager を使用してパッケージをインストールできます。

Dedicated Server パッケージは、[Netcode for GameObjects](#netcode-for-gameobjects)、[Netcode for Entities](#netcode-for-entities)、[Multiplayer Play Mode](#multiplayer-play-mode) と互換性があります。

## Unity Gaming Services

[Multiplayer Services パッケージ](#multiplayer-services-and-widgets)は、[Unity Gaming Services (UGS)](#unity-gaming-services) を利用するゲームにマルチプレイヤー要素を追加し、セッションを介してゲーム内のプレイヤーグループ間のやりとりを定義するための SDK を提供します。

### Multiplay ホスティング

[Multiplay Hosting](https://docs.unity.com/ugs/en-us/manual/game-server-hosting/manual/welcome.md) は、Unity が提供するスケーラブルなサーバーホスティングプラットフォームです。ゲームのホスティングとスケーリングをセルフサービスで実行できるため、大規模なインフラストラクチャでの実行と運用の複雑さが解消され、マルチプレイヤープロジェクトの開発に集中できます。

### ロビー

Unity の [Lobby サービス](https://docs.unity.com/ugs/en-us/manual/lobby/manual/unity-lobby-service.md)は、マルチプレイヤーゲーム内でプレイヤーどうしがお互いを見つけて、接続するための方法を提供します。

### マッチメーカー

Unity [MatchMaker](https://docs.unity.com/ugs/en-us/manual/matchmaker/manual/matchmaker-overview.md) は、リモートプレイヤーをゲームインスタンスに自動的に割り当て、対戦相手探しのロジックのカスタマイズをサポートします。

### Relay

Unity [Relay](https://docs.unity.com/ugs/en-us/manual/relay/manual/introduction.md) を使用すると、プレイヤーは参加コードを使用してゲームインスタンスに接続できます。Relay サービスは、専用ゲームサーバーを使用する代わりに、プロキシとして機能するユニバーサル Relay サーバーを介して接続を提供します。
