Version: 2021.1
Multiplayer and Networking
设置多人游戏项目

多人游戏概述

Important: UNet is a deprecated solution, and a new Multiplayer and Networking Solution (MLAPI) is under development. For more information and next steps see the information on the Unity MLAPI website.

网络功能有两种用户:

  • 使用 Unity 开发多人游戏的用户。这些用户应该以 NetworkManager高级 API 为起点。
  • 构建网络基础架构或高级多人游戏的用户。这些用户应该以 NetworkTransport API 为起点。

高级脚本 API

Unity 的网络功能有一个“高级”脚本 API(我们称之为 HLAPI)。使用此 API 意味着可以访问满足多用户游戏大多数常见要求的命令,而无需担心“较低级别”的实现细节。HLAPI 提供以下功能:

  • 使用 Network Manager 来控制游戏的联网状态。
  • 操作“客户端托管的”游戏,这种情况下的主机也是玩家客户端。
  • 使用通用序列化程序来序列化数据。
  • 发送和接收网络消息。
  • 将联网命令从客户端发送到服务器。
  • 执行从服务器到客户端的远程过程调用 (RPC)。
  • 将联网事件从服务器发送到客户端。

引擎和 Editor 集成

Unity 的联网系统集成在引擎和 Editor 中,因此便于使用组件和视觉辅助工具来构建多人游戏。该系统具有以下功能:

  • 用于联网对象的 NetworkIdentity 组件。
  • 用于联网脚本的 NetworkBehaviour
  • 可配置的对象变换自动同步。
  • 脚本变量自动同步。
  • 支持在 Unity 场景中放置联网对象。
  • 网络组件

互联网服务

Unity 提供互联网服务为游戏的整个生产和发布过程提供支持,这些服务包括:

  • 配对服务
  • 创建比赛和通告比赛。
  • 列出可用的比赛和加入比赛。
  • 中继服务器 (Relay Server)
  • 基于互联网但无专用服务器的游戏。
  • 比赛参与者的消息传送。

NetworkTransport 实时传输层

我们加入了一个具备以下功能的实时传输层

  • 基于 UDP 的优化协议。
  • 多通道设计可避免线头阻塞问题
  • 每个通道支持各种级别的服务质量 (QoS)。
  • 灵活的网络拓扑可支持对等架构或客户端/服务器架构。

身份验证

Unity 的网络系统实现了简单的内置身份验证功能,这些功能为验证会话提供了基本支持,但并不是可靠的身份验证解决方案。

可靠的身份验证可能是开发多人游戏项目的重要因素,因为它有助于防止恶意用户劫持玩家会话、冒充其他用户、使合法玩家与游戏断开连接或其他针对游戏或应用程序的恶意行为。

因为 Unity 仅提供简单的内置身份验证,所以如果您需要针对游戏或应用程序中的恶意行为提供可靠保护,则应使用第三方身份验证和加密解决方案,或者使用诸如此参考实现之类的插件以及 NetworkTransport API 来自行实现所需的解决方案。

示例项目

还可以深入了解我们的多人游戏示例项目,了解这些功能如何配合使用。可在此 Unity 论坛帖子中找到以下示例项目:

  • 多人 2D 坦克示例游戏
  • 具有配对功能的多人入侵者游戏
  • 具有配对功能的多人 2D 太空射击游戏
  • 最小的多人游戏项目
Multiplayer and Networking
设置多人游戏项目