求生之路官方服务器延迟过高,《求生之路2》服务器tickrate的作用与网络参数的优化...

在《求生之路2》中,玩家能够自己搭建服务器,这就不得不牵涉到服务器tickrate与各项网络参数了,只有合理调整好这些,你的服务器才能够尽善尽美。随小编一起来看看关于服务器tickrate的作用与网络参数的优化吧。

50e167bfb49d2812208dd5fc48fb2c28.png

首先,tickrate是服务端里一个非常关键的参数,它影响了服务端与客户端之间的更新频率,理论上来说,tickrate越高的服务器,玩家之间各种操作的反馈和判定就会更加精准,但是同时也会对服务器和玩家的网络有更高的要求。

毕竟tickrate越高,服务端与客户端之间收发的数据包就会越多,所以产生loss的几率就会变高,如果网络带宽不够,就会产生choke,而loss和choke会严重影响游戏体验。

这里只是简单的介绍一下tickrate的作用,如果想要了解更多自己去网上搜索相关的资料。

然而,L4D2是一款09年的老游戏了,那个年代的Source引擎(Source2009)版本比较老旧,存在很多问题,而且没有开放接口对tickrate进行修改。但是后来有国外的技术大佬开发了一款名为Tickrate Enabler的插件(并不是Sourcemod插件,也不是Metamod插件,准确的说是Source Server-Side Addons),这个插件可以让我们修改L4D2服务端的tickrate,打破L4D2服务端默认30Tick的瓶颈,嗨呀,发财啦发财啦

然后上面也简单介绍了tickrate的作用,这对于L4D2来说是一个革命性的进步,但事实并非如此。。。高tickrate的服务器往往存在着严重的choke,不仅如此,在高tickrate的服务器里也并没有感觉到各种骚操作的判定变得精准,这就是服主和玩家经验尚缺,对Source引擎网络传输概念不了解的后果。

一些服主可能以为我把tickrate调高,整成100tick,我的服务器就会变得高大上起来,对此我只能说too young

实际上你的服务器只能说是最高支持100tick,并没有发挥出100tick的作用,同样的,玩家的参数设置不当,也只能说是在100tick的服务器里玩着30tick的判定。

所以,服务端不仅要将tickrate调高,同时还要修改一些网络传输参数来达到对应tickrate的配置,这样才能100%发挥出高tickrate的优势,同样的,客户端也要修改一些网络传输参数,才能享受到高tickrate带来的优势,而且服务端与客户端的网络传输参数要保持同步才是最佳效果。

打个简单的比喻,tickrate和网络传输参数好比两根一样大的水管,tickrate的那根水管阀门全开,而网络传输参数的那根水管阀门只开了一半,所以你tickrate再高,经过网络传输参数水管的也就那么多,所以毫无意义,而且还会产生较高的choke。

顺便简单一句话解释下loss和choke是什么意思,loss就是丢包,choke就是网络带宽不够,导致的数据包被延迟送达,网络瓶颈和参数设置不当都会产生choke,服务器与客户端的网络连接质量有问题就会产生loss.

根据Valve Developer Community的解释以及自己的理解和实际调试结果,我来分别介绍下客户端和服务端的网络传输参数(这里只是介绍作用,后面再给出设置建议)。

首先,先说下客户端的几个参数:

1、rate - 客户端每秒最大可以接收多少字节的数据包,默认值为10000(约等于9.76k),在L4D2这个版本的引擎里最大支持30000(约等于29.3k)。这个参数控制着游戏客户端的带宽,取值范围受服务器对应参数sv_minrate/sv_maxrate的限制。

2、cl_updaterate - 客户端每秒向服务器请求多少次刷新,这个参数控制着客户端的游戏世界更新频率,理论上设的越高,那么你在游戏里看到的东西就会跟服务器更为同步。默认值为20 (也就是20Tick),最大值受服务器Tickrate的影响,如果超过了服务器的Tickrate,那么毫无意义而且会浪费带宽,取值范围受服务器对应参数sv_minupdaterate/sv_maxupdaterate的限制。

3、cl_cmdrate - 客户端每秒最大可以向服务器报告多少次动作,玩家在游戏里移动、射击、推猴、秒牛等等都属于一种动作。因为服务器Tickrate的概念,服务端在收集捕获这些动作的时候都有个频率,不可能实时将各种细微的操作都立即计算出来反馈给客户端,所以这个参数和Tickrate控制着游戏里各种判定的精准度。默认值为30(也就是30Tick),最大值为100并且受服务器Tickrate的影响,如果超过了服务器的Tickrate,那么毫无意义而且会浪费带宽,取值范围受服务器对应参数sv_mincmdrate/sv_maxcmdrate的限制。

4、这里还要提到两个参数cl_interp_ratio和cl_interp,也就是我们常说的lerp,国内L4D2对lerp这个东西有着非常严重的误解,甚至还有很多人无脑跟风,所以我要重点并且简单明了的介绍一下lerp的作用,以及如何根据自己的情况去设置合理的lerp值。

5、Lerp的作用:我上面介绍了服务器Tickrate的概念,以及cl_updaterate参数的作用,所以看懂了的人都知道,服务端游戏世界与客户端游戏世界的同步都有个频率,这个频率受Tickrate和cl_updaterate参数的影响,并不是实时的。因此,在两次更新的间隔时间里(1000ms/Tickrate=?ms),客户端没有收到来自服务器的数据,就不知道该显示什么,所以就有了lerp这个概念。lerp用于预测和补偿两次更新的间隔时间里该显示什么,也就是说lerp相当于在你原有延迟的基础上再给你手动增加了个延迟,比如你现在的延迟(ping)是100ms,你的lerp值也是100ms,那么你真正的延迟是100ping+100lerp=200ms,那么你在游戏里看到的都是0.2秒(200ms)前发生的事情,所以就产生了为什么我看hunter离我还有这么远就扑中我了,我charger撞出去模型都碰撞了为什么没有判定,tank拳头贼J8长等情况。。同样的,在服务器刷新频率不高(tickrate低或者网络传输参数没有优化)的情况下,你设置了较低的lerp值就会看到其他玩家以及小SS移动的时候模型一顿一顿的(一步一个小闪现)。这就是tickrate/ping/lerp/updaterate/cmdrate的锅在正规比赛中禁止选手在中途修改lerp值也是有原因的,因为在某些情况下lerp值能给自己带来优势,属于涉嫌作弊的行为。

6、所以lerp值要根据自己的网络情况,以及服务器的网络情况和参数设置来得到最适合自己的lerp值,一般情况下,只要你不是那种玩啥都卡的村里网,而且服务器网络和刷新频率没有问题,那么我推荐lerp值都应该设置为0,这样才能最大程度的保证你看到的东西没有延迟。如果服务器刷新频率不够或者你的网络有点毛病,那么在尽可能低的原则下(个人建议),找到一个能流畅游戏的lerp值才是最适合你的,lerp值也跟你的反应速度和习惯有关,用惯了一个lerp的玩家可能需要一定时间才能适应新的lerp值。(以上均为个人建议,仅供参考)

具体lerp值该怎么修改我这里就懒得BB了,网上到处都有教程。(其实lerp值的影响范围跟tickrate和updaterate有关,我这里就不细说了,普通玩家可以不必关心这些,大概明白lerp的意思就行。一个合格的服务器都会设置好自己的相关参数,因为客户端lerp的实际取值范围也受服务器参数的影响和限制,服务器上很多参数都是有关联的)

原创文章,作者:游戏小编,如若转载,请注明出处:http://www.uc1z.com/gl/197236.html

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值