在多人网络中使用非权威服务器而不是完全权威服务器的缺点/注意事项/限制是什么?

What are the Drawbacks/ Caveats / Limitations of using a Non-Authoritative Server over a Fully Authoritative Server for Multiplayer Networking?

我们的团队正在开发一款快节奏竞技场 FPS 游戏,每场比赛最多 10 名玩家 (5v5) 移动平台使用 Unity。 我们真的在使用非权威服务器还是完全权威服务器上进退两难。


非权威方法:每个玩家只需将有关其当前位置的快照发送给其他玩家,并调用远程过程调用来处理特殊事件,例如开火或触发爆炸。物理是在本地模拟的。

考虑使用 Photon Unity Networking (PUN) 这种方法,因为 API 和 主客户端模型高级中继


权威方法:客户端只需将他们的输入快照发送到专用服务器,在专用服务器上使用输入模拟游戏并将游戏状态发送回客户端,客户端只是渲染它。

考虑使用 Photon Bolt,因为 内置 客户端预测滞后补偿,这在使用专用服务器时至关重要。


那么,除了让作弊者更容易破解我的游戏之外,使用非权威服务器而不是权威服务器的 drawbacks/Limitations 有什么好处?手游需要服务器权限吗?对于我们尝试制作的游戏类型,您有什么建议

此外,运行 Unity 实例 在专用服务器(无头模式)上的开销有多糟糕(或多好)?

谢谢!

So, Apart from making it easy for Cheaters to hack my game, what are the drawbacks/Limitations of using a Non-Authoritative Server over Authoritative one?

去同步化是一个相当大的缺点。如果本地模拟的物理不影响游戏的功能结果就可以了。

但是,例如,如果发射器发射的火箭轨迹是在本地用物理模拟的,并且它是否击中另一个玩家也是在本地决定的,那么尽管 貌似没被打中

在更严重的情况下,玩家可能会在他们的机器上体验完全不同的比赛结果。

Is Server Authority required in a mobile game?

不一定。

What are your recommendations for the type of game we're trying to make?

对于多人游戏,通常建议有一个权威服务器来计算重要事件(例如被子弹击中)。

为防止移动和动作不稳定,您需要实施某种形式的 interpolation/prediction/dead 计算客户端,并在您的权威服务器回复时进行更正。

Also, How bad(or good) is the overhead of running an Unity Instance on a Dedicated Server(In Headless Mode)?

我不确定您要比较的开销是多少,但通常情况下,没有图形且在批处理模式下作为服务器的 Unity 实例 运行 能够很好地有效处理 10 人的多人游戏。