我和一个朋友正在讨论 FPS 服务器如何更新连接到它的客户端。我们观看了一个人在《战地:坏连队 2》中作弊的视频,看到它如何突出敌人在屏幕上的位置,这让我们思考。
他的论点是服务器只用与客户端直接相关的信息更新客户端。即如果敌方玩家距离客户端太远或出于效率原因不在客户端的视线范围内,服务器将不会发送有关敌方玩家的信息。不过他不确定——他举了一个例子,一个人躲在石头后面,看不到任何人。如果玩家突然出现在他视线范围内的三个玩家的位置,那么在服务器传输必要的信息之前,他们会在屏幕上呈现 50 毫秒的延迟。
我的论点是相反的:服务器向客户端发送有关每个玩家的所有信息,并让客户端整理出哪些是允许的,哪些是不允许的。我认为服务器将所有内容发送给客户端并让客户端完成繁重的工作实际上会降低计算成本,可以这么说。我还认为这就是作弊程序的工作原理——它们拦截服务器数据包,获取敌人的位置,然后在客户端的视图中显示它们。
那么问题来了:现代第一人称射击游戏服务器采用哪些一般策略或策略来保持其客户端更新?