我们的团队正在使用 Unity 为移动平台开发一款快节奏竞技场 FPS 游戏,每场比赛最多 10 名玩家 (5v5) >。 我们确实陷入了是否使用非权威服务器还是完全权威服务器的两难境地。
非权威方法:每个玩家只需将有关其当前位置的快照发送给其他玩家,并为特殊事件(例如发射武器或触发爆炸)调用远程过程调用。物理是本地模拟的。
考虑使用Photon Unity Networking (PUN)来实现此方法,因为有成熟的 API 和主客户端模型和高级继电器。。
权威方法:客户端只需将其输入快照发送到专用服务器,在专用服务器中使用输入模拟游戏,并将游戏状态发送回客户端,客户端只需渲染它。
考虑使用Photon Bolt来实现这种方法,因为内置客户端预测和延迟补偿在使用专用服务器时至关重要。
那么,除了让作弊者更容易破解我的游戏之外,使用非权威服务器相对于权威服务器还有哪些缺点/限制?手游需要服务器权限吗?对于我们想要制作的游戏类型,您有什么建议?
此外,在专用服务器( headless 模式)上运行 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?
对于多人游戏,通常建议拥有一个权威服务器来对重要事件(例如被子弹击中)进行计算。
为了防止不稳定的运动和 Action ,您需要在客户端实现某种形式的插值/预测/航位推算,并在权威服务器回复时进行更正。
Also, How bad(or good) is the overhead of running an Unity Instance on a Dedicated Server(In Headless Mode)?
我不确定您要比较的开销是多少,但通常,Unity 实例在没有图形的情况下以批处理模式运行,因为服务器能够很好地有效处理 10 人的多人游戏。
关于unity-game-engine - 在多人网络中使用非权威服务器而不是完全权威服务器有哪些缺点/警告/限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50636364/