抗压背锅吧 关注:5,818,517贴子:172,975,816

(搬运)B站大手子测试出红色方兰博伤害比蓝色方低

只看楼主收藏回复

原帖:-经测试,Q/R技能的总伤害、伤害段数和单次伤害在红蓝方均相同。
现可通过游戏内简易测试复现该bug:
Q技能:施放Q后立即垂直移动(不使用闪现)。蓝方兰博对红方英雄至少造成3段伤害,而红方兰博对蓝方英雄仅造成2段伤害。
对小兵则双方都至少造成3段伤害。该测试需要极其精确的鼠标点击且不稳定,因难以确保Q持续时间精确到毫秒级。
注意:必须使用两个游戏账号才能触发该bug,使用假人无效。
R技能:由于R的debuff会显示在状态栏,测试更简单。最简易方法是让乐芙兰用W(魔影迷踪)穿过兰博大招。蓝方兰博会对红方乐芙兰造成2段伤害,而红方兰博对蓝方乐芙兰仅造成1段伤害。
这显然是bug,因兰博R的debuff持续1秒且每0.5秒造成伤害,理应始终至少2段伤害。仅造成1段即为bug。
注意:极低概率乐芙兰穿过R时不受任何伤害,该情况在双方都可能出现。
既然已证明Q/R当前存在导致红方兰博丢失伤害的bug,下面详细说明伤害丢失的条件与原因:
R技能分析:
兰博R施加1.00秒灼烧debuff,可通过状态栏图标观察。可见当图标转到3点钟方向(持续时间的1/4处)时会重置(刷新为1.00秒)。
这意味着兰博R每0.25秒就会施加新的1.00秒灼烧debuff,重复施加会将持续时间刷新为1.00秒。
测试时使用乐芙兰W、崔丝塔娜W和佐伊R来确保单位在R中停留固定时长,但发现伤害不稳定,因debuff施加次数不稳定。
这是由于单位进入R的时刻与R的0.25秒伤害检查未同步所致。兰博R每0.25秒检查一次——若单位碰撞箱在此时刻与伤害区域重叠,则施加1.00秒灼烧debuff。
为简化说明,暂不考虑Tick舍入问题。
设x = (在R中停留时间)/0.25
将x分解为整数和小数部分:x = |x| + {x}
debuff施加次数(N)为:
N = |x| + Bernoulli({x})
其中Bernoulli({x})是以概率{x}为1、1−{x}为0的随机变量。
例如:
乐芙兰W(快速位移)→ x≈0.9 → N=0或1(1的概率更大)
崔丝塔娜W(慢速位移)→ x≈1.5 → N=1或2
佐伊R(0.75秒)→ x≈3.5 → N=3或4
经大量测试发现:
当N=1,2,3,4时,蓝方兰博造成2,2,3,3段伤害,红方兰博造成1,2,2,3段伤害。
结论:当N为奇数时,红方兰博比蓝方少1段伤害;N为偶数时双方伤害相同。
进阶测试方法:
我设计了一种巧妙方法,使红蓝方技能时间精确到毫秒级同步:
让红方兰博同时对蓝方英雄和假人施放R。
原理:
• 伤害和状态计算按固定顺序处理,很可能基于单位ID优先级:
蓝方英雄 > 红方英雄 > 假人/小兵
bug触发条件:
• 当低优先级单位(红方兰博)伤害高优先级单位(蓝方英雄)时触发bug
• 当高优先级单位(蓝方兰博)伤害低优先级单位(红方英雄/假人)时不触发
因此红方兰博对目标假人的行为与对蓝方兰博对红方英雄相同,使我们能同时观察两种场景且时间完全同步。
R技能发现:
• 目标站在R起点时,双方均受10段伤害
• 目标站在R终点时,双方均受9段伤害
• 存在中间位置使一方受9段、另一方受10段,因为两个偶数中间必有一个奇数
我们可以发现:
• 红方兰博R对蓝方英雄有0.25秒伤害延迟
• 伤害不同步——红方兰博的伤害会在目标间交替生效
Q技能发现:
• 兰博Q每秒造成4次伤害(每0.25秒1次)
• 红方兰博Q对蓝方英雄有约0.25秒伤害延迟
• 若Q被提前打断,红方兰博会少1段伤害(如2:1、3:2等)
这意味着每次线上Q换血都可能丢失伤害,严重影响红方兰博表现
丢失段数还会影响符文(如奥术彗星)和装备(如兰德里的苦楚)
bug起源推测:
兰博Q/R被归类为DOT-AOE伤害,在引擎层(AOE)和脚本层(DOT)表现不一致
这导致了兰博代码在引擎层与脚本层存在隐形耦合
即伤害计算与状态计算存在耦合
这种矛盾可能引发基于服务器帧优先级的伤害计算的时序bug。
我怀疑:
原始bug(红蓝方伤害不均)被"修复"的方式是给红方兰博添加延迟,虽"平衡"了总伤害却制造了更隐蔽的新bug
即设计师将一个小bug修成了一个更隐蔽的大bug
该bug影响14年来的数亿局游戏,包括约3000场职业比赛


IP属地:山西来自Android客户端1楼2025-07-28 08:37回复
    拳头这么逆天的吗


    IP属地:江苏来自Android客户端2楼2025-07-28 08:39
    收起回复
      2025-07-30 20:15:29
      广告
      不感兴趣
      开通SVIP免广告
      经查阅资料,该Bug在2014年就有人发现


      IP属地:山西来自Android客户端3楼2025-07-28 08:40
      收起回复
        来自Hunyuan T1的通俗解释
        原理解析:兰博红蓝方伤害不一致的底层机制与耦合性漏洞
        一、核心问题:伤害计算与状态同步的时空错位
        从测试数据可推断,兰博的Q/R技能在红蓝方存在伤害段数同步延迟,本质是引擎层(物理碰撞检测)与脚本层(DOT状态更新)的时序耦合异常。具体表现为:
        1. Q技能的0.25秒伤害检查窗口偏移
        - 兰博Q的持续伤害每0.25秒触发一次,但红方兰博的伤害检查窗口相对于蓝方存在固定延迟(约1帧或0.016秒)。
        - 当Q技能释放后,蓝方兰博的伤害计算立即触发,而红方兰博的相同操作因优先级或网络延迟被推迟到下一检查周期,导致少1段伤害。
        2. R技能的debuff刷新机制矛盾
        - R技能的灼烧debuff理论上应每0.25秒刷新一次,但实际通过状态栏观察发现,debuff图标在3点钟方向(1/4持续时间处)会重置。
        - 这意味着debuff的刷新逻辑存在离散化处理:当单位进入R技能区域的时间点与刷新周期未对齐时,系统会强制重置计时器,而非连续累加。红方兰博因优先级较低,其debuff刷新更易受此机制影响,导致伤害段数随机减少。
        二、优先级机制引发的伤害计算顺序问题
        游戏引擎对单位交互顺序的默认处理规则是关键:
        1. 目标优先级层级
        - 蓝方英雄 > 红方英雄 > 假人/小兵
        - 当红方兰博攻击蓝方英雄时,系统需先处理蓝方英雄的状态更新(高优先级),再处理红方兰博的伤害计算(低优先级)。若两者操作在同一帧内发生,红方兰博的伤害可能被覆盖或延迟至下一帧,导致段数丢失。
        2. DOT与AOE的引擎层冲突
        - 兰博的Q/R属于DOT(持续伤害)与AOE(范围伤害)的混合类型。引擎层可能优先处理AOE的碰撞检测,而脚本层负责DOT的持续计时。
        - 红方兰博的DOT计时因优先级较低,可能未及时与引擎层的碰撞结果同步,造成伤害段数差异。
        三、数学建模:伤害段数的概率性丢失
        通过用户提供的公式
        "N = |x| + Bernoulli({x})" 可推导出:
        - x的整数部分(|x|):决定基础伤害段数(如x=0.9时,|x|=0)。
        - x的小数部分({x}):触发伯努利试验,以概率{x}追加1段伤害。
        - 红方兰博的追加概率被抑制:测试显示红方在x≈0.9时仅1段(概率1),而蓝方可能触发追加(概率>1)。这表明红方的追加逻辑存在条件判断错误,可能与优先级导致的执行顺序有关。
        四、历史修复的副作用:延迟补偿引入新漏洞
        用户推测原始bug(红蓝方伤害不均)通过给红方兰博添加延迟“修复”,但实际导致:
        1. 总伤害平衡的假象:通过延长红方兰博的debuff生效时间,使总伤害与蓝方一致,但破坏了技能的时序一致性。
        2. 耦合性漏洞扩大:延迟补偿与引擎层的碰撞检测逻辑冲突,导致伤害段数在特定条件下(如快速位移目标)出现随机性丢失,且难以复现。
        五、影响范围与深层原因
        1. 职业比赛与玩家体验
        - 该bug影响红方兰博的换血效率与团战输出,尤其在依赖Q技能对拼或R技能分割战场时,红方处于天然劣势。
        - 符文(如奥术彗星)和装备(兰德里的苦楚)的联动伤害进一步放大损失,导致策略失衡。
        2. 代码架构缺陷
        - 伤害计算与状态更新的紧耦合设计:引擎层与脚本层未完全解耦,导致底层改动(如延迟补偿)引发连锁反应。
        - 缺乏原子性操作保障:DOT的施加与刷新未在独立事务中处理,易受外部事件(如目标移动)干扰。
        总结
        此bug是游戏引擎时序同步机制与技能混合类型处理逻辑共同作用的结果。修复需重构伤害计算的优先级队列,分离引擎层与脚本层的状态更新,并引入确定性时间戳确保红蓝方操作的原子性。否则,类似问题将长期存在于MOBA类游戏的技能设计中。


        IP属地:山西来自Android客户端4楼2025-07-28 08:42
        收起回复
          飞🐶不玩兰博,拳头不会管的


          IP属地:重庆来自Android客户端5楼2025-07-28 08:44
          收起回复
            ???这么逆天吗?


            IP属地:河南来自Android客户端6楼2025-07-28 08:46
            收起回复
              哇哦


              IP属地:江苏来自iPhone客户端8楼2025-07-28 08:48
              回复
                真有点逆天了


                IP属地:河北来自Android客户端9楼2025-07-28 08:48
                回复
                  2025-07-30 20:09:29
                  广告
                  不感兴趣
                  开通SVIP免广告
                  😱😱😱😱😱😱真的假的???不过也是佩服 这也能测出来😨


                  IP属地:黑龙江通过百度相册上传10楼2025-07-28 08:49
                  收起回复
                    放肆!大胆!世界第一电竞游戏轮得到你们指指点点?


                    IP属地:山东来自Android客户端11楼2025-07-28 08:50
                    收起回复
                      如果是真的,牛


                      IP属地:山东来自Android客户端12楼2025-07-28 08:53
                      回复
                        屎山代码皆有可能


                        IP属地:山东来自Android客户端13楼2025-07-28 08:54
                        回复
                          额,s14总决赛输t1也不是因为这个吧,也就第二局有一个红色方兰博


                          IP属地:广西来自Android客户端14楼2025-07-28 08:56
                          收起回复
                            ?这么多年一直都这样?


                            IP属地:江苏来自Android客户端15楼2025-07-28 08:57
                            收起回复
                              2025-07-30 20:03:29
                              广告
                              不感兴趣
                              开通SVIP免广告
                              有点牛逼


                              IP属地:浙江来自Android客户端16楼2025-07-28 08:59
                              回复