7

我和一个朋友正在讨论 FPS 服务器如何更新连接到它的客户端。我们观看了一个人在《战地:坏连队 2》中作弊的视频,看到它如何突出敌人在屏幕上的位置,这让我们思考。

他的论点是服务器只用与客户端直接相关的信息更新客户端。即如果敌方玩家距离客户端太远或出于效率原因不在客户端的视线范围内,服务器将不会发送有关敌方玩家的信息。不过他不确定——他举了一个例子,一个人躲在石头后面,看不到任何人。如果玩家突然出现在他视线范围内的三个玩家的位置,那么在服务器传输必要的信息之前,他们会在屏幕上呈现 50 毫秒的延迟。

我的论点是相反的:服务器向客户端发送有关每个玩家的所有信息,并让客户端整理出哪些是允许的,哪些是不允许的。我认为服务器将所有内容发送给客户端并让客户端完成繁重的工作实际上会降低计算成本,可以这么说。我还认为这就是作弊程序的工作原理——它们拦截服务器数据包,获取敌人的位置,然后在客户端的视图中显示它们。

那么问题来了:现代第一人称射击游戏服务器采用哪些一般策略或策略来保持其客户端更新?

4

2 回答 2

11

这是你的立场和你朋友的立场之间的妥协,每场比赛都会对此做出略微不同的决定,以实现他们想要的权衡。服务器可能会尝试不发送比它需要的更多的信息,例如。执行距离检查,但不可避免地会发送一些可以被利用的信息,例如发送在岩石后面的敌人的位置,这既是因为服务器每次计算准确视线的成本太高,而且也适用于您提到的延迟问题。

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

一些额外的阅读:

于 2010-05-17T11:08:08.823 回答
3

一般策略应该是不信任客户端,因为开发人员应该假设任何人都可以从头开始重写客户端。

话虽如此,我认为很难避免向客户发送此类信息(并防止此类作弊)。即使没有视线,您可能仍然需要(间接)发送位置,因为客户可能希望使用一些需要声源的 3D 位置等的环绕声系统。

于 2010-05-16T20:59:45.613 回答