反延迟指南

0 点赞
Serious Sam 3: BFE
转载

本指南将帮助您显著提升游戏在联网对战(无论是互联网还是局域网)时的网络子系统性能。应用建议的设置后(前提是您的互联网服务提供商良好),联网游戏的质量将接近单人游戏的质量。换句话说,所有延迟、微卡顿、隐形子弹等问题都将消失。本指南旨在帮助你显著提升游戏在互联网或局域网合作游玩时的网络子系统性能。如果你使用这些设置(且拥有良好的网络服务提供商),你的网络游玩体验质量将几乎与单人游玩相当。换句话说,所有延迟、微卡顿、隐形投射物等问题都将被消除。 理论部分 在网络游玩过程中,游戏客户端会与服务器交换信息。简单来说,你的游戏会将所有你按下的按键以及鼠标的所有移动信息传输到服务器。服务器同时接收所有玩家的信息并进行处理,还负责控制所有怪物和子弹的移动。处理完所有收到的信息后,服务器会将处理结果返回给客户端,这样你就能在屏幕上看到所有怪物和其他玩家的移动。这个过程每秒会发生很多次。当然,从服务器获取更新信息的频率越高、速度越快,您就能看到越完整、越详细的实时情况。 由于未知原因,游戏和服务器(包括专用服务器)的默认网络设置被设为非常受限的值,这导致大部分数据丢失。显然,游戏开发者对高延迟问题的担忧远胜于低数据传输速度问题。换句话说,如果你的网络带宽较低(低于1兆比特),使用我提供的设置可能会导致延迟升高。这种情况下,请取消这些设置或降低我建议的数值。还需要指出的是,大多数专用服务器的管理员在正确配置其游戏服务器的能力方面并没有太多深入研究。因此,遗憾的是,大多数专用服务器(我所检查过的)都采用标准或接近标准的设置,这无法充分发挥游戏过程的全部潜力。 在网络游戏过程中,游戏客户端会向服务器传输数据并接收返回的数据。简单来说,你的游戏会向服务器传输你按下的所有按键信息以及鼠标的所有移动信息。游戏服务器同时接收所有玩家的此类信息并进行计算。此外,服务器还负责管理所有怪物和投射物的移动。计算完成后,服务器会将计算结果传输给客户端,你就能在屏幕上看到所有怪物和其他玩家的移动了。这个循环每秒会重复很多次。当然,客户端接收更新信息的频率越高、速度越快,我们看到的画面就越细致流畅。出于未知原因,游戏和服务器(包括专用服务器)的默认网络设置数值非常有限,这导致我们丢失了大量数据。我猜测,游戏开发者可能更担心延迟问题,而非网络速度过慢。确实,如果你的网络带宽不足(低于每秒1兆比特),可能会遇到一些延迟问题。这种情况下,我建议你取消我所有的设置,或者至少尝试使用不那么激进的数值。 不得不说,大多数专用服务器的管理员在服务器配置方面并不十分精通。这意味着,恐怕我所检查过的大多数专用服务器都使用默认(或接近默认)的设置,这完全无法发挥网络游戏的全部潜力。hud_iShowBandwidth 首先,我们想让大家能直观看到当前的网络状况。请打开游戏控制台(按下波浪键~),然后输入(建议直接复制)以下内容(注意字母大小写): hud_iShowBandwidth=1 该变量的默认值为0,若想恢复默认设置,只需在控制台输入: hud_iShowBandwidth=0 记得按下回车键确认。此变量用于在屏幕右上角以白色数字显示客户端从服务器接收信息的速度(如果已启用FPS显示,则显示在FPS上方)。截图:

白色数字104792即为当前数据接收速度。此速度以字节每秒(非比特)为单位,在游戏术语中简称为BPS。该数字更新速度极快,每接收到新的网络数据包都会更新。 请注意,服务器到客户端的数据传输速度尤为重要。大部分数据正是通过此方向传输,而客户端向服务器发送的数据相对较少。现在我们来看看这个数字,接下来我会解释其中的门道。 首先,我们要知道自己在做什么。打开游戏控制台(按~键),输入或直接复制粘贴以下内容(注意大小写): hud_iShowBandwidth=1 这个控制台变量的默认值是0,你可以随时将其恢复: hud_iShowBandwidth=0 别忘了按回车键。 这个控制台变量用于开启带宽使用显示模式。如果开启了FPS计数器,带宽使用情况会以白色数字显示在屏幕右上角,位于FPS计数器的正上方。截图:

当前带宽使用量为白色数字104792。该数值单位为字节每秒(非比特),即游戏术语中的BPS。此数值刷新速度极快,每接收一个新的网络数据包就会更新。 需要明确的是,大部分数据是从服务器传输到客户端,而非相反方向。客户端向服务器传输的数据量相对较少。 现在我们来了解并解释这一功能。 cli_iMaxBPS / ser_iMaxClientBPS 这两个变量用于设置服务器向客户端传输数据的速度限制。其工作原理如下: 当连接到服务器时,客户端会请求一个等于cli_iMaxBPS的期望速度。服务器会将客户端的请求与其自身的ser_iMaxClientBPS变量进行比较,并向客户端提供这两个数值中较小的那个速度。也就是说,服务器不会向客户端提供超过自身认为必要的速度,但如果客户端请求的速度较低,服务器会提供较低的速度。 现在最重要的一点是,客户端变量的标准值为12000 BPS。设置->多人游戏设置->连接速度 1) ISDN - 设置为6000 BPS。 2) DSL - 设置为12000 BPS。这是默认设置。 3) 局域网(LAN)- 设置为50000 BPS。 截图:服务器端 - 20000 BPS。这意味着大多数玩家(未修改游戏标准设置的玩家)以12000 BPS的速度进行游戏。 正如你在上一张截图中看到的 - 我的数值超过了100000 BPS,并且根据观察,在活跃的游戏场景中,这个数值可能会超过120000 BPS。 这意味着在使用标准设置进行游戏时,高达90%的游戏事件信息会丢失。当然,这会表现为延迟、微卡顿和隐形子弹,以及低FPS,但不是图形FPS,而是与网络传输的数据帧相关的网络FPS。 那么,这是最终的解决方法。使用游戏控制台(就像我们之前做的那样),为这两个变量设置较大的值。我建议设置为200000或更高,但设置过大的值没有意义。无论如何,您实际上都能获得不受限制的数据传输速度,无论是200000 BPS还是1000000 BPS。 接下来谈谈不好的方面。 正如您已经了解的,大多数服务器都是默认设置的,因此您的客户端设置几乎不会产生任何影响。您会获得20000 BPS而不是12000 BPS,这当然更好,但这仍然比期望的速度低6-7倍。因此,您可以通过尝试来寻找具有高BPS值的服务器。进入服务器,启动最后一关【时间守护者】,玩到第一场战斗(那里一开始就有很多敌人),然后留意角落里的数字。如果该数字显著超过20000(达到40000-100000甚至更高),则说明服务器支持这一功能。当然,你也可以自己创建游戏并邀请好友。正是出于这个目的,你需要修改服务器变量的值——创建自己的游戏时,你的电脑将作为服务器。 这两个控制台变量用于限制网络带宽。 其工作原理如下: 在连接过程中,客户端会请求服务器授予等于cli_iMaxBPS的网络带宽量。服务器会将其与自身的ser_iMaxClientBPS值进行比较,并向客户端授予较小的值。换句话说,服务器不会向客户端分配超过其认为足够的带宽,但如果客户端主动请求,服务器会分配更少的带宽。 以下是最重要的部分。 cli_iMaxBPS的默认值为12000,ser_iMaxClientBPS的默认值为20000。这意味着大多数玩家(从未修改默认设置的玩家)是以12000 BPS的带宽进行游戏。 从截图中可以看到,我的带宽超过了100000 BPS。在一些游戏活跃场景中,我甚至观察到超过120000 BPS的情况。 这意味着在默认设置下,游戏过程中近90%的事件信息通常会丢失。 这当然会导致延迟、微卡顿和隐形投射物的问题。同时还会出现低网络帧率——不是图形帧率,而是代表网络帧的帧率。主要思路如下:使用游戏控制台(就像我们之前做的那样)将这两个控制台变量调整为更高的值。我建议设为200000或更高。设置过高的值没有意义——因为无论设为200000 BPS还是1000000 BPS,实际上你都能获得近乎无限的带宽。 恐怕我们得谈谈不太好的情况。 正如你无疑知道的,大多数专用服务器都使用默认设置,所以你的客户端设置并不是那么重要。你会获得20000 BPS而不是12000 BPS,这已经有所改善,但仍然比我们理想中想要的差6-7倍。不过你有机会尝试寻找一些具有高BPS的服务器。连接服务器,将地图设置为最后一关【时间守护者】,玩到有激烈战斗的部分(从一开始就有大量怪物),然后观察屏幕右上角的数据值。如果数值明显超过20000(达到40000 - 100000甚至更高),说明服务器状态良好。 当然,你也可以创建自己的游戏并邀请朋友。这就是为什么你也需要调整服务器控制台变量。如果你创建自己的游戏,你的电脑就会成为服务器。 通过菜单进行设置 你可以通过游戏菜单修改客户端变量。

如您所见,我这里显示的是“自定义”——因为我设置了一个与菜单中三个可用选项不同的值。所以您必须使用控制台才行。 您可以通过游戏菜单设置客户端的控制台变量。 路径:设置->多人游戏设置->网络速度(或带宽速度) 抱歉,我没有英文截图。 1) ISDN设置为6000 BPS。 2) DSL设置为12000 BPS。这是默认值。 3) LAN设置为50000 BPS。

我已将这三个数值设置为不同的值。因此,你需要使用游戏控制台进行设置。 致谢 (俄语)我是从另一个人的指南中偶然发现这些信息的。我们曾在他指南的评论区讨论过这些问题。感谢他提供的思路。