V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Stendan
V2EX  ›  程序员

请教一个关于 Ping 的问题

  •  
  •   Stendan · 2022-05-16 10:57:02 +08:00 · 1584 次点击
    这是一个创建于 933 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题背景:这次 MSI 季中冠军赛(比赛场地:韩国),因为 RNG 是线上参赛(比赛场地:本土)的原因,所以拳头一开始就表示为了公平起见,会将选手们的 ping 值都锁定在 35ping 。

    问题:

    1. 游戏右上角中的 ping 值真的是实际延迟吗?
    2. 面对线下和线上,我们该如何客观的维持游戏延迟接近 35ping 呢?
    3. 标准的增加延迟的方法有哪些?好的工具?比如?

    P.S. 对这个关于 ping 的问题很好奇,也请大家尽可能客观分析这个技术问题,不要上升到选手及其他问题.

    6 条回复    2022-05-16 12:30:44 +08:00
    codefever
        1
    codefever  
       2022-05-16 11:03:05 +08:00   ❤️ 1
    1 、可能是硬件老化导致电脑运行加载变得非常慢;
    2 、系统缓存垃圾太多
    3 、中电脑病毒
    4 、内存或者 CPU 占用过高
    5 、电脑安装程序太多占用空间
    6 、网络波动
    whitehack
        2
    whitehack  
       2022-05-16 11:15:13 +08:00
    盲猜一波

    1. 一般都是真实的延迟,与服务器之间的连接延迟

    2.可以通过服务器控也可以通过客户端控.
    不考虑作弊的情况下,通过客户端控应该会最准确 影响也最小. 只需要程序逻辑上加上延迟就行了.比如服务器 10ms 就给了响应.那么客户端在连接层再多加上 25ms 的延迟.
    发送请求也一样. 当前与服务器连接的真实延迟是 15ms,连接层就延迟 20ms 再把请求发送出去,消息到服务器以后基本可以保证是 35ms 左右的延迟

    3. 这个要具体问题具体分析. 没有啥通用工具吧. 按照 op 的问题来看 就是通过程序逻辑来控延迟,可能服务端控也可能客户端控.
    seeyisee
        3
    seeyisee  
       2022-05-16 11:20:38 +08:00
    拳头说是看比赛日志发现 ping 有问题的。
    seeyisee
        4
    seeyisee  
       2022-05-16 11:21:16 +08:00
    在基地比赛本身就比去现场有优势。
    markgor
        5
    markgor  
       2022-05-16 11:27:50 +08:00
    以下内容纯属猜测;
    1 、游戏右上角的 ping 我觉得是 TCP ping ,而不是 ICMP ping ,如果是 TCP PING 则在端口处增加延迟即可“锁 ping”低延迟时增加延迟返回。
    2 、如果一开始就高于 35PING ,锁不锁没有任何意义,如果一开始低于 35PING ,锁了的话也很难百分百维持 35ping 。
    3 、上面假设都是基于 TCP PING 的,如果 TCP PING 自己加个定时器再返回结果就行了。


    但是题外话,
    假设:A 到 B 的延迟是 35 毫秒;而 B 到 C 的延迟是 25 毫秒。
    即:A 放个技能后,C 收到的时间是 60 毫秒。
    请问:如果把 A~Z 打乱随机抽出 10 个,每 60 毫秒展示一次,有多少人能答对字母出现的顺序 50%以上的?
    另:大家都慢 60 毫秒,再另一个角度而言是否也属于公平?(你放个技能,我等 60 毫秒才展示;我放个技能,你也等 60 毫秒才展示)
    就这次韩国棒子的做法,真的刷新了我的认知。
    可能下次他们会以场地供电不是核能源而是煤炭发电,导致电波不稳影响为由要求重赛。
    UIXX
        6
    UIXX  
       2022-05-16 12:30:44 +08:00   ❤️ 1
    0X 年的时候写过游戏逻辑,技术可能过时了,就简单说说吧。

    1. 不知道,这得问 LOL 的开发人员,不同游戏的 ping 代表的含义可能会不一样。
    游戏内显示的 ping 值不一定是 TCP/UDP 的时延,也可能是专门为游戏设计的心跳机制中的网络参数。

    2. 网络状况迥异的环境下,没有任何技术手段能确保双方都在某个 ping 范围内。
    比起锁定延迟,我们更常的做法是在帧同步上下功夫,比如优先让网快的正常游戏,网慢的客户端对短时间内过来的更新指令作类似于快进的处理。

    3. 不同架构、不同类别的游戏控制同步的方法不一样。
    比如一款中心化的 RTS 游戏,采用的是服务器广播-客户端收发的方式交互,想要增加延迟可以设置广播队列的发送时间。对一款允许局域网内的 RPG ,纯粹的 P2P 通信,只需要交互前约定共同参数即可。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1052 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:26 · PVG 03:26 · LAX 11:26 · JFK 14:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.