版本:Unity 6 (6000.0)
语言:English
使用多人游戏中心
动画

多人游戏新增功能

了解自上次发布以来多人游戏中的更改。

Unity 6 中的多人游戏新功能

Unity 6 以一种为未来发展做好准备的方式简化了多人游戏开发。

多人游戏中心

作为 Unity 6 中的核心包提供,全新的多人游戏中心使设置和开发多人游戏变得更加容易。新的提示和工作流程使用游戏参数和需求来建议相关的包和服务,然后生成可用于启动项目的动态模板。

您无需离开编辑器即可设置多人游戏;个性化的交互式指导、教育材料和快捷方式使您能够更轻松地进行实验并及时响应反馈。

多人游戏小部件

新的多人游戏小部件使将 Unity 游戏服务 (UGS) 集成到您的多人游戏中变得更加容易。您可以将小部件作为独立包访问,也可以从多人游戏中心访问。

包含的多人游戏、中继、大厅、Vivox 等服务使查找兼容的相关集成变得更加容易。例如,将中继服务集成到编辑器中,使您能够在开发过程的早期更轻松地创建会话并连接用户。

多人游戏工具

用于游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路点等。游戏对象的功能由附加在其上的组件定义。 更多信息
参见 术语表
2.0 的多人游戏工具包版本 2.2.1 改善了 Unity 中多人游戏开发的工作流程,提高了 Netcode 的性能,并增加了对分布式权限的支持。

多人游戏模式

用于游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路点等。游戏对象的功能由附加在其上的组件定义。 更多信息
参见 术语表
2.0 的多人游戏模式包提供了减少迭代周期、验证实现选择并在运行时流程的早期提高游戏质量的工作流程。

  • 在不离开 Unity 编辑器的情况下测试跨不同进程的功能。
  • 在同一开发设备上同时模拟最多四个玩家(主编辑器玩家加上三个虚拟玩家),并在磁盘上使用相同的源资产。
  • 创建多人游戏开发工作流程,减少构建项目、本地运行和测试服务器-客户端关系所需的时间。

新的游戏模式场景将测试周期集成到生产环境中,以帮助您更早地为真实玩家提供首个可玩体验。游戏模式场景支持桌面和专用服务器环境。

专用服务器包

用于游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路点等。游戏对象的功能由附加在其上的组件定义。 更多信息
参见 术语表
2.0 的专用服务器包整合了编辑器中的专用游戏服务器工作流程,以便更轻松地将专用服务器部署到本地和 Multiplay 托管。

例如,您可以在服务器和客户端角色之间切换项目,而无需创建另一个项目。为了使切换项目更容易,新的多人游戏角色允许您在客户端和服务器之间分配游戏对象和组件。

多人游戏角色使您可以控制在每个构建目标中使用的多人游戏角色(客户端、服务器)。

  • 内容选择:提供UI(用户界面) 允许用户与您的应用程序交互。Unity 目前支持三种 UI 系统。 更多信息
    参见 术语表
    和 API,用于选择在不同的多人游戏角色中应该存在/删除哪些内容(游戏对象、组件)。
  • 自动选择:提供 UI 和 API,用于选择在不同的多人游戏角色中应自动删除哪些组件类型。
  • 安全检查:激活警告,帮助检测由于为多人游戏角色剥离对象而导致的潜在空引用异常。

分布式权限(测试版)

当您在用于游戏对象的 Netcode 2.0(com.unity.netcode.gameobjects)中使用分布式权限(测试版)模式以及新的多人游戏服务包时,可以创建稳定且成本较低的客户端托管游戏。

分布式权限使客户端在游戏会话期间对生成的 Netcode 对象拥有分布式所有权和权限。网络代码模拟工作负载分布在客户端之间,而网络状态则通过 Unity 提供的高性能云后端进行协调。

分布式权限还支持主机迁移,以便在客户端断开连接时可以在客户端之间传输状态权限,而不会中断游戏的连续性或稳定性。

用于游戏对象的 Netcode

用于游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路点等。游戏对象的功能由附加在其上的组件定义。 更多信息
参见 术语表
2.0 的Netcode现在支持分布式权限,并包含改进以促进多人游戏开发中的最佳实践。

有关具有实用示例和教程的基本用于游戏对象的 Netcode 功能的更多信息,请参见多人游戏用例示例。每个场景场景包含游戏环境和菜单。将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,您放置环境、障碍物和装饰,本质上是分段设计和构建您的游戏。 更多信息
参见 术语表
旨在展示如何使用各个 API 和系统,例如客户端-服务器通信、状态同步以及多人游戏的其他组件。

用于实体的 Netcode

用于实体实体是具有组件的任何游戏对象。您可以使用实体组件系统 (ECS) 将实体视为数据,而将组件视为作用于数据的功能。 更多信息
参见 术语表
1.3 的Netcode包含一些可用性改进、一个新的示例和一个演示游戏。

  • 新的用于实体的实验性 Netcode 示例以及实验性主机迁移优化了客户端托管游戏的可靠性,并支持游戏玩法的连续性,从而为玩家提供更好的体验。
  • 一个新的演示游戏Megacity Metro展示了 Unity 6 如何使设置多人游戏服务、联网车辆实现、可配置的基于规则的匹配以及沉浸式玩家通信变得更快更容易。

多人游戏服务包

新的多人游戏服务包简化了管理多人游戏服务之间依赖项的工作。例如,您可以

  • 快速添加将 Unity 游戏服务集成到您的游戏中的多人游戏元素。设置大厅、中继、分布式权限、匹配器和 Multiplay 托管。
  • 一个新的会话系统为多人游戏循环提供了一个简单的共享云端支持,该循环将玩家组合在一起并管理共享的会话/玩家状态。
  • 创建和管理对等 (P2P)、专用游戏服务器和分布式权限托管的在线会话。玩家可以通过匹配、加入代码或浏览活动会话列表来加入会话。

为了简化配置,会话现在直接与用于游戏对象的 Netcode、用于实体的 Netcode 和 Unity 传输包集成。

Vivox 通信和安全性

新的安全文本平台可以实时筛选和过滤多人游戏中的有害内容。用于上下文分析的新 AI 功能使用来自整个对话的上下文信息来准确识别其他过滤器错过的有害内容。

以前版本中的新增功能

用于游戏对象的 Netcode

Unity 6 预览版中引入的更改

  • 在用于游戏对象的 Netcode 中添加了分布式权限模式,客户端在游戏会话期间对生成的 Netcode 对象拥有分布式所有权或权限。使用分布式权限,客户端具有管理权限来生成网络对象,该对象会向云状态服务发出通知,并将状态更新传递给所有连接的客户端。高度优化的云状态服务维护客户端之间网络会话的整体状态。
  • 添加了一个新的 RPC 属性,该属性可以执行服务器和客户端 RPC 的功能,并启用客户端到客户端的 RPC。
  • 添加了许多实用程序方法,包括NetworkManager.OnConnectionEvent-ServerIsHost-InstantiateAndSpawn等。

2023.2 中引入的更改

  • 在网络对象组件上下文菜单中添加了“刷新场景内预制件一种资产类型,允许您存储一个完整的游戏对象,包括组件和属性。预制件充当模板,您可以从中在场景中创建新的对象实例。 更多信息
    参见 术语表
    实例”选项。使用此属性更新场景中存在于其具有NetworkObject组件之前的预制件实例的GlobalObjectIdHash值。此属性会影响构建列表中包含的所有场景。
  • 添加了NetworkManager方法SetPeerMTUGetPeerMTU以完全控制最大传输单元 (MTU) 大小。将其用于用于游戏对象的 Netcode 中的自定义协议。
  • 改进了网络预制件识别生成(例如,GlobalObjectIdHash),以修复 Unity 分配无效值的问题。
  • 通过以下方式改进了序列化 API 和代码生成管道
    • 添加了GenerateSerializationForTypeAttribute方法,您可以将其应用于任何类或方法以确保特定类型包含在代码生成序列化过程中。
    • 添加了GenerateSerializationForGenericParameterAttribute方法,您可以使用它在代码生成过程中包含由NetworkVariable类型包装的泛型类型。
    • 公开了其他NetworkVariableSerialization方法,以改进自定义NetworkVariable创建,而无需任何装箱成本。您可以使用NetworkVariableBase.MarkNetworkBehaviourDirty方法将 NetworkVariable 标记为脏数据。
  • 泛型NetworkBehaviour类型中的 RPC 现在可以序列化类的泛型类型参数。
  • 改进了对 Netcode 中 32 位 ARMv7 的支持。
  • 添加了其他NetworkManager事件OnServerStartedOnServerStoppedOnClientStartedOnClientStopped,以提供更好的NetworkManager初始化过程通知。

用于实体的 Netcode

Unity 6 预览版中引入的更改

  • 添加了对游戏对象渲染调试边界框的支持。
  • 添加了 NetCodeConfig ScriptableObject,其中包含大多数 NetCode 配置变量,您可以自定义这些变量,而无需修改代码。
  • 您现在可以通过以下方式禁用自动引导
    • 在 ProjectSettings 中禁用自动引导。
    • 将新的OverrideAutomaticNetcodeBootstrapMonoBehaviour 添加到您的第一个构建场景中。
  • 添加了AlwaysRelevantQuery,您可以使用它来指定相关性的常规规则,而无需逐个指定幽灵。
  • 添加了 BatchScaleImportanceDelegate,这是一个批量工作的新的重要性缩放函数版本。不需要同时设置 ScaleImportance 和 BatchScaleImportance 函数指针。如果设置了 BatchScaleImportance,则它是首选。

多人游戏模式

Unity 6 预览版中引入的更改

将多人游戏模式更新到版本 1.0。使用它在不离开 Unity 编辑器的情况下测试多人游戏功能。有关更多信息,请参阅多人游戏模式文档

专用服务器

Unity 6 预览版中引入的更改

发布了专用服务器包,您可以使用它在服务器和客户端角色之间切换项目,而无需创建另一个项目。有关更多信息,请参阅专用服务器包文档

2023.2 中引入的更改

播放器设置允许您为 Unity 生成的最终游戏设置各种特定于播放器的选项。 更多信息
参见 术语表
中添加了专用服务器优化选项,启用此选项后,将从服务器构建中剥离所有着色器在 GPU 上运行的程序。 更多信息
参见 术语表
。启用此选项可以大大减少构建时间。

2023.1 中引入的更改

为程序集定义排除和包含平台列表添加了新的专用服务器独立播放器选项。

工具

Unity 6 预览版中引入的更改

将多人游戏工具包更新至 2.1.0 版,添加了网络场景可视化作为新的视觉调试工具。有关更多信息,请参阅多人游戏工具文档

2023.1 中引入的更改

添加了多人游戏模式作为实验性功能。多人游戏模式是我们多人游戏工具集中的一项工作流程改进功能,旨在提供“类似单人游戏”的用户体验,但重点关注多人游戏的开发周期。

Unity 传输

2023.2 中引入的更改

  • Unity 传输 2.X 现在是Unity 传输的默认版本,也是推荐版本。
  • 现在可以通过NetworkSettings.WithNetworkConfigParameters中的新maxMessageSize参数配置传输发送的最大消息大小。这对于网络设备无法正确处理较大数据包的环境(例如某些移动网络或 VPN)很有用。该值不包括 IP 和 UDP 标头,但包括传输本身添加的标头(例如,可靠性标头)。默认值为 1400。请注意,客户端和服务器应使用相同的值。

2023.1 中引入的更改

Unity 传输协议(或 UTP)是一个更低级的网络Unity 系统,支持跨计算机网络进行多人游戏。 更多信息
参见 术语表
基础设施,用于处理跨网络以及跨连接平台和设备的数据传输。在最新的版本中,我们启用了 Web 和 TCP 连接,以提高我们的网络代码解决方案(如游戏对象网络代码和实体网络代码)的覆盖范围。

示例

Unity 6 预览版中引入的更改

  • 添加了专用游戏服务器示例,以演示多人游戏模式和专用服务器如何与游戏对象网络代码一起工作。
  • 添加了分布式权限示例,该示例集成了游戏对象网络代码中的分布式权限网络模型。

其他资源

使用多人游戏中心
动画