[轉錄][凱恩] Thinking In IAS

看板DIABLO (暗黑破壞神 - D3,D2,D1)作者 (キタ━━(゚∀゚)━━!!)時間13年前 (2013/07/04 00:37), 編輯推噓45(45045)
留言90則, 47人參與, 最新討論串1/2 (看更多)
轉錄自凱恩之角討論區 http://bbs.d.163.com/thread-172658300-1-1.html (經作者同意轉錄) ※警告: 本文非常長且帶有大量計算,對數字反胃者請斟酌使用,或直接看結論※ 建議使用Page Down閱讀 Thinking In IAS 作者: gazeofdoom 先打個招呼,本文比較長,而且有點枯燥,但如果你願意認真耐心的讀完, 應該不會覺得後悔。 一、前言 P.3 二、一個對比測試 P.4 三、從小旋風跳數說起 P.10 四、關於Frame P.16 五、提出假想 P.19 六、更多測試數據 P.22 七、對表進一步修正 P.24 八、遺留的問題與結論 P.34 九、現實意義 P.36 十、理論意義 P.39 ────────────── 一、前言 ──────────────── 假設一種情況,配裝時整體基本配好了,還差個頭盔。看到兩個暮光頭,買哪個? http://i.imgur.com/iOXP29e.jpg
一般情況下攻速高的這個會貴一些,有時候差的還挺多,好幾E。 於是我經常看到有人會問一個問題:“多1%攻速到底有多大差別?”,這個問題 看上去很簡單,攻速更高意味著單位時間可以打出更多次傷害,意味著更高的DPS ,一些模擬器也會告訴我們,提升1%攻速會提升多少DPS。 對於“多1%攻速到底有多大差別?”這個問題,我們考慮的重點是“多大”這兩個 字。但在這之前,我覺得應該先考慮一下“有”這個字,因為如果”沒有“差別, 還談何”多大”呢。這在很多人看來有些多餘,差別很清晰啊,9%>8%麼。實際並 不是這麼簡單,我可以先給出答案,對某些人來說,戴這兩個暮光頭沒有差別,不 是很小小到忽略不計,而是沒有;對另一些人來說,差別會比較大,至少比1%大。 簡單來說,兩個頭盔之間是>=的關係,頭盔只是個例子,其他裝備也都一樣。 本文主要討論為甚麼有時多1%攻速有變化,有時沒變化這個問題。 糾正下,上面那句話我發現引起了一些誤會,暮光頭的1%我只是作為開場白舉個例 子,討論的範圍不是只限與1%,實際你可能差5% 7%,都會沒變化。 ───────────── 二、一個對比測試 ────────────── 可能有人不太相信我前面說的答案,先來看一個測試: 有3個攻速:A 2.25,B 2.28,C 2.31。 問在這3種攻速下,持續打一個目標5分鐘,攻擊次數會相差多少? 根據以往的經驗我們知道,攻速代表每秒的攻擊次數,攻速2.25就是一秒打2.25下 ,5分鐘=300秒,那麼A會攻擊2.25*300=675次,B會有684次,C會有693次。 C比B多9次,B比A多9次。理論上看,應該是這樣的。 但我的結果是:A 688次; B 715次;C 715次。 B比A多了27次,遠大於計算的9次 ,而B和C則是完全相同。 這個現象和我前面說的頭盔是一樣的,同樣是多0.03攻速,有可能在攻擊次數上產 生很大變化,也有可能完全無變化。 由於這個結果可能比較出乎意料之外,有必要交代一下我的測試環境: 攻擊對像是A3 MP10罪惡之心,這東西不會動不會反抗,很穩定。 計時我用的是視頻,都上傳了,有興趣的可以下載,從第一擊抬手的那個畫面開始 ,往後走300秒,然後截斷視頻,這樣從攻擊開始到視頻結束就是5分鐘整,我只需 要去統計這段時間打了多少下。我的工具可以精確到秒的小數點後面兩位,所以這 個300秒是比較精確的,誤差最多在0.1秒左右,由這個誤差導致多一次少一次是可 能的,但不會更大了。肯定不會把9次的差別給吞食掉。 計數有很多辦法,可以數攻擊動作,可以數跳出來的數字。在實際測試中,我發現 這兩種辦法都不靠譜。 數跳出來的數字太難,一秒幾個數字,一屏幕好多數字,根本分不清哪個是新出來的。 攻擊動作是一個固定的頻率,人在數固定頻率的時候,會在心裡形成一個默認頻率 (你會發現閉上眼睛也能數下去),在頻率很高並且需要數很久的情況下,一段時 間後這兩個頻率會產生交叉,你都搞不清自己是在跟著眼睛數還是在跟著心數,這 樣就是亂掉了。可能清醒的人還好一點,我這幾天一直對著這坨肉,感官已經有點 紊亂了,真數不清。退一步說,即使不亂,我數完一遍688次,我怎麼知道我沒數 錯?再數一遍,數出來689次,不一樣,怎麼辦,哪次是對的?再數一遍,687次, 又不一樣,完了,難道要數100遍取平均值?一遍5分鐘啊!所以,“我很認真的數 了幾遍,數出來是幾”這樣的做法是沒說服力的,數的時候很容易數錯,數完了也 沒有辦法驗證對錯。 我現在用的辦法是根據結束時目標血量來算出攻擊次數。測試時我的武器,右戒指 ,項鍊是這樣的: http://i.imgur.com/eSWreD3.jpg
再穿9速的殷娜,拉庫尼,暮光,以上這些東西不動。 然後依次使用下面3個戒指做左戒指,每個多2%攻速 http://i.imgur.com/4K3ODFf.jpg
這樣,就能分別得到2.25 2.28 2.31這3個攻速,同時我的DPH被飾品上的最小值屬 性抬升到固定的98-98,不會浮動,爆傷和力量也是固定的,這樣我打出來的數字 就是固定的,暴擊是3579,不暴擊是2105。根據視頻結束時目標的血量,可以計算 出他掉了多少血,關閉白字,只顯示黃字,我只要數5分鐘內有多少次暴擊就行。 非暴擊次數可以用(總損血量-黃字次數*3579)/2105算出來,然後將數出來的暴 擊次數和算出來的非暴擊次數相加,就是總共攻擊了多少次。 這個辦法是比較靠譜的,我把爆率控制的很低,只有10%左右,所以黃字的出現的 不多,而且不是固定頻率,過一會跳一個數字出來,這樣就很不容易數錯。數完後 ,我需要用他去做計算,這本身也是個檢驗的機會。如果用他算出來的非暴擊次數 正好是個整數,那麼說明沒有數錯,如果算出來是XXX.4 xxx.7這樣的,那就說明 數錯了。 以2.25攻速為例,在視頻結束時,目標剩5985486血,他滿血是7550477,我打掉了 1564991血,5分鐘數下來造成79次暴擊,那麼非暴擊次數=(1564991-79 *3579) /2105=609.14=609。 609+79=688次,這就是結果。 另外,609.14看上去不是很整,是不是數錯了?解釋下,我們看到的數字,包括跳 出來的數字和怪物的血量,都是整數,但實際在每次判定傷害和損血時是會計算小 數的,仔細觀察會發現有比如跳了數字100,但怪掉了101血這種現象,這是之前小 數位累積起來的結果,所以更準確的應該用小數去計算。 測試中我的力量是1202,爆傷70,DPH98,用的165%傷害猛擊,可以計算出: 不暴傷害=98*13.02*1.65=2105.334, 暴擊傷害=2105.334*1.7=3579.0678,用這 兩個數字代入計算會更準確。 這個問題不會影響到次數統計,因為打若干次實際損血只比顯示的差1,一次傷害 就有幾千,這些細微的偏差幾百次累積起來也遠小於一次攻擊的傷害,所以他不會 造成多一下或少一下的偏差。 這是3次測試的結果: 攻速 總傷害 暴擊次數 非暴擊次數 總次數 2.25 1564991 79 609 688 2.28 1620366 78 637 715 2.31 1555532 34 681 715 3次測試的視頻,視頻是60幀採樣的。 (請至原網址觀看) 如果你有興趣,可以下載下來仔細研究,百度盤: 2.25 2.28 2.31 (請至原網址下載) 說了這麼多還沒有進入正題,一直在說測試環境,一些細節和我的想法。因為一方 面,只有以可靠的測試結果來做為依據,才能進一步去分析一些原因,得出一些結 論。另一方面,最終我碰到了一些問題沒解決,所以我想把整個過程中我的想法和 做法盡量詳細的寫出來,這樣可以讓別人幫我看看問題出在哪裡,所以後續還是會 很詳細。 好了,言歸正傳。這組對比測試的主要目的是引出一個現象:替換5% 7% 9%,這3 個帶攻速的戒指,每次提升2%攻速,你可能會增加很多的攻擊次數,也可能完全沒 有任何變化。 說明攻速不是提升一絲就有一絲變化的,他的變化不是連續的,是跳躍的。必須提 升到足夠的數量,才會發生變化。 我們以前會以為攻速的變化是連續的,就算只多給0.01攻速,只要給一個夠長的時 間,比如100秒後,就會多一次攻擊。通過這個測試,以及我接下去想說明的是: 很可能多給0.01攻速,不管你打多久,300秒,還是600秒,都不會多打一次。 有了這個現象,接下來我們尋找原因和規律。 ──────────── 三、從小旋風跳數說起 ───────────── 0.90-1.00 攻速 = 9 跳 1.01-1.11 攻速 = 10 跳 1.12-1.17 攻速 = 11 跳 1.18-1.32 攻速 = 12 跳 1.33-1.43 攻速 = 13 跳 1.44-1.53 攻速 = 14 跳 1.54-1.665 攻速 = 15 跳 1.67-1.815 攻速 = 17 跳 1.82-1.995攻速 = 18 跳 2.00-2.22 攻速 = 20 跳 2.23-2.4975 攻速 = 23 跳 2.50-2.8512 攻速 = 26 跳 2.86-2.98035 攻速 = 30 跳 這張表是衝刺小旋風跳數和攻速的關係,大部分人都很熟悉這張表,從這裡開始講 ,因為他的產生過程和我前面提到的現像在原理上是一樣的,順便也正好對這個表 做一下解釋。 其實很長一段時間,我對這個表是不太認可的,為甚麼左邊的攻速都是這些奇葩的 數字,為甚麼右邊的跳數隨著數值的增長開始變的不連續,不能有19跳嗎?各種疑 問,甚至一度認為他是錯的,實際在論壇上也確實流傳著一些有細微錯誤的版本。 我以前一直認為:“尾氣沒有這麼複雜。如果一個技能寫造成XXX%武器傷害,代表 他每秒攻擊攻速次,每秒XXX%*攻速*DPH的傷害,猛擊,先祖都是這樣,尾氣也一 樣,區別只是,尾氣的60%不是一次產生,是拆分成3個20%來產生,於是每跳20%DPH ,每秒就是攻速*3跳,3秒就是攻速*9跳”。我一直覺得我的想法比這個表更合理 ,但實際對錯還是要通過測試來說明。 測試時的攻速:1.98 2.01 2.04(可以下載我的測試視頻) 測試方法還是和前面一樣的,通過把傷害值調成固定,根據目標的損血來計算傷害 次數,為了湊這個攻速我更換了一些裝備,不暴傷害變成213 暴擊362,結果: 攻速 總傷害 暴擊次數 非暴擊次數 總次數 1.98 4430 4 14 18 2.01 4260 0 20 20 2.04 4558 2 18 20 按照我以前的想法,在2.01攻速時,跳數=2.01*9=18.09,應該是18或者19跳,實測 結果是,當攻速跨過2.00後,直接從18跳突變到了20跳,沒有19跳這個過程,這與 表格是相符的。說明我以前的想法是錯的,表格才是對的。 驗證了他的正確性後,開始找原因。 很多人是從這個帖子看到的這張表:1.04無限雙旋風傳奇級攻略,基本上每個玩雙 旋風的玩家都會看過這個帖子,但該貼並沒有解釋這張表為甚麼是這樣,只是提到 摘自“午夜鎮魂曲”的帖子http://bbs.d.163.com/thread-172261154-1-1.html 午夜鎮魂曲的帖子還是沒有解釋為甚麼,只是提到摘自“蠻子一桶漿糊”的帖子, 論壇搜索這個ID,還好他只發過2帖,在這個帖子中 http://bbs.d.163.com/thread-172190987-1-1.html,有提到這張表,但依然沒有 解釋為甚麼,也沒寫轉自哪裡,於是,線索斷了。還好,在漿糊的帖中,我發現他 列的這張表中的單位是用英文寫的,說明,他很可能是轉自國外某網站,並且沒有 經過修改。 google這張英文表的內容,幾經周折,我找到了他的原出處 http://eu.battle.net/d3/en/forum/topic/4902400739 (精華區 z-8-8-6 有詳細介紹) 在這個貼中,作者終於非常詳細對這個表做了解釋,原帖是英文的,我簡單講下 D3中有一個最小時間單位:幀,Frame,下文簡稱F,他的長度是1/60秒,每一秒遊戲 固定由60個F組成,這些不會變。請特別注意一下,雖然他叫幀,但他是個時間單位 ,與顯示等方面的東西沒任何關係,與視頻,遊戲的幀數不是一個概念。 作為最小時間單位,他不可分割,不會出現0.5F這種東西。 D3中的各種動作,都會 佔用一段時間,由於F是最小單位且不可分割,各種動作佔用的時間就必須是F的整 數倍,一個動作可以佔用10F的時間,如果要快一點,他要么變成9F,要么變成8F ,無法變成8.5或者9.875F這種。 衝刺的小旋風的每一跳也是一個動作,他也會佔用一定的時間,這個時間一定是F 的整數倍,即NF,N是整數。一個小旋風持續3秒,3秒=180F,每一跳的時間是NF, 那麼3秒內的跳數=180F/NF=180/N,由於N必須是整數,當他等於9的時候,180 /9=20 ,當他等於10的時候,180/10=18。這就是為甚麼不會有19跳的原因,因為小旋風 一跳的時常要麼是9F,要麼是10F,無法是中間的某個值。同理,我們可以算出當 N等於1,2,3...時的跳數,都是180/N。比如在某個攻速下小旋風每跳的時間是5F, 那麼3秒就有180/5=36跳。 如果180/N得出的不是整數,因為跳數一定是整的,不能有半跳,這時候需要向上 取整。可以這樣理解,比如N=19,第9跳完一共用了19*9=171F的時間,因為還剩9F 的時間沒用完,這時候第10跳就會出來,因為每跳是一個動作,不能打斷,所以雖 然超過了180F的時間,也還是只能讓這個第10跳跳完。 N的取值是怎麼確定的呢,是由攻速決定的。 N與攻速的關係是怎樣的呢?在前面 我的錯誤設想裡有提到過,我認為跳數=攻速*9,實際上這個想法在理論上是正確 的,或者可以說是設計師的本意。 我們還剛推出了,跳數=180/N,於是180/N=攻速*9,N=20/攻速。造成我的想法產 生偏差的原因,是因為F已經是最小時間單位,無法再分割,於是N必須是整數,當 用某個攻速比如2.1,代進去得到的N不是整數, 20/2.1=9.524 。然後用一個不是整數的N去計算跳數,自然也就得不出正確的跳數 ,因為實際上不存在9.524F,要麼9F,要麼10F。 當在指定攻速下算出來的N不是整數時,N會向下取整。道理是這樣的:比如2.0攻 速時N=10,當你的攻速比2.0哪怕快一點點,就會引起N的變化(減小1變成N-1), 直到下個恰好對應於N -1整數是(這裡是9),對應的攻速是20/9=2.22222。比如如 果你的攻速比2.0高,比如2.1,但沒有達到2.2222,那小旋風每跳的時間消耗就降 低到了9F,而不需要10F。 掌握了這個原理後,即使找不到這個表格,我們也能自己算出各個攻速臨界點,這 些臨界點就是使20/攻速等於整數的點。對應的攻速和跳數分別為: 幀數 攻速 跳數 5 20/5=4.00 180/5=36 6 20/6=3.33 180/6=30 7 20/7=2.86 180/7=26 ...... 15 20/15=1.33 180/15=12 ...... 等等,依次可以自己計算,我就不貼全表了,需要的可以去原帖查閱,我覺得自己 學會算更好,可以幫助理解,或者發現一些錯誤,比如前面貼的那一段表中最後一 行的30跳就有問題,不是2.98035,應該是3.3333。運用前面的知識,要30跳,意 味著N=180/30=6,即小旋風每跳的時間是6F。 N=6時的攻速節點應該是20/6=3.3333. N=7時的節點是20/7=2.857,所以最後一行應該是2.857-3.333,在國外的原帖中,這 已經修改了。 這並不是小旋風的特例,很多一次攻擊被分成若干次來判定的技能都是這個原理, 比如DH的連射等。 關於衝刺小旋風跳數與攻速的關係就說到這裡這部分不是重點,我講這些主要是為 了通過這個大家都比較熟悉的東西引出Frame(F)這個概念,然後再看看這種原理 是否對其他更多的技能有效。 ────────────── 四、關於Frame ─────────────── D3中最小的時間單位稱為一個Frame(幀,F),一秒=60F,1F=1/60秒,F不可分割。 先說一下他與我們平時說的幀數的區別。不管你的CPU,顯卡等等性能如何,遊戲 總是固定的每秒生成60F。他與我們平時說的玩XX遊戲多少幀比如在遊戲裡按CTRL 看到的數字(我稱他f,或者fps)不是一個概念,F是遊戲生成的次數,f是顯卡捕 捉到的次數。 F是恆定的,只要是玩D3就是一秒60F,不會變;f是變化的,他取決於 電腦性能。我們平時只能通過顯示器來看遊戲,所以在感官上我們只認識f,但真正 在背後決定遊戲運行方式,動作長短的,是F。 打個比方,F是一個隱形人在跳繩,穩定的一分鐘跳60下,f是拿著一個能拍到隱形 人的相機在對他拍照,我們看不到隱形人但能看到照片。相機可以拍的快或慢,f 的數值也就可以變化,可以一分鐘拍120張,也可以一分鐘拍15張,但不管拍到幾 張,這個隱形人實際總是每分鐘在跳60下這與相機是無關的。 F是固定的。 f高, 只是不會錯過他的某一跳,f低,比如只有15,就會漏掉很多跳沒拍到,這樣看上 去動作就不連貫,就是所謂的卡。 本文中一直會說到的1F,代表的不是一個畫面,代表的是1/60秒的時間,他是一個 時間計量單位。比如我說一下猛擊8幀,意思不是他需要8個畫面,意思是他需要 8*1/60秒的時間。 我在這裡引入了Frame這個概念,其實他對一個D2老玩家來說並不新鮮,這個系統 不是在D3開始的,在D2時就有了,並且是大多數D2玩家所熟知的,因為當時所有的 配裝核心就是圍繞F。這裡順便多說一些D2中的Frame,因為我不確定D3中是怎樣, 但很確定D2裡是怎樣,通過描述他在D2中的運作方式看看這套機制是否能搬到D3中。 D2的1秒是由25個F構成,1F=1/25秒。他的工作方式是這樣的:一個動作固定會佔 用一定的時間,這斷時間必須是F的整數倍。動作會有很多種,比如攻擊,施法, 格擋,硬直,都是不同種類的動作。會有專門的屬性來加快動作的頻率,縮短每次 動作的時間,比如快速攻擊(IAS),快速施法(FCR),快速格擋(FBR),快速 打擊恢復(FHR)等等。可惜的是,在D3中,這套系統已經被極度簡化了,施法和 攻擊合併了,格擋不需要時間不是動作了,硬直被取消了。只剩攻擊這一個動作和 攻速這一個屬性。 (這些東西可以參考凱恩百科中breakpoint這個詞條) 動作之間是一個序列的關係,不能同時做幾個動作,必須做完一個再做下一個。想 在單位時間內做更多動作,唯一的辦法就是縮短每次動作的時間。動作的時間縮短 是跳躍的,只能從N*F變成(N-1)F,沒有中間量,這也就決定了用來改變動作時 間的屬性比如IAS,FCR這些,也只能是跳躍的,要使一個動作減少1F,必須堆積一 定量的屬性,不夠量,則無效。 在D2中,由於沒有面板攻速可以看,所以人們談論速度問題時,更多的是直接說F ,"你的亞馬遜攻速是多少? " "10F"。這在當時的交流中是非常常見的,沒有人會 說X.XX。 10F這代表射一箭,從抬手到射出去,到手放下來這個完整動作,需要10 個F的時間,D2中一秒是25F,那一秒就可以射25/10=2.5箭,相當於現在的2.5攻速 。如果你想提高攻擊頻率,可以增加IAS屬性的數值,使他達到9F。不同的武器需 要的數值不一樣,比如九頭蛇弓(風之力),基礎攻速是15F,要達到10F需要60ias ,9F需要90ias,如果你現在是60ias 10F,要提高到9F需要再堆30ias,如果達不 到90。那麼75也好,80也好,都沒用的,和60完全一樣,還是10F。 D2是這樣,我現在關心的是D3是否也這樣,前面我們已經通過小旋風攻速跳數對應 關係表說明了Frame機制在D3中是存在的,至少對小旋風這個技能是適用的,那麼 接下去要看看這個機制是否對其他技能全面適用,比如猛擊,因為猛擊適用的話, 那麼可以想像很多技能,先祖啊甚麼的,應該就都適用。 ─────────────── 五、提出假想 ─────────────── 我先假設猛擊也和D2中的一次攻擊一樣,他從抬手到傷害判定,到手放下來這一個 週期我稱他為一個動作,在引入Frame的概念後,動作週期我不再用秒來表述,全 都用F,因為F是最小單位不可分割,所以一個動作的長度必須是整數個F。 假設一次猛擊需要60F,一秒有60F的時間,意味著一秒可以打60/60=1下,即攻速= 1.0,假設一次猛擊需要30F,一秒可以打60/30=2下,即攻速=2.0。 以此類推,我們可以得出,當單次猛擊耗時等於不同的F時,需要的對應攻速是多少 。做出一張單次猛擊攻擊動作時間,與攻速的對應表: http://i.imgur.com/DG9OioZ.jpg
表 5-1 這個表是有偏差的,後文會再修正,不用在意他的具體數值是否精確,我們主要是 看他的規律。 我的假想是,直接決定單位時間內攻擊次數的,是每次猛擊的幀數(或者說每次猛 擊的時長是幾F),先借用這張不太準確的表裡的數據打比方。 1分鐘有3600F,如果一次猛擊NF,攻擊次數就=3600/N。比如一次猛擊的時間是31F ,那1分鐘就打出116下,想再快一點,猛擊的耗時只能從31F降到30F,那就打出120 下,不管我們怎麼微調攻速,打不出118下,就像小旋風不會有19跳一樣。雖然我們 可以搭配出很多很多種攻速,100個蠻子有100種攻速,但他們站著打10分鐘,打出 的攻擊次數只會有60種。 我們通常認為直接決定單位時間攻擊次數的就是攻速,兩者是聯動的,攻速*時間 就是次數。但在這個假設中,不是這樣。攻速不是直接決定攻擊次數,根據這個表 ,如果攻速從1.90提高到1.92,只要不超過1.935,每次猛擊還是31F,每分鐘還是 116下,沒有變化,多0.02的攻速不會使你在60秒內多打1.2下。攻速直接影響的是 每次猛擊的耗時,攻速的改變必須達到一定的量,超過某個具體數值,使得每次猛 擊的幀數發生了變化,單位時間的攻擊次數才會發生變化。我稱這些需要達到的具 體數值為斷點,或者閾(ㄩˋ)值。(斷點是凱恩百科中描述D2時使用的名詞,閾值 是玩家比較喜歡說的詞) 這就能解釋第一個對比測試中,先加2%攻速多了27次,再加2%攻速完全無變化這個 現象了。因為第一個2%攻速正好使得攻速越過了斷點,1次猛擊的幀數減少了1F, 而第二個2%攻速的提升沒有越過斷點,幀數沒有改變,攻擊次數就不會有改變,不 管是打5分鐘還是10分鐘,平均每分鐘的攻擊次數都不會有變化。 如果這個假設是成立的,那麼我們平時選擇裝備時,在考慮要不要花錢去多買1%、 2%、3%攻速時,就需要考慮下這個提升能不能使你的攻速越過斷點,如果越不過, 就沒任何變化,這個錢就是白花的。如果能越過斷點,那麼這個提升就是有意義 的,有價值的。 ────────────── 六、更多測試數據 ────────────── 為了驗證這個假設,單靠一組對比測試是不夠的,我還做了一些測試。 http://i.imgur.com/MqigcrR.jpg
表 6-1 藍色攻速的這些都是新做的,2.2X那組是前面已經貼過的,放一起,方便看看數值 。如果想驗證準確性點攻速可以下載測試視頻。為了降低一些測試量(5分鐘的話 從錄、到截、到數,一條數據需要大概20分鐘時間,太久了),每條數據我都只測 了1分鐘。測試方法還是一樣的,按住鼠標猛擊打罪惡之心。每個視頻的開頭我會 開一下面板,可以看到我的攻速和爆傷,暴擊的數值會在屏幕上直接顯示,非暴擊 的數值可以根據爆傷算出來,然後根據結束時目標的血量和數出來的暴擊次數,算 出非暴擊次數,相加得到總次數。誤差前面說過,最多不會超過1次。 每3條數據為一組,每一組裡,我穿的裝備,除了左戒,其他都一樣,通過替換左 戒,來得到3個臨近的攻速,左戒就是前面貼過的3個,攻速分別為5 7 9,他們附 帶的最小值都一樣,都不帶力量和爆傷,所以在同一組測試裡,換左戒不會影響打 出來的數字大小。 通過這些測試的結果,主要看到兩個現象: 1)這些實測出來的攻擊次數,在我前面推導出來的幀數-攻速-攻擊次數表裡都有 出現,至少是近似值,105 109(108可能是誤差)124 128 179 137 143 都有近似 值。 186差的比較多,這個後面再說。這些攻速是我隨便取的,穿一件暮光,得到 一組,再穿一個巫異,得到一組,主手匕首1.5換成1.8的,再得到一組,這樣得到 的,不是根據表刻意湊的。所以得到的這些實測值與推測值很近似,這應該不是個 巧合。 2)每組3條數據,都是差2%攻速,每多2%攻速,可能會改變攻擊次數,也可能完全 沒變化。 這兩個現像說明,我的假設基本可以認為是成立的:Frame這個機制在D3中確實存在 ,不光是作用在衝刺尾氣上,對猛擊這樣的打擊類技能也有效。 攻速的提升需要達到一定量變,才會引發單次動作幀數的改變,從而引發單位時間 攻擊次數的改變,這一條通過這些數據應該可以得到確認了。 ───────────── 七、對表進一步修正 ───────────── 前面我們推出了幀數-攻速-攻擊次數表,並收集了一些數據,但仔細將這些數據與 表對照,是有問題的,主要是2個: 1)比如2.01攻速應該是30F,1分鐘120下,實測是124下,也就是實測打擊數多於 預測。 2)比如1.98和2.01攻速沒有發生變化都是124,變化發生在2.01個和2.04之間,變 成了128,但根據這個表,斷點應該是2.00整,變化應該發生在1.98和2.01之間才 對。前面在做小旋風測試的時候,斷點也確實是發生在2.00,他就沒這問題。 發現了這兩個問題後,我又做了一個更直觀的測試。1.00攻速,打5分鐘,結果: 攻速 總傷害 暴擊次數 非暴擊次數 5分總次數 每分次數 1.00 215380 22 288 310 62 1.0攻速5分鐘打出了310次,每分鐘62次,這很奇怪,用傳統的想法,攻速1.0麼一 分鐘應該60次,解釋不了;用我的理論,1.0攻速正好是60F的斷點,達到1.0就應 該意味著每次猛擊的時間是60F,一分鐘3600F,應該也是正好60次才對,即使1.0 是算作59F,那根據表也應該是61次/分,還是解釋不了。 其實這個現象我已經不止一次的看到有人提出過了,因為這很容易觀察到,打2分 鐘,發現打出來的次數比120多,或者打120下,發現用時不到120秒,即使用更粗 糙目測+秒錶,這個現象也很明顯。 接下來我試圖對這個現象進行解釋。 前面寫的東西,都是客觀的,但從這裡開始,已經既沒有官方的結論,也沒有D2的 經驗可供參考,完全是我的主觀推測,伴隨著各種假設,以及去分析假設靠不靠譜 ,所以不要認為我接下去說的都一定是對的,很可能完全不是這麼回事兒。如果你 對這些不是很確定的東西不感興趣,那麼讀到這裡就可以結束了,截止第六段已經 可以說明一些問題。願意讀下去的人,可以幫我一起把遺留的問題解決。 為了解釋1.0攻速1分鐘打出62次這個現象,以及為甚麼會出現186這個不在表內的 攻擊次數。我做了兩種假設: 1)1秒不是由精確的60F構成的,可能是62,或者說1F的時間不是精確的1/60秒, 可能是1/62秒。一秒62F,1分鐘3720F,一次攻擊60F,那就會有62次。 2)依然是1秒鐘精確的60F,這不變,但由於某種原因,在攻擊過程中,一個完整 的攻擊動作中的某幾個F被吃掉了,一個本需要60F時間完成的猛擊動作,只用了58F 的時間就打完了,一分鐘還是3600F,每擊只花了58F,就有62次。 以上兩種假設都是有可能的,我個人比較偏向於第二種。 假設一:我覺得這種假設可能性不大的原因有兩個,一是因為現在的技術要做到準 確的一秒60F並不難,二是經過一些研究,我覺得1F確實是1/60秒,回到前面尾氣 測試時貼的2.01 2.04這兩個攻速的視頻,我用他們來找1F的時間長。 在尾氣測試中,我們知道尾氣無論是斷點的位置,還是在某個F值時的跳數,都是 與理論計算出的表格完全符合的,他並沒有猛擊這樣斷點位置和攻擊次數發生偏離 的問題。他沒有發生問題,我的猜測是因為連續猛擊是由若干個獨立的動作拼接而 成的,在拼接的過程中可能會出問題,而一次小旋風的若干跳,他們是一個不可分 割的整體,是一次成型的,所以我覺得去觀察小旋風是靠譜的。 在2.01 2.04尾氣這兩個視頻中,我保留了白字沒有關閉,用來觀察F的長度。視頻 的採樣率是60,也就是視頻裡的一秒是由60張畫面組成的,每張畫面長1/60秒,如 果遊戲中的1F確實是1/60秒的話,視頻裡每一副畫面的時間長短就應該與1F相等, 雖然他的生成節奏可能和F不同步,但時長是一致的。兩個視頻我都採用逐畫格播 放,按一下鍵盤,放一格,來觀察到底用了多少格畫面,即多少個1/60秒來完成這 些跳。 (再囉嗦一下,這裡視頻的採樣率=60並不代表遊戲一秒生成了60個畫面,他生成 幾個畫面由我的顯卡決定。我讓抓視頻的工具一秒抓60個畫面,目的是用他來做衡 量時間的單位,代表我按一下鍵盤,進一個畫格,等於遊戲內的時間過了1/60秒, 是這個意思。 因為在後續回帖中,我還是發現有人會將代表1 /60秒這個時間的幀 ,與代表一個畫面的幀相混淆。) 在這兩個攻速時,小旋風每跳都是9F,總共都應該是20跳。攻擊動作都會有前搖, 判定,後擺的過程,由於小旋風一直是那個樣子,我看不清的前搖從哪裡開始後擺 到哪裡結束,就只能從判定點來看,於是從第一次產生傷害,到最後一次產生傷害 ,這樣去掉了第一跳的前搖,和最後一跳的後擺,總共就是19跳的時間,應該是 9*19=171F。如果1F的長度確實等於1/60秒,那麼我的視頻撲捉軟件也應該用171個 畫格記錄下了這個過程,至少比較接近。觀察下來的結果是: 2.01的視頻中,第一跳從6分第8格開始,9分01格結束,一共173格。 2.04的視頻中,第一跳從5分第11格開始,8分01格結束,一共170格。 如果像假設一中說的,一秒有62F,每跳應該是9/62秒,19跳應該是19*9/62秒 =19*9*60/62格=165格。 顯然170和173還是更接近於171而不是165. 所以通過這個研究我覺得 1F的時間應該就是1/60秒整,他不會被擠壓。 假設二:既然研究表明1F應該就是1/60秒沒問題,那麼可能性就更傾向於假設二了 ,一個攻擊動作的某幾個F被吃掉了。為甚麼會這樣,前面已經有提到,因為我們 在按住鼠標連續攻擊時,這些攻擊是由若干個動作連接形成的動作序列,你單獨打 一下猛擊就停,根據攻速,他應該耗時比如20F,這沒問題,但當按住鼠標連續打 很多個猛擊的時候,比如按住鼠標讓他打10下,就不是200個F,某些F被吃掉了或 者說丟失了,變成了可能190F,於是只需要比原來更短的時間就能打完。為甚麼會 這樣,我說不出絕對正確的理由,只能繼續假設。好吧,在假設裡還要做假設…… 接下來假設為甚麼某些F會丟失,是怎麼丟失的。 假設三:當你按住鼠標,等於不停的在向遊戲發出攻擊的指令,也就是你發送的比 他執行的快,遊戲受到這些來不及執行的指令時,生成一個指令序列,動作1連著 動作2連著動作3這樣,在鏈接的過程中,發生了損耗,就好比你要把一些斷掉的細 紙條鏈接起來,你需要在每一條的末尾塗一些膠水,把後一條粘上來,這樣就使斷 裂的紙條產生了連貫性,當然問題就是每一個紙條比原來短了一點,因為塗膠水的 部分被後一條覆蓋了。既要把紙條連接起來,又不能損失一絲長度,現實中是做不 到的。所以我猜測在遊戲中,為了保證動作的連續性,也可能損失一點長度。 為甚麼尾氣沒有問題,因為他是作用在怪身上的,你仍出去一個尾氣,接下來他就 是自己運作,與你本身不構成動作序列的關係,於是就不需要拼接,就沒問題。 如果確實是這樣的話,那本來一個10F的猛擊,會變成9F,或者8F,一個60F的猛擊 會變成59F或者58F。等於每個攻速對應的F值會比表中低1-2,這個看起來還算有點 味道,比如測試中的1.74攻速109跳,本來1.74攻速應該對應1.71的35F,給他減2F 變成33F後,正好對應109次。 但這個假設還是有問題,你會發現,測試數據中,某些攻速需要-1F來看表,而有些 又是需要-2F,這個無法解釋。還有,降1-2個F看表不會改變表上的那些數字,這樣 依然無法解釋為甚麼會出現186次,這個數值。 總之這個假設感覺還是不太對,我覺得是因為我把F丟失的方式想的太簡單了,確實 ,一款2012年的遊戲,動作序列的連接,做的像連紙條這麼簡單,也是稍微扯淡了 點……有必要把他想的再複雜一些。 假設四: 我嘗試來設計一套更複雜連接方式。 根據平時的遊戲經驗,我想到一個東西,半秒,有些東西以半秒為單位來顯示,比 如回血綠字,半秒一跳,他就像是一個結算週期,是一個比F更大的時間單位,之 後我稱一個半秒為1U。現實中,我們用毫秒、秒、分等單位來衡量時間,而遊戲系 統內,是以F和U為單位來計算時間,拍一巴掌需要幾F,拍死一隻怪需要幾U,應該 這樣來說。 按理說1秒=60F,半秒應該是30F,但我要假設的是1U=31F,也就是1U實際比半秒長 一點點=31/60秒,1F還是穩定的1/60秒。 為甚麼我假設1U=31F,31這個數字,對編程來說也是有一定特殊性的。編程時經常 會去用一些2的整數次方的數字,比如2^5=32。所以我會準備一個32個格子的容器U 去存放F,並且編程中我們知道,各種容器,數組啊,集合啊,等等,格子的編號 都是從0開始的,第一格編號是U [0],第二格是U[1],依次。為了方便,很可能第 一格留空,如果從第一格開始放,會變成U[N]裡放的是第N+1個單位,後續調用很 麻煩,從第二格開始放,這樣格子的編號與單位的編號就一致了,比如編號是U[N] 的格子放第N個單位,會比較比方便。這樣一共32個格子,第一格空掉,使用的就 是從U[1]到U[31]這31個格子,U[0]空著不用。 說這些東西只是我想說明以1U=31F來作為一個遊戲內時間計量單位,以一個32格的 容器來製作U,這些在編程時的可能性是有的。 回到動作序列的連接,在假設三中我提出直接把各個動作連起來,這種方式不光是 過於簡單,而且實現上會受更多其他因素的干擾,因為每個動作的時間太短了只有 幾F,也許會受網絡等因素干擾。相比之下,1U是一個比較長的時間單位,受影響 的機會要小的多,所以更好的方式是,先把將要執行的每個動作放進一個更大的大 容器U裡,然後再去連接這些U。就像先把東西裝進車廂,然後連接車廂變成火車。 如果一3個動作是10F 10F 11F,正好放進一個U裡,如果一個動作比較長,比如有 40F,那麼前31F放在第一個U1裡,後9F放在U2裡,這樣。 當我們給遊戲發送連續的遊戲指令時,比如按住鼠標說攻擊攻擊攻擊,就生成了動 作序列,序列生成的方式就是一個U接一個U這樣拼上去。拼U的人並不關心U裡裝的 是甚麼,他只管把1個個U拼起來並且保證一秒正好由2個U組成,由於每個U的長度 是32格(第一格空著,二到最後一格存放這動作內容),直接拼時間會湊不攏,於 是,這個拼接工把每個U去頭去尾,變成30格即30F的長度,組裝,就正好是整數秒 了。去頭沒關係,頭本來就是空的,去尾就有問題了,這裡是存著東西的,但沒辦 法,這一格里的F就被吃掉了,丟失了。 每秒由2U拼接成,每U丟失了1F,這樣,等於每秒會丟失2F。這2個U裡原本裝著62 個F,其中第31F和第62F在拼接時被吃掉了。 這樣的話,遊戲用1秒60F的時間,就能完成了62個F的動作,因為其中2F被吃掉了 ,不用表現了,這便是假設4得出的結論。看上去和假設一有點像,都提到了62F, 但是不一樣的。假設一里的一秒62F,是在1秒裡確實裝了62個F,每個F的時間被擠 壓了,假設四里的1秒62F,每個F的時間還是1/60秒,沒被擠壓,只是有2個F丟失 了,1秒裡裝的還是60個F。 造成這個問題的原因,我覺得是程序製作時的一個失誤,設計者肯定是希望1.0攻 速打一分鐘出現60次攻擊的,現在出現62次肯定不是他故意為之。在1個U裡,如果 只儲存30個F,頭尾都空掉,就沒問題了,拼接的時候去頭去尾正好去掉兩個空格 ,設計初衷應該是這樣,但可能在實現時的忽略,把最後一格也存了一F,問題就 發生了。其實平時編程時,諸如搞錯數組序號這種事是很常見的錯誤,也沒甚麼稀奇。 根據假設四,1分鐘60秒,能夠用來完成60*62=3720F的動作,當然實際的時長還是 3600F,能在3600F完成3720F的動作,因為120個F在拼接時丟失了。也就是說,如 果一個動作需要20F的時間,在假設四這樣的機制下,1分鐘能完成3720/20=186次 。 Oyeah,我很欣喜的發現我得到了186這個之間無法解釋的數字。同理,用3720/ 不同的幀數,就能得到在這個幀數下1分鐘的攻擊次數,於是我們得到一張修正表。 表 7-1 http://i.imgur.com/ehbkPpD.jpg
這張表看起來就比較靠譜了。與前面的一些測試結果差異也很小(我是指跳數上的 差異比較小,斷點位置的差異還是有的,這個下一步再解決) 再做一個測試來說明假設四比假設三更靠譜,通過表的走勢可以看到,隨著攻速的 提升,攻擊次數的變化也就跨度就越大,要驗證哪一種假設更靠譜,比較好的辦法 是製造一個高攻速,看看他的攻擊次數更接近哪種假設。 我做了3.816攻速,雙持2把1.8速度的匕首,穿除了舊祖鞋外所有的滿值攻速裝, 加變身。結果: 攻速 總傷害 暴擊次數 非暴擊次數 總次數 3.816 807047 31 202 233 (兩把匕首的最小值是一樣的,所以在飾品的最小值屬性加成後,主副手的DPH一 樣,打出的數字一樣,還是可以用同樣的辦法來統計攻擊次數) 1分鐘233次,這個數字在修正後的每分次數中可以找到,對應16F 3.750攻速的 232.5次。而在原來的理論次數中,沒有與之對應的數值225、240都差的很遠,按 照假設三的少看1-2個F去找,找不到,說明假設三不靠譜。 最後的這個高攻速測試應該可以表明,我的假設四還是有點譜的,畢竟在高攻速下, 攻擊次數的跳躍幅度是很大的,根據假設的修正能與實測很接近,應該不是巧合了。 ───────────── 八、遺留的問題和結論 ───────────── 最後通過假設四我依然沒有解決的問題是,為甚麼斷點不是出現在60/N這些位置。 這個很遺憾,這也是我長篇大論的主要原因,我想讓看的人了解我的想法,幫我想 想為甚麼斷點會偏移,偏移到哪去了。我不想用大量的實測去逐個逼出斷點的位置 ,這樣還是搞不清為甚麼,肯定是有某個原因在裡面的,還是先想出原因,算出理 論值,再用實測去驗證比較好。 更新,我暫時找清出斷點位置,可以作為一個初步結論,還是比較準確的,可以作 為參考,這張表適用於猛擊,先祖。 表 8-1 http://i.imgur.com/3zuYdQi.jpg
經過更多討論,攻速的跳躍應該是,在兩個節點區間內,動作的速度即F值和跳數 都是與更快的那一檔攻速相同。如果你的攻速介於2.034和2.107之間,那麼應該看 2.107那行。 建議: 如果你在具體某件裝備的選擇上想要參考本文的結論表,最好還是先經過以下實測 。比如根據表,你發現再多2%攻速就能提升一檔,那先找個垃圾的多2%攻速的裝備 替換上去試一下。 測試方式還是和我一樣,用低DPH武器加一個最小值戒指就可以了。別的裝備別帶 均傷其他隨意,然後打罪惡之心,不用視頻,就手機秒錶就行了。因為在常規攻速 範圍內,動作降1F也就是攻速提一檔帶來的攻擊次數差異還是比較明顯的,你只要 打個3-5分鐘,攻擊次數差應該會很明顯,比如30F和29F一分鐘差4次,5分鐘會差 20次,手機秒錶你按的快點慢點最多造成小幾次的誤差,是不會掩蓋掉20次的差別的。 按秒錶開始計時,開打,5分鐘按停秒錶,停手,看目標血量,算下打了幾次。原 攻速的做一次,新攻速的做一次,最多15分鐘吧。這樣穩妥一些。 雙持: 雙持是這樣的,比如你主手的攻速對應一個F值比如20,副手對應一個F值比如18, 那技能就是一次20F一次18F這樣在交替,也就是2次攻擊用時38F,輪流雙揮的技能 都是這個運作方式。這樣,對雙持來說就麻煩一些,最佳收益是當你提升某個攻速% 時,主副手都剛過下一個斷點,比如主手變成19F,副手變成17F,這樣每2次攻擊 就少了2F,如果只是某一隻手過斷點,另一隻沒變化,那就是每2次攻擊少1F,收 益會小點。 具體某一隻手對應幾F還是一樣看這個表的。 ─────────────── 九、現實意義 ─────────────── 最現實的就是前言裡提到的,有沒有去多追求一點攻速的必要。因為現在這個階段 ,很多人身上的屬性已經比較飽和了,白多一個詞綴的空間幾乎不存在了,剩下的 就是去把一些數值做飽滿。攻速必須達到一定量變,才會引起攻擊次數增加或者戰 鬥時間縮短的質變。在追求裝備上攻速屬性飽滿的時候要付出高昂的物質代價,那 麼就很有必要認真考慮下有沒有回報。 從實測數據可以看出,當攻速比較高時,讓每次攻擊減少1F需要提升的攻速相當多 ,從2.8X和3.0X那兩組數據都是換了兩次戒指提升了4%的攻速,都沒產生差別,4% 不是一個小數目,全身殷娜,巫異,暮光,拉庫尼都買8速和都買9速價錢差的可不少。 從表的走勢也可以看出,當攻速在2.5往上時(這個數值對變身後的雙持蠻子不難達 到),每降1F,需要的攻速提升已經超過了0.1,我們武器的基礎速度一般也就是1.X ,比如BUG錘雙持,主手也是錘的話,基礎速度只有1.45,1%攻速的提升只能提高 0.0145的攻速,要累積超過0.1越過下一個短點,需要7%-8%的攻速,這就不是暮光 頭選8速還是9速的問題了,這得多穿一件攻速裝才有用, 這就得完全改變配裝計劃。 由於高攻速時,每降1F需要的攻速非常多,多1%-2%攻速完全無變化的可能性其實蠻 大的。 如果你現在正在追求自己整體配裝的平衡,不妨考慮一下這個問題,如果你的攻速 差很少就能達到下一個斷點,非常有必要去把這些攻速做出來,如果再多個3 %-5% 攻速也還不會越過斷點,那還是先轉去把別的屬性屬性。 由於後續發現不同的技能,斷點位置不一樣,所以在確定自己需要多少攻速的時候 ,最好根據自己的build所用的技能,找出一個合適的點。 蠻子常用攻擊技能很少,先祖佔了絕大部分吧。基本把先祖表和尾氣表結合起來看 下就行了。 其實如果你有能力都用滿速的,其實根本不用糾結這些東西,畢竟是大於等於的關 係,多了最多是不生效,反正也沒負作用。我研究這些,主要是給暫時無法把攻速 做滿的人一些參考。 比如我的項鍊: http://i.imgur.com/FtQndYS.jpg
因為我自己是不朽套的,能做攻速的位置很少,於是我一直很在意有限那幾個部位 上的攻速,別的屬性我可以其他地方找,攻速找不出來。這個項鍊我一直不太滿意 ,主要是攻速只有7,我已經做了很多很多了,攻速不是9就無視。 現在基於這個理論,我可以重新審視下有沒有必要再繼續去試圖挖掘那2%攻速了, 然後發現,確實沒必要了,我現在主副手攻速是1.98 2.14,正好剛跨過1.967 和 2.107這兩個斷點,如果多2%攻速,會變成2.0和2.17還是沒跨過一下個斷點2.034 和2.185。所以,我可以不用再折騰這玩意兒了。 ─────────────── 十、理論意義 ─────────────── 通過這次研究,不管你用什麼技能,不管什麼攻速,不管我說的對不對,反正有一 點很清楚: 實際單位時間打出來的次數都會比(攻速*時間)的這個預期值多。 而以往我們的各種理論,比如維持變身啊甚麼,都是基於攻速*時間在考慮的,這 也許就會有點問題,不過以後慢慢再說吧。 更新 後續我又採集了一些猛擊的數據,基本已經確定了斷點位置,表格在第八部分已經 作為結論更新,並且做了先祖的測試,先祖和猛擊是一樣的。 本來從一開始我就是想用先祖做測試的,畢竟這才是常用技能,但我怕做不到絕對 的無限先祖引起誤差所以改用了猛擊。而且之前一直局限在暴擊回怒的圈子裡,我 覺得即使無限了,會有很多很多暴擊,我會數不清楚。經bigrock一句話提醒,我 想到了,實驗製造無限先祖不一定要用暴擊回怒,可以靠減怒氣消耗來實現。我沒 有那麼多減先祖裝備,但我想到了“奮戰不懈”這個被動,生命低於20%,怒氣消 耗降低75%,然後我隨便找個怪把我打紅,帶一件-5的裝備,就絕對無限了。於是 可以用先祖繼續測試。 下面是猛擊和先祖最後測試數據,因為是一樣的,就放在一起了 攻速 1分次數 攻速 1分次數 1.710 105 2.34 143 1.740 109 2.3712 149 1.770 108 2.4024 149 1.845 115 2.376 148 1.875 115 2.412 148 1.905 119 2.448 148 1.980 124 2.862 179 2.010 124 2.898 179 2.040 128 2.934 179 2.1996 137 3.024 186 2.2308 137 3.06 186 2.262 136 3.096 186 2.250 688/5=137.6 2.280 715/5=143 2.310 715/5=143 把這些測試結果與最後修正後得出的表比較,還是比較吻合的。籃色高亮的都是在 斷點邊緣的攻速,確實也都符合了規律,所以應該還是比較可靠的。 斷點的偏移問題,在我用其他技能測試後,受到一些啟發,我發現,不同的技能在 相同的攻速下,單位時間打出的次數不一樣,比如1.0攻速,猛擊能打出62下,飛 斧能打出73下,這說明,不同的技能,達到某一個F,需要的攻速不同。要實現這 樣的效果可能有很多種方式,最簡單的一種就是直接在基礎標準斷點攻速的基礎上 乘一個係數,相當於給了他一個折扣,使他更容易達到低F值,不同的技能可能會 有不同的係數,製作遊戲時可以通過修改係數很容易的控制不同技能的快慢。 標準斷點位置是60/60,60/59,60/58.....依次到60/1,我在這些攻速點上都乘以一 個59/60的係數,就得到了現在猛擊、先祖修正表的斷點位置。當然後續還要再推 敲推敲,不過實際數據確實蠻吻合的。 如果是飛斧,這個係數大概是51/60。得到的飛斧表是: 表 10-1 http://i.imgur.com/wmcdtFv.jpg
粗略測了幾組,基本符合,可以看到,同樣的攻速,扔飛斧實際的攻擊次數要比打 猛擊多很多。也就是說飛斧這個技能的輸出比字面上看上去的高不少。 ───────────────── 結尾 ───────────────── 我所說的很多東西,都是基於假設,測試結果接近也不能說明他就一定是對的, 未必可靠,只有官方說的才可靠。 所以,要不要信,信多少,各位還是自己把握。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.189.142

07/04 00:39, , 1F
看不懂但是給推Orz
07/04 00:39, 1F
※ 編輯: Sechslee 來自: 122.116.189.142 (07/04 00:44)

07/04 00:40, , 2F
end惹...
07/04 00:40, 2F

07/04 00:43, , 3F
看到40頁 先end推
07/04 00:43, 3F

07/04 00:44, , 4F
有論文給推
07/04 00:44, 4F

07/04 00:47, , 5F
單純用擊回來測試攻擊次數會比傷害來得準確,可以
07/04 00:47, 5F

07/04 00:48, , 6F
嗯嗯我也是這樣想 ^^"
07/04 00:48, 6F

07/04 00:48, , 7F
排除掉爆擊的問題
07/04 00:48, 7F

07/04 00:49, , 8F
我想原作者想表達的是, 攻速會使DPS增加, 可是要跨過
07/04 00:49, 8F

07/04 00:49, , 9F
一個門檻後, 效果才會比較顯著
07/04 00:49, 9F

07/04 00:50, , 10F
用擊回測試必須將錄影內容 frame by frame 觀察回血
07/04 00:50, 10F

07/04 00:50, , 11F
量, 因為遊戲中顯示的數字是 30 frame 內的加總
07/04 00:50, 11F

07/04 00:51, , 12F
計算一段時間內的總回血量再除Proc就知道攻擊次數了
07/04 00:51, 12F

07/04 00:52, , 13F
觀察方式為觸發擊回的第 n frame 是否對應到血球數值
07/04 00:52, 13F

07/04 00:52, , 14F
的上升
07/04 00:52, 14F

07/04 00:53, , 15F
另外遊戲中顯示的攻擊傷害/生命回復數字為4捨5入
07/04 00:53, 15F

07/04 00:54, , 16F
用加總的來算誤差會被放大
07/04 00:54, 16F

07/04 00:54, , 17F
假設10秒回1萬血,技能Proc=1,擊回1000,就代表10秒
07/04 00:54, 17F

07/04 00:55, , 18F
數據帝
07/04 00:55, 18F

07/04 00:55, , 19F
內總共攻擊10次,也就是每秒攻擊1次,不用去刻意計算
07/04 00:55, 19F

07/04 00:56, , 20F
每個frame的動作,因為我們求的是一段時間內的攻擊數
07/04 00:56, 20F

07/04 00:59, , 21F
技能IAS的門檻在國外應該是有人已經做出來了,我看
07/04 00:59, 21F

07/04 00:59, , 22F
d3rawr的網站中,分析技能傷害中會列出breakout point
07/04 00:59, 22F

07/04 01:00, , 23F
1000P....
07/04 01:00, 23F

07/04 01:00, , 24F
有請caine大神解釋
07/04 01:00, 24F

07/04 01:01, , 25F
但是攻速造成的frame值不是30的正因數時, 每次顯示的
07/04 01:01, 25F

07/04 01:03, , 26F
數值就會不固定 總和除上不同測試時間長度就會有誤差
07/04 01:03, 26F

07/04 01:04, , 27F
不過d3rawr列出的攻速門檻的值跟這邊測試有些許出入
07/04 01:04, 27F

07/04 01:06, , 28F
chwilliam考慮是對的,所以要測試要把測試時間拉長
07/04 01:06, 28F

07/04 01:06, , 29F
雖不明,但覺厲!
07/04 01:06, 29F

07/04 01:06, , 30F
減少這個誤差,而且不是只有這個誤差而已,還有網路
07/04 01:06, 30F

07/04 01:07, , 31F
延遲的問題,所以真的要測試就得學這篇一樣拉長時間
07/04 01:07, 31F

07/04 01:08, , 32F
http://0rz.tw/A4Lq5 第一頁與第六頁有提到
07/04 01:08, 32F

07/04 01:09, , 33F
計算的 frame 和 遊戲中動畫顯示的 frame
07/04 01:09, 33F
※ 編輯: Sechslee 來自: 122.116.189.142 (07/04 01:23)

07/04 01:23, , 34F
寫論文嗎?厲害給推 辛苦了~
07/04 01:23, 34F

07/04 01:23, , 35F
d3畢竟無法像d2 tcp/ip 或是local server
07/04 01:23, 35F

07/04 01:23, , 36F
快推不然人家知道我看不懂
07/04 01:23, 36F

07/04 01:38, , 37F
恩 跟我想的一樣 (裝懂中)
07/04 01:38, 37F

07/04 01:40, , 38F
這一篇文章值 1000 Ptt幣..........實用推
07/04 01:40, 38F

07/04 01:41, , 39F
精彩!!
07/04 01:41, 39F

07/04 01:56, , 40F
推一下~~~需要時間消化@@
07/04 01:56, 40F

07/04 02:03, , 41F
簡單而言就是把遊戲想成舊電影一樣會有一個個畫面跑
07/04 02:03, 41F

07/04 02:04, , 42F
如果這個假設是正確的 攻速最快也是每一個畫面攻擊一
07/04 02:04, 42F

07/04 02:05, , 43F
次而已 不可能一個定格畫面跑出兩次攻擊 這就是限制
07/04 02:05, 43F

07/04 02:06, , 44F
同理 第二快也頂多是每兩個定格畫面攻擊一次 這個就
07/04 02:06, 44F

07/04 02:07, , 45F
會關係到攻速提升是否有用 如果提升1%的攻速無法讓攻
07/04 02:07, 45F

07/04 02:07, , 46F
擊可以從兩個畫面一次變成一個畫面一次 那這個攻速提
07/04 02:07, 46F

07/04 02:07, , 47F
升就是毫無意義的
07/04 02:07, 47F

07/04 06:51, , 48F
正想發 就被你搶先了(攤
07/04 06:51, 48F

07/04 08:35, , 49F
竟然看完了
07/04 08:35, 49F

07/04 08:39, , 50F
這是碩論嗎XD
07/04 08:39, 50F

07/04 08:46, , 51F
這太科學了.....我跪了...
07/04 08:46, 51F

07/04 09:49, , 52F
趕快推免得人家以為我看不懂
07/04 09:49, 52F

07/04 10:06, , 53F
原本的連結討論串還有更多的討論 值得一看!
07/04 10:06, 53F

07/04 10:13, , 54F
根本是論文等級了....
07/04 10:13, 54F

07/04 10:27, , 55F
簡單來說 這就是離散數學
07/04 10:27, 55F

07/04 10:28, , 56F
簡單說就是跟D2類似 普攻的Frames數要到一定的ias才
07/04 10:28, 56F

07/04 10:29, , 57F
會減少1 D2更複雜 還跟武器基速有關
07/04 10:29, 57F

07/04 10:30, , 58F
比如拿女族長要多少ias到7frame,信心要多少才能8
07/04 10:30, 58F

07/04 10:31, , 59F
超強 寫的很好很容易懂 理論+實驗真的是論文!!
07/04 10:31, 59F

07/04 10:33, , 60F
D3的話 應該是沒有武器基速這東西 但不同技能可能有
07/04 10:33, 60F

07/04 10:33, , 61F
不同的基速 造成相同ias 不同技能frames數就不同
07/04 10:33, 61F

07/04 10:46, , 62F
41頁,有人要幫忙出版嗎?
07/04 10:46, 62F

07/04 10:54, , 63F
終於瞭解為什麼d3rawr的奔雷會有breakpoint了
07/04 10:54, 63F

07/04 10:56, , 64F
原來不只DOT,單次傷害的技能也有攻速門檻
07/04 10:56, 64F

07/04 11:08, , 65F
其實d3rawr的breakpoint表旁都有附帶aps 跟實際dps
07/04 11:08, 65F

07/04 11:08, , 66F
有人早就告訴我們了
07/04 11:08, 66F

07/04 11:15, , 67F
快請掌門寫序~~
07/04 11:15, 67F

07/04 11:33, , 68F
單次傷害的攻速門檻 沒想像中實用,大家要冷靜一下XD
07/04 11:33, 68F

07/04 11:36, , 69F
#1Ho8bGY9 補充一下,以後要找東西自己比較好找 XD
07/04 11:36, 69F

07/04 11:51, , 70F
原來..
07/04 11:51, 70F

07/04 11:55, , 71F
專業不科普文XD 辛苦了
07/04 11:55, 71F

07/04 12:04, , 72F
看到頁數林北就跪了
07/04 12:04, 72F

07/04 13:21, , 73F
看到酒令林北就飽了
07/04 13:21, 73F

07/04 13:36, , 74F
太猛了 連誤差都被找到
07/04 13:36, 74F

07/04 14:49, , 75F
這是論文吧
07/04 14:49, 75F

07/04 15:07, , 76F
恩 恩 恩
07/04 15:07, 76F

07/04 15:19, , 77F
看完 一知半解推
07/04 15:19, 77F

07/04 15:30, , 78F
全看完 大推  專業
07/04 15:30, 78F

07/04 17:25, , 79F
推d3rawr
07/04 17:25, 79F

07/04 17:52, , 80F
d3rawr的breakpoint有誤差(應該是純理論推算) 沒有誤
07/04 17:52, 80F

07/04 17:53, , 81F
差修正的過程所以跟實測結果應該會差蠻多的
07/04 17:53, 81F

07/04 17:53, , 82F
而且每個技能的breakpoint都一樣 這已經證實是錯的了
07/04 17:53, 82F

07/04 22:05, , 83F
其實願意花時間的話 不難懂....指示下班在家實在不想
07/04 22:05, 83F

07/04 22:07, , 84F
只想放空....
07/04 22:07, 84F

07/04 22:19, , 85F
神文
07/04 22:19, 85F

07/04 22:51, , 86F
推實驗精神 話說我在半年前就有提出臨界值的觀念 那
07/04 22:51, 86F

07/04 22:52, , 87F
時候還被一堆人推文說我想太多...明明感覺就很明顯..
07/04 22:52, 87F

07/05 11:08, , 88F
連續打700次差30次 本人是覺得不太明顯啦
07/05 11:08, 88F

08/19 04:29, , 89F
推實驗精神 話說我在半 https://muxiv.com
08/19 04:29, 89F

10/08 14:47, , 90F
次而已 不可能一個定格 https://daxiv.com
10/08 14:47, 90F
文章代碼(AID): #1Hr5Cts2 (DIABLO)
文章代碼(AID): #1Hr5Cts2 (DIABLO)