如何在不使用Unity自己的网络时在多人游戏中使用Unity的物理?

时间:2013-11-20 09:28:42

标签: networking unity3d game-physics smartfox photon

有一些多人游戏引擎,如Photon,Smartfox等,可以让你创建权威的游戏服务器。我是新手并尝试使用smartfox。我想在Unity中创建一个多人游戏。他们都支持团结。

我想知道如何在服务器端使用Unity的物理引擎来执行模拟,同时使用其他权威的网络引擎,如smartfox。 SmartFox是用java编写的,只支持用Java / Python编写扩展。

2 个答案:

答案 0 :(得分:0)

无论如何,使用Unity进行游戏服务器开发是可能的。但是,如果您正在开发商业游戏,则在权威服务器中运行Unity Physics可能会产生问题:

  1. 虽然Unity可以在没有GUI的命令行模式下运行,但它会将无用的图形资源和许多其他内容加载到游戏服务器内存中。与许多GameObject森林的Unity游戏循环很麻烦。请注意,大多数游戏服务器计算机都没有硬件或没有硬件3D加速。
  2. Unity以单线程方式运行游戏循环。除非您正在制作持久世界MMO游戏,否则您可能希望在服务器计算机中实例化许多游戏会话。也许你应该像所要求的游戏会话一样运行游戏服务器进程。数百个正在运行的进程将无用地降低服务器性能。

答案 1 :(得分:0)

出于上述Hyunjik Bae指出的原因,最好的办法是在Smartfox Java扩展上用Java创建一个简化的物理系统,它只处理位置,矢量等,而不是图形。但这将是一个巨大的任务。

如果您的计算机可以在smartFox服务器之外运行,您可以在该计算机上运行特定的特殊统一应用程序,并使其与Smartfox通信并充当权威物理引擎,而不会滞后于SF服务器。理想情况下,您将删除所有网格和效果,并仅在权威机器上使用对撞机。

如果安全性不是一个大问题,那么最简单的方法就是让其中一个客户端充当权威机器。这是多少点对点游戏的工作原理。为了帮助防止黑客入侵,您可以定期并随机地将服务器分配给不同的客户端,并在权威客户端离开游戏室时执行此操作。