Re: [心得] Channeled技能的傷害顯示

看板DIABLO作者 (Chiquitia)時間10年前 (2014/05/24 15:29), 10年前編輯推噓4(409)
留言13則, 6人參與, 最新討論串1/1
我發現,導引技(channeled skills)遠比我想像的複雜,先來基礎教學: https://us.battle.net/d3/en/forum/topic/8770117237#5 DoT/導引技分兩類: 1. 每tick傷害都獨立顯示:秘法奔流、電殛 2. 每0.8秒加總傷害做顯示:裂光波、冰霜射線 以裂光波為例:每0.8秒顯傷一次、但實際tick更頻繁、攻速改變每tick傷害,不改變 tick的頻率(因此,不存在攻速門檻) 再舉冰霜射線為例: 攻速1下,tick為每秒2次;則表示每次tick花費8秘能,若攻速變2.4,變成每秒tick 5次 ,則每秒花費秘能變40 另外,順便提減耗與導引技的關係,若以冰霜射線為例,秘能為16/s (8/0.5s), 假設減耗為20%,則計算為16*0.8=12.8,接著無條件捨去變12,算完1整秒的值, 再除以2去算每tick的耗秘 (如果又除不盡,就再無條件捨去)。 因為最多可能有連續2次的無條件捨去,因此實際減耗的數值會大過理論計算的數值。 接下來,複雜的開始了,tick計算: 以裂光波及冰霜射線為例,他們的傷害計算為每秒5次(12 frames)以上起跳, 傷害為 攻速x技能秒傷/5 這些ticks可以爆擊,但爆擊計算卻是根據不同的breakpoint來加總 以裂光波(攻速係數=3)為例,在攻速=1下,每20 frames會骰一次爆傷,如果骰到爆傷, 則此frame以及接下來19 frames的傷害都會爆擊。 如此攻速變2,則變成每10 frames骰一次爆傷,若骰到爆傷,則此frame及接下來9個 frames都會爆擊。 因此,攻速改變的是tick群組的大小,但卻不影響tick的頻率! 聰明如你,已經發現到,若傷害計算固定為每秒5次起跳,那如何每秒爆擊3次或6次呢? 原因就在tick rate會浮動。 比如,裂光波在攻速=1下,傷害計算的時間點(frame)為: 8, 12, 12, 8, 4, 12, 4 做循環, (加起來=60 frames,0及60 frame不算的話,每秒計傷5次) 在此攻速下,爆擊判定以20 frames為單位, 因此,共有以下群組:8+12, 12+8, 4+12+4, 這三個群組,彼此獨立做爆傷判定。 而若看冰霜射線,則較複雜一點,攻速1下,擊中判定為每30 frames一次, 傷害計算的間隔,是以5, 6, 7, 11, 12及13 frames的數字在排列,排列的順序沒有 規則,但每組爆擊判定(或擊回判定)都是以30 frames為單位, 比如:13+12+5, 12+7+11, 11+12+7, 5+6+7+12... 總之,一般的原則如下: 導引技分兩種: 第一種是傷害固定不變,攻速改變頻率,這類的技能有攻速門檻; 第二種則是傷害頻率不變,攻速改變傷害,這類技能無攻速門檻,但卻有擊中判定門檻: 關於第二種技能,又有更細緻的規則如下: 1. 基礎擊中判定為每秒5次或以上 2. 擊中判定的頻率會受攻速改變(攻速越快,骰爆傷或擊回的次數就越多) 3. 傷害判定的頻率則不會改變 ----------------------------------------------------------------------- 以上,大致可以解釋我前一篇文章內許多的疑點了。 剛才,我實際錄影去看法力的變化,發現攻速=1,無符文火蝙蝠的法力變化如下: Frame數 法力變化 --------------------------- 0 -150 1 -38 32 -37 61 -38 92 -38 --------------------------- 由此可發現,攻速係數為2.0,以30 frame (31與29交替)做為擊中判定的單位; 而當攻速變1.2後,法力變化如下: Frame數 法力變化 --------------------------- 0 -150 1 -38 29 -37 55 -38 82 -38 --------------------------- 擊中判定變以27 frames為單位 (28與26交替), 而從30變27,也符合攻速1.0至1.1的變化。 因此,不管如何,若只看傷害顯示去推斷,會不準。因為光是可能的lag,就會讓系統計 算產生錯誤。這也是因此,文章也有提到,測試技能的判定,最好去算資源耗損。 而傷害判定則不能只看跳傷,最好要去計算怪物血條的變化,才比較準。 ================================================ 以上,我會再思考一下,如何修正計算器 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.118.139 ※ 文章網址: http://www.ptt.cc/bbs/DIABLO/M.1400916566.A.3D7.html 突然發現,太多字了,end直接講重點: 1. 攻速越快,擊中判定越快(在過去,越快召小鬼),此擊中判定有門檻效應 2. 但傷害的計算,卻是用 DPH x 攻速 來計算,因此傷害無門檻效應

05/24 15:32, , 1F
這部分我等你做結論再看..
05/24 15:32, 1F

05/24 15:35, , 2F
結論在你上兩行 XD
05/24 15:35, 2F

05/24 15:37, , 3F
老實講,那篇文章,我斷續看了1個月,都不懂,今天終於
05/24 15:37, 3F

05/24 15:37, , 4F
懂了
05/24 15:37, 4F
我再來畫圖解釋好了,一樣用火蝙蝠為例: 攻速=1 系統加總0,5,11,18,30,43傷害, 一次顯示(每48f) ┌────────────────┐ ↓ ↓ Frame--0--5---11---18------30------43------55-----60 ↑ ↑ ↑ 擲骰決定觸發 擲骰決定觸發 擲骰決定觸發 (A) (B) (C) 若A擲骰為有爆擊,則0,5,11,18的傷害判定都有會爆擊 (這些frames的數字,是隨便寫的) (所謂的擲骰,是決定爆擊以及特效之判定) 當攻速=2,則擲骰頻率變為2倍: 系統加總0,5,11,18,30,43傷害, 一次顯示(每48f) ┌────────────────┐ ↓ ↓ Frame--0--5---11---18------30------43------55-----60 ↑ ↑ ↑ ↑ ↑ (A) │ (C) │ (E)         (B)         (D) 但傷害顯示及傷害計算頻率不會改變,不同的是,每擊傷害變成2倍。

05/24 15:43, , 5F
這結論確實很精減 不過對減耗會無條件捨去挺有興趣的
05/24 15:43, 5F

05/24 16:05, , 6F
老實講,我無法理解,工程師的程式碼要怎麼寫,
05/24 16:05, 6F

05/24 16:05, , 7F
才會導致這麼複雜的系統產生....
05/24 16:05, 7F

05/24 16:12, , 8F
推一個,裝懂一下。
05/24 16:12, 8F

05/24 16:24, , 9F
看第一頁的說明 所以裂光波的花費不會隨攻速上升?
05/24 16:24, 9F
攻速不改變傷害計算的頻率,但會改變擊中判定的頻率。 擊中判定的事件,包含了:爆擊與否、資源扣損、擊回判定、特效判定 ※ 編輯: Dialysis (114.34.118.139), 05/24/2014 16:27:50

05/24 16:32, , 10F
我覺得,D3比起D2,該複雜處太簡化,該簡單處又太複雜
05/24 16:32, 10F

05/24 20:36, , 11F
強!
05/24 20:36, 11F

05/24 21:39, , 12F
為什麼會寫那麼複雜 其實不外乎前人離職... 程式碼這
05/24 21:39, 12F

05/24 21:39, , 13F
東西就是經手的人越多越可怕
05/24 21:39, 13F
文章代碼(AID): #1JW4fMFN (DIABLO)