网络的延迟怎么算正常

网络的延迟怎么算正常,第1张

网络延迟正常范围是 1-100 (毫秒)
30以内是极速。30以上70以下是正常,70以上有点慢但不影响
100以上就会影响游戏了
当然,实际游戏中会存在每个玩家延迟不同的情况,所以游戏主机会对这种情况加以平衡
所以只要在正常范围内,延迟大小可以无视的
========================
延迟补偿是游戏服务器端执行的一种策略,处理用户命令回退到客户端发送命令的准确时间(延迟导致),根据客户端的具体情况进行修正,以牺牲游戏在伤害判定方面的真实感来弥补攻击行为等方面真实感,本质上是一种折中选择。
主要注意,延迟补偿不是发生在客户端。
关于延迟补偿的一个例子:
在FPS游戏中,玩家A在105秒时向目标对象玩家B射击并且击中,射击信息被打包发送(网络延迟100毫秒)(1000毫秒=1秒,因此100毫秒=01秒),服务器于106秒收到,此时玩家B可能已跑到另外一个位置。
若服务器仅仅基于接收时刻(106秒)进行判断,那么玩家B没有受到伤害,或许可能会击中玩家B后面紧跟的玩家C(100ms后玩家C完全由可能已处于玩家A的射击目标位置)
为了弥补由于延迟造成的问题,服务器端需要引入“延迟补偿”策略用于修正因延迟造成错乱假象
服务器计算执行设计命令时间,然后找出当前世界105秒时刻玩家信息,根据射击算法模拟得出是否命中判断,以达到尽可能精确
若游戏延迟补偿被禁用,那么就会有许多玩家抱怨自己明明打中了对方却没有造成任何伤害。。
有所得,有所失:但这对低延时玩家貌似有些不公平,移动速度快,可能已经跑到角落里并且已蹲在一个箱子后面隐藏起来时被对手击中的错觉(子d无视掩体,玩家隔着墙被射击),确实有些不乐意。
延迟补偿,网络高延迟的玩家有利,低延迟的玩家优势可能会被降低(低延迟玩家利益受损),但对维护游戏世界的平衡还是有利的。

如果单片机晶振为6M,机器周期即为2us=12/fosc
汇编语句对时间的把握精确于C语言,所以参考不同指令的长度,
就可以算出你的延迟时间。
单片机的延时程序:
MOV
R7,#200
LOOP1:MOV
R6,#125
LOOP2:DJNZ
R6,LOOP2
DJNZ
R7,LOOP1
RET
第一句为单周期指令,耗时2us
第二句执行了200次,耗时2200us
第三句为双周期指令,执行了125200次,耗时22125200us
第四句同第三句,耗时22200us
第五句双指令周期
总够耗时2+2200+22125200+22200+22
约为100ms

DelayMS(300)表示希望系统delay 300毫秒,系统有自己的RTC,根据硬件的晶振(Hz)可以计算出一次振荡大约多少耗时,这样就能大约算出1ms需要多少次振荡;

简单比喻一次振荡需要1us,那1ms就是1000次振荡,300ms就是300x1000次振荡,这样就能大概的计算出300ms delay;

这得看你的CPU运行一条指令得多久,像单片机89C51一般一条1us。

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言;

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台;

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13036016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存