客户端 – 服务器 – FPS多人游戏服务器更新其客户端的一般策略是什么?

我和朋友正在讨论FPS服务器如何更新连接到它的客户端.我们观看了一个 video的男人在 Battlefield: Bad Company 2作弊,看到它突出了屏幕上敌人的位置,它让我们思考.

他的论点是,服务器只使用与客户端直接相关的信息更新客户端.即如果敌方玩家距离客户太远或出于效率原因而离开客户的视线,服务器将不会发送有关敌方玩家的信息.但他不确定 – 他提出了一个隐藏在岩石后面的人的例子,却看不到任何人.如果玩家突然出现在他的视线中有三名玩家的位置,那么在他们在屏幕上渲染之前会有50ms的延迟,而服务器会传输必要的信息.

我的论点恰恰相反:服务器向客户端发送有关每个玩家的所有信息,并让客户端理清允许的内容和不允许的内容.我认为,对于服务器来说,只需将所有内容发送到客户端并让客户端完成繁重工作,实际上计算成本会更低.我还想到这是骗子程序如何工作 – 他们拦截服务器数据包,获取敌人的位置,然后在客户端的视图中显示它们.

所以问题是:现代第一人称射击服务器采用哪些一般政策或策略来保持客户的最新状态?

这是你的位置和你朋友的位置之间的妥协,每个游戏都会做出一个稍微不同的决定来实现他们想要的权衡.服务器可以尝试不发送比它需要的更多信息,例如.执行距离检查,但不可避免地会发送一些可以被利用的信息,例如发送一个岩石背后的敌人的位置,这两者都是因为服务器每次计算确切的视线太昂贵了.还有你提到的延迟问题.

通常情况下,您会发现FPS游戏确实倾向于“泄漏”比其他游戏更多的信息,因为他们更关心的是流畅的游戏体验,需要更快,更常规的更新速度.此外,与MMO不同,FPS播放器通常可以自由移动到不同的服务器,如果他们发现他们的游戏被作弊破坏了.

一些额外的阅读:

> Multiplayer and Network Programming Forum FAQ @ Gamedev.net
> Networking for Game Programmers @ GafferOnGames
> Source Multiplayer Networking @ Valvesoftware.com

相关文章
相关标签/搜索