# 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 包安装在编辑器中。在编辑器中创建新多人游戏项目时，该窗口会自动打开，或者可以直接使用**窗口 (Window)** > **多人游戏 (Multiplayer)** > **Multiplayer Center** 将其打开。

### 多人游戏服务和小部件

[Multiplayer Services 包](https://docs.unity.com/ugs/en-us/manual/mps-sdk/manual.md)提供了一个 SDK，用于向游戏添加多人游戏元素，这些元素利用 [Unity Gaming Services (UGS)](#unity-gaming-services) 来定义玩家群体如何通过会话在游戏中进行交互。您可以使用 [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 Entitys](#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 面向数据技术栈 (DOTS) 的一部分，提供了一个服务器授权网络解决方案，其中包含可用于创建多人游戏的客户端预测框架。它可用于任何多人游戏项目，但主要推荐用于需要大量优化的大型游戏，以及具有制作多人游戏经验的高级开发者。Netcode for Entities 仅支持客户端-服务器网络拓扑。

Netcode for Entities 与 [Multiplayer Tools](#multiplayer-tools)、[Multiplayer Play Mode](#multiplayer-play-mode)、[Dedicated Server 包](#dedicated-server)和 [Unity's Gaming Services](#unity-gaming-services) 兼容。

## 测试多人游戏

### Multiplayer Tools

[Multiplayer Tools 包](https://docs-multiplayer.unity3d.com/tools/current/about/)提供各种工具来分析、调试和测试玩家多人游戏，包括性能分析器和网络模拟器。您可以使用 Unity 包管理器[安装包](https://docs-multiplayer.unity3d.com/tools/current/install-tools/)，并使用**窗口 (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 编辑器中测试多人游戏功能。在同一台开发设备上最多可以同时模拟四个播放器（主编辑器播放器和三个虚拟播放器），同时在磁盘上使用相同的源资产。您可以使用 Unity 包管理器[安装包](https://docs-multiplayer.unity3d.com/mppm/current/install/)，并使用**窗口 (Window)** > **Multiplayer Play Mode** 从编辑器访问包。

Multiplayer Play Mode 与 [Netcode for GameObjects](#netcode-for-gameobjects)、[Netcode for Entitys](#netcode-for-entities)、[Dedicated Server 包](#dedicated-server)和 [Unity's 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 Entitys](#netcode-for-entities) 的基础协议，但您也可以将其与自定义解决方案结合使用。Unity Transport 支持 Unity 引擎使用基于连接的抽象层（内置网络驱动程序）通过用户数据报协议 (UDP) 和 WebSocket 提供的所有平台。

您可以使用 Unity 包管理器[安装包](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 包管理器安装包。

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)提供了一个 SDK，用于向游戏添加多人游戏元素，这些元素利用这些 [Unity Gaming Services (UGS)](#unity-gaming-services) 来定义玩家群体如何通过会话在游戏中进行交互。

### Multiplay Hosting

[Multiplay Hosting](https://docs.unity.com/ugs/en-us/manual/game-server-hosting/manual/welcome.md) 是 Unity 可扩展的服务器托管平台。这是一种用于托管和扩展游戏的自助服务体验，消除了大规模运行和运营基础设施的复杂性，因此您可以专注于开发多人游戏项目。

### Lobby

Unity 的 [Lobby 服务](https://docs.unity.com/ugs/en-us/manual/lobby/manual/unity-lobby-service.md)为玩家提供了一种在多人游戏中发现和相互连接的方法。

### Matchmaker

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 服务不使用 Dedicated Game Servers，而是通过充当代理的通用 Relay 服务器提供连接。
