了解自上次发布以来多人游戏中的更改。
Unity 6 以一种为未来发展做好准备的方式简化了多人游戏开发。
作为 Unity 6 中的核心包提供,全新的多人游戏中心使设置和开发多人游戏变得更加容易。新的提示和工作流程使用游戏参数和需求来建议相关的包和服务,然后生成可用于启动项目的动态模板。
您无需离开编辑器即可设置多人游戏;个性化的交互式指导、教育材料和快捷方式使您能够更轻松地进行实验并及时响应反馈。
新的多人游戏小部件使将 Unity 游戏服务 (UGS) 集成到您的多人游戏中变得更加容易。您可以将小部件作为独立包访问,也可以从多人游戏中心访问。
包含的多人游戏、中继、大厅、Vivox 等服务使查找兼容的相关集成变得更加容易。例如,将中继服务集成到编辑器中,使您能够在开发过程的早期更轻松地创建会话并连接用户。
用于游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路点等。游戏对象的功能由附加在其上的组件定义。 更多信息
参见 术语表 2.0 的多人游戏工具包版本 2.2.1 改善了 Unity 中多人游戏开发的工作流程,提高了 Netcode 的性能,并增加了对分布式权限的支持。
用于游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路点等。游戏对象的功能由附加在其上的组件定义。 更多信息
参见 术语表 2.0 的多人游戏模式包提供了减少迭代周期、验证实现选择并在运行时流程的早期提高游戏质量的工作流程。
新的游戏模式场景将测试周期集成到生产环境中,以帮助您更早地为真实玩家提供首个可玩体验。游戏模式场景支持桌面和专用服务器环境。
用于游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路点等。游戏对象的功能由附加在其上的组件定义。 更多信息
参见 术语表 2.0 的专用服务器包整合了编辑器中的专用游戏服务器工作流程,以便更轻松地将专用服务器部署到本地和 Multiplay 托管。
例如,您可以在服务器和客户端角色之间切换项目,而无需创建另一个项目。为了使切换项目更容易,新的多人游戏角色允许您在客户端和服务器之间分配游戏对象和组件。
多人游戏角色使您可以控制在每个构建目标中使用的多人游戏角色(客户端、服务器)。
当您在用于游戏对象的 Netcode 2.0(com.unity.netcode.gameobjects)中使用分布式权限(测试版)模式以及新的多人游戏服务包时,可以创建稳定且成本较低的客户端托管游戏。
分布式权限使客户端在游戏会话期间对生成的 Netcode 对象拥有分布式所有权和权限。网络代码模拟工作负载分布在客户端之间,而网络状态则通过 Unity 提供的高性能云后端进行协调。
分布式权限还支持主机迁移,以便在客户端断开连接时可以在客户端之间传输状态权限,而不会中断游戏的连续性或稳定性。
用于游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路点等。游戏对象的功能由附加在其上的组件定义。 更多信息
参见 术语表 2.0 的Netcode现在支持分布式权限,并包含改进以促进多人游戏开发中的最佳实践。
有关具有实用示例和教程的基本用于游戏对象的 Netcode 功能的更多信息,请参见多人游戏用例示例。每个场景场景包含游戏环境和菜单。将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,您放置环境、障碍物和装饰,本质上是分段设计和构建您的游戏。 更多信息
参见 术语表旨在展示如何使用各个 API 和系统,例如客户端-服务器通信、状态同步以及多人游戏的其他组件。
用于实体实体是具有组件的任何游戏对象。您可以使用实体组件系统 (ECS) 将实体视为数据,而将组件视为作用于数据的功能。 更多信息
参见 术语表 1.3 的Netcode包含一些可用性改进、一个新的示例和一个演示游戏。
新的多人游戏服务包简化了管理多人游戏服务之间依赖项的工作。例如,您可以
为了简化配置,会话现在直接与用于游戏对象的 Netcode、用于实体的 Netcode 和 Unity 传输包集成。
新的安全文本平台可以实时筛选和过滤多人游戏中的有害内容。用于上下文分析的新 AI 功能使用来自整个对话的上下文信息来准确识别其他过滤器错过的有害内容。
NetworkManager.OnConnectionEvent
、-ServerIsHost
、-InstantiateAndSpawn
等。NetworkObject
组件之前的预制件实例的GlobalObjectIdHash
值。此属性会影响构建列表中包含的所有场景。NetworkManager
方法SetPeerMTU
和GetPeerMTU
以完全控制最大传输单元 (MTU) 大小。将其用于用于游戏对象的 Netcode 中的自定义协议。GlobalObjectIdHash
),以修复 Unity 分配无效值的问题。GenerateSerializationForTypeAttribute
方法,您可以将其应用于任何类或方法以确保特定类型包含在代码生成序列化过程中。GenerateSerializationForGenericParameterAttribute
方法,您可以使用它在代码生成过程中包含由NetworkVariable
类型包装的泛型类型。NetworkVariableSerialization
方法,以改进自定义NetworkVariable
创建,而无需任何装箱成本。您可以使用NetworkVariableBase.MarkNetworkBehaviourDirty
方法将 NetworkVariable 标记为脏数据。NetworkBehaviour
类型中的 RPC 现在可以序列化类的泛型类型参数。NetworkManager
事件OnServerStarted
、OnServerStopped
、OnClientStarted
和OnClientStopped
,以提供更好的NetworkManager
初始化过程通知。OverrideAutomaticNetcodeBootstrap
MonoBehaviour 添加到您的第一个构建场景中。AlwaysRelevantQuery
,您可以使用它来指定相关性的常规规则,而无需逐个指定幽灵。添加了 BatchScaleImportanceDelegate
,这是一个批量工作的新的重要性缩放函数版本。不需要同时设置 ScaleImportance 和 BatchScaleImportance 函数指针。如果设置了 BatchScaleImportance,则它是首选。将多人游戏模式更新到版本 1.0。使用它在不离开 Unity 编辑器的情况下测试多人游戏功能。有关更多信息,请参阅多人游戏模式文档。
发布了专用服务器包,您可以使用它在服务器和客户端角色之间切换项目,而无需创建另一个项目。有关更多信息,请参阅专用服务器包文档。
在播放器设置允许您为 Unity 生成的最终游戏设置各种特定于播放器的选项。 更多信息
参见 术语表中添加了专用服务器优化选项,启用此选项后,将从服务器构建中剥离所有着色器在 GPU 上运行的程序。 更多信息
参见 术语表。启用此选项可以大大减少构建时间。
为程序集定义排除和包含平台列表添加了新的专用服务器独立播放器选项。
将多人游戏工具包更新至 2.1.0 版,添加了网络场景可视化作为新的视觉调试工具。有关更多信息,请参阅多人游戏工具文档。
添加了多人游戏模式作为实验性功能。多人游戏模式是我们多人游戏工具集中的一项工作流程改进功能,旨在提供“类似单人游戏”的用户体验,但重点关注多人游戏的开发周期。
NetworkSettings.WithNetworkConfigParameters
中的新maxMessageSize
参数配置传输发送的最大消息大小。这对于网络设备无法正确处理较大数据包的环境(例如某些移动网络或 VPN)很有用。该值不包括 IP 和 UDP 标头,但包括传输本身添加的标头(例如,可靠性标头)。默认值为 1400。请注意,客户端和服务器应使用相同的值。Unity 传输协议(或 UTP)是一个更低级的网络Unity 系统,支持跨计算机网络进行多人游戏。 更多信息
参见 术语表基础设施,用于处理跨网络以及跨连接平台和设备的数据传输。在最新的版本中,我们启用了 Web 和 TCP 连接,以提高我们的网络代码解决方案(如游戏对象网络代码和实体网络代码)的覆盖范围。