PTT推薦

[閒聊] 藍寶在紅藍方會因為代碼緣故傷害不一樣

看板LoL標題[閒聊] 藍寶在紅藍方會因為代碼緣故傷害不一樣作者
kemonoleader
(kemonoleader)
時間推噓78 推:79 噓:1 →:26

https://b23.tv/6luxqnB
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(快速位移)→ x0.9 → N=0或1(1的概率更大)
崔絲塔娜W(慢速位移)→ x1.5 → N=1或2
佐伊R(0.75秒)→ x3.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場職業比賽
-----
Sent from PttX on my Android

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.87.237 (臺灣)
PTT 網址

cornsoup 07/28 12:02樂芙蘭是誰

kemonoleader07/28 12:03這樣差不多等於紅方藍寶自帶少10%傷害debuff?

sdfg014025xx07/28 12:03問就是機制

roger262390007/28 12:04問就是機制

jkhz 07/28 12:04樂布朗?

kemonoleader07/28 12:05內文是影片作者寫的下方簡介 所以文章內用的是對面

kemonoleader07/28 12:05的英雄稱呼

luck945 07/28 12:05LB吧

jakert123 07/28 12:05名字就有藍了當然藍方比較有優勢

daniel50506 07/28 12:05leb

f12sd2e2aa 07/28 12:06原始碼流出後變成opensource讓大家推PR好了

frostdumplng07/28 12:07ok 紅方別選藍寶

hyakkiyagyo 07/28 12:07懶棒沾母屎豚

fairymomo 07/28 12:08這滿酷的耶 之前就有燼跟豹女Z軸高低差了

svd237 07/28 12:08LBJ?

kirito1219 07/28 12:09出個紅寶就可以了

A00610lol 07/28 12:12紅寶

mod980 07/28 12:12睏寶

lightleave 07/28 12:12都叫藍寶了,當然是藍方的比較強

diefish5566 07/28 12:12那以前飛機的炸藥包 魔甘娜蛇女的W呢

louis0724 07/28 12:12200年遊戲製作經驗

a23268744 07/28 12:14問就是屎山代碼

wjonz0102 07/28 12:14LOL2快出

qd6590 07/28 12:15懂了 藍方不用ban藍寶 紅方搶了只有90%強度

enchyi 07/28 12:15RITO PLZ

Ishtarasuka 07/28 12:15點點點

qd6590 07/28 12:15藍方拿卻是100%

super0949 07/28 12:15藍寶比紅寶強 沒問題 這隔壁棚也是

saviora 07/28 12:17屎山代碼 挖一個坑去填另一個坑

emptie 07/28 12:18幹 有夠離譜

Y1999 07/28 12:19畢竟是藍寶

game147 07/28 12:21拳頭真的狗屎

game147 07/28 12:21燼的高低差也是很扯

Fritter 07/28 12:21兩個谷都是藍寶比較強,合理。什麼谷不好說

emptie 07/28 12:23jhin那個是技能指示框繪製的關係吧

aw7square 07/28 12:24riot plz

aw7square 07/28 12:25萬年屎山真的超ㄏ 前陣子商店按鈕還可以被賣掉

raysbuck 07/28 12:27藍方寶

newnoob 07/28 12:28都叫藍寶了

crazy634155607/28 12:29吼吼 抓到囉

Godist 07/28 12:33是回城可以被賣掉吧

relax1000 07/28 12:40這好幾年前不就修過了?

thb96300 07/28 12:40問就是機制

Haruna1998 07/28 12:43機制= =

wolver 07/28 12:47藍方藍寶強很合理,畢竟他不是叫紅寶.

rong1994 07/28 12:48難怪石油杯對MKOI車長的藍寶醜成那樣…當時是紅方

rong1994 07/28 12:48 原來是被機制害的== 錯怪他了

tomalex 07/28 12:49(′・ω・‵) 懶人包呢

ghytrfvbnmju07/28 12:49要是叫紅寶就不一樣了

nightblue7 07/28 12:50太扯

bbc0217 07/28 13:00以後紅方選會變2P色叫紅寶

weliche 07/28 13:01都叫藍寶了

weliche 07/28 13:02藍方強一點也4理所當然8

sezna 07/28 13:04藍寶在藍方強

asd860079 07/28 13:04如果他這個結論屬實的話 那所有DOT-AOE的技能都要

asd860079 07/28 13:05檢查一下了吧

onionandy 07/28 13:05總傷害一樣但紅方觸發時間慢0.25秒 包含DOT觸發

onionandy 07/28 13:07為什麼紅方英雄傷害觸發會慢一點 什麼爛東西

Flowsun32 07/28 13:14好扯,出個紅寶造型吧

crazy634155607/28 13:17總傷害一樣的前提是站著燒滿 dot延遲 在後面的很多

crazy634155607/28 13:17實例中證明 會真的少一段

IHateAnime 07/28 13:18第一藍寶

rhox 07/28 13:19Rito這是機制

class21535 07/28 13:19阿我就叫藍寶阿

Winux 07/28 13:21看了一下這個Bug 疑似2014年就有人發現了

amsmsk 07/28 13:26都叫藍寶了不然呢

squalljack 07/28 13:42紅色就是打9折的顏色

fatfat5566 07/28 13:44問就是機制

david12763 07/28 13:48不是紅寶 合理吧(誤

iwkdyykj 07/28 13:59有點蝦…

kanzerbee 07/28 14:00直接重寫程式出LoL2好了

a5WaGyu 07/28 14:05笑了 藍博 紅博

joewang85 07/28 14:17藍寶>紅寶>傑寶

woofwoof009 07/28 14:18一段屎code 累積不知道有沒有影響幾千萬的獎金

woofwoof009 07/28 14:18AI寫代碼時代 一些笨色可以炒一炒滾回家了

woofwoof009 07/28 14:20來個睏寶skin 剛好是紅色的

odanaga 07/28 14:33紅寶是一種緹寶嗎

kiolp 07/28 14:37所以紅寶也不用什麼操作q擺頭了。天生少一段傷害

geniusw 07/28 14:37LOL再不改code 真的是超糞

TPPlazycow 07/28 14:43如果你真的擔心屎code那更加不應該用AI寫代碼吧 至

TPPlazycow 07/28 14:43少現在AI寫的東西維護性還是很差

GA200616502707/28 14:47藍寶在藍方有加成也是很合理吧?

LifeWalker 07/28 14:52再出一隻紅寶平衡吧

pmes9866 07/28 14:57屎山代碼

forfree99 07/28 15:04主要傷害就Q跟R,這至少少了20%

maybeyeah 07/28 15:18好扯喔

firxd 07/28 15:21藍寶在藍方強怎麼了嗎 大不了下次做個紅寶

s91026 07/28 15:26E04難怪藍寶勝率一直噴

s91026 07/28 15:28把一些多餘的垃圾刪除 如 稱號 雕紋 專精分數改S次

ThreekRoger 07/28 15:31這感覺有點嚴重

Godist 07/28 15:37bug 是真的,但這 UP 想帶風向也是真的

Godist 07/28 15:38http://i.imgur.com/O9bkT97.jpg

Godist 07/28 15:38笑死一口氣剝奪LCK的5個冠軍,真不愧是銅牌賽區

xxlaws 07/28 15:52紅方選就給個2P色藍寶平衡吧

rp20031219 07/28 15:55終於抓到了這幾年LPL沒冠軍的真正原因了

A9226 07/28 16:02機制

RumiManiac 07/28 16:20第39行 0的機率是1-{x} 不是1{x}

LucAngel 07/28 16:26叫藍寶所以在藍方比較強

jay920314 07/28 16:56問就是機制

s971425 07/28 17:06AI寫代碼,那只會從屎山變糞坑而已,噗噗

chinobe 07/28 17:23找到問題 LPL迎來最有希望的一年

SC30Warriors07/28 17:38不是 你這樣在藍方拿藍寶的counter位還被單殺的很

SC30Warriors07/28 17:38尷尬

sawalee0811 07/28 18:54紅方請選紅寶

lzyamos9903207/30 05:26藍寶藍方強正常

kanding255 07/30 11:29200y 質疑