Unity UNet MMO风格的专用服务器方法



我们正在为我们的机构创建一个MMO风格的虚拟校园,我需要一些关于使用UNet的最佳实践和实施的建议。阅读后,我得出的结论是,我可能应该使用一个带有单独场景的项目进行服务器构建。所以我设置了它,它立即运行并启动一个专用服务器。然后,游戏场景会自动连接,但即使玩家已添加到网络管理器中,也不会实例化玩家。服务器场景只是一个带有 UNet 网络管理器组件的空白场景。

我对这种情况的看法是,为了获得更好的用户体验,游戏场景和所有用户交互应该在客户端进行,然后更新服务器,然后服务器更新其他客户端。(随意击落这个)。

如果上述内容是正确的,那么如何将服务器场景设置为幽灵而不实际处理任何信息?

编写一个将某些变量发送到服务器的脚本而不是使用 UNet 网络组件是否有益,因为我认为它们会同步整个对象?

UNet 是否允许这种功能,其中服务器只是充当更新客户端的中介,而不是游戏的完整实例?

我认为我真正要说的是,使用 UNet 创建 MMO 风格、专用、无头、网络设置的最佳方法是什么?

我不会将UNET的HLAPI(高级API)用于MMO。它为您提供了很好的开箱即用组件,如网络转换和网络管理器,但您将找不到您所在范围的项目所需的灵活性。这可能是可能的,但整个HLAPI感觉就像是为支持"主机"混合体而构建的,该混合体既是服务器又是客户端(每个人都仅限于主机正在运行的一个场景)。

查看低级 API (LLAPI)。它只是 UDP 套接字顶部的一层薄的、经过 Unity 优化的层。它是一个从客户端发送消息的简单框架 ->服务器,因此完全由您来构建移动玩家、管理场景更改等的引擎。但是,这样,您的服务器就可以在完全不同的 Unity 应用程序上运行,其唯一目的是处理客户端消息。

最新更新