鋼琴經驗倒扣 - 仙境傳說

Lauren avatar
By Lauren
at 2016-05-28T00:52

Table of Contents

原文吃光光


看了引用的巴哈的那篇文章

覺得不出來講點話似乎有點對不起版眾XD

於是再度上浮換氣


關於經驗值計算的部分, 可以參考我先前的文章 #1JQyc3S_ (RO)

所以這篇文章的重點在於

1. 探討 RO 經驗值計算溢位的現象的相關推論

2. 根據第一點的推論, 簡單列出幾個會造成經驗值溢位的狀況給大家參考


首先必須要鄭重聲明

RO 經驗值計算溢位是因為使用浮點數 這件事完全是錯的

證據有以下

1. 人物並不會獲得非整數的經驗值

所有曾經看過經驗值取得的遊戲資訊 應該都會知道這件事

無論是人物擁有的經驗值 或是擊倒魔物取得的經驗值 都不會有小數點以下的零頭

遊戲設計不會為了不會出現小數的經驗值, 去使用非整數的儲存方式

因為 a. 沒必要 b. 浮點數運算比整數運算慢 c. 整數運算比較不會有誤差問題

寫程式的人一定會用整數 原因應該 a >>>>>>> b >> c


2. 32位元浮點數 能夠處理的數字範圍其實並不會造成溢位的問題

32位元浮點數能表達的數值精確度範圍, 大約是 10^-37~10^38

翻譯成白話來說 如果使用浮點數運算

就算 RO 出了一隻經驗值是 10000 隻覺醒鋼琴總和這麼多經驗的怪

差不多也只是浮點數能表達的範圍的 0.000000000000000000001% 左右

不過使用 32位元浮點數, 會有很恐怖的誤差 (但是通常不會導致正負號弄錯..)

以上這些都不重要 重點是 不可能是浮點數導致這個問題

至於浮點數如何表達正負數的部分 其實就不是很重要所以不想講orz...|||

有興趣的請自己去查..


以下是我個人的推論, 雖然有一點點根據, 不過還是需要測試才能證明

問題是......測試很麻煩, 所以我懶得測 (被揍


第一個推論是溢位的是32位元整數

因為這是很常使用的儲存整數用的資料格式

32位元無號整數不會有溢位變負的問題

而64位元整數絕對可以處理我們計算的經驗值


第二個推論是溢位的是單一魔物被擊殺時, 分配給所有成員的總經驗

因為當經驗溢位時, 全隊都是拿到負經驗 (當然, 除了死掉.不在現場.或是沒均分之類)

這代表 DAIDAI/吃書 是無辜的, 你不會因為打手或自己有特殊的經驗狀態而拿到負經驗

這個部分, 只要考慮DAIDAI狀態跟經驗書 都無法讓隊友獲益 應該可以大概理解


第三個推論是最有趣也最重要的, 也就是溢位的標準是 21,474,836

32位元有號正整數上限是 2,147,483,647

而我推論的這個值是這個數字的 1/100, 這當然不是隨便湊的

我們有幾個已知的鋼琴團數字可以參考

1. 12人均分隊伍, 全部人碰一下王, 其中一個打手打了極高比率 => 變負的GG
2. 12人均分隊伍, 全部人打到王, 兩個人約略平均分攤傷害 => 還是正的
3. 12人均分隊伍, 只有一個人打到王 => 還是正的

不考慮經驗懲罰, 全隊經驗的部分, 1 大約是 31,069,440
2 大約是 15,534,720
3 大約是 20,044,800


接下來就要講為什麼有那神秘的 1% 標準

我認為那是因為工程師寫經驗計算, 要避免處理小數, 所以用了一些自己方便的寫法

因為雖然人物取得的經驗跟魔物擊倒的經驗都是整數

但是經驗書有50%, 經驗鞋有10%, 神奇幸運帽還有 3% 這種數字

公式原本應該是 團隊獲得經驗 / 均分人數 * 個人經驗倍率

但是實際上寫成 團隊獲得經驗 * 100 / 均分人數 * 個人經驗倍率%

然後團隊獲得經驗 * 100 造成溢位, 算出來就是負的

而且後面有經驗書跟 DAIDAI 還會負更多...


根據這個推論, 以下列出幾個鋼琴團滿團均分可能會造成問題的狀況

1. 打手只有一名, 包含打手有超過三人打到王

2. 打手超過一名, 所有人都有碰到王, 但是其中一人打造成超過69.1%以上傷害

有興趣的人可以拿以上兩點來做實驗..

尤其如果第二點證明是正確的, 那就保證我猜的是對的...


另外還有一個有趣的地方, 就是如果我說的沒錯, 而且這個問題之後沒有(打算)修正

以後就不會出經驗卡裝增加幅度單位是百分比, 然後值還有小數點的 (例如說2.5%)


最後我想說, 這很明顯是 BUG, 而且嚴重影響遊戲體驗

等到回歸原廠之後, 寄信寄爆G社 或許就有機會修了


END 懶人包

1. 就是 BUG, 而且還是每天大家都可能遇到的 BUG, 只能等原廠解

2. 滿團均分鋼琴, 打手最好能找兩個, 不要讓有人打到 70% 以上傷害

3. 只有一個打手的時候
a. 除了打手之外其他最好都不要打 (因為超過三個人打到就可能會溢位了..)
b. 大家努力打, 分攤掉鋼琴30%HP的傷害 (大約是565萬HP)

其實 3.b 比 3.a 容易達成 (因為跟人有關的事情都會有意外..)

只是打手如果是基因, 少了一些天怒加持 火煙組會丟比較多一些


--
純屬個人推論 不要起爭議

有爭議 請G社出來面對就搞定

--

All Comments

Jacob avatar
By Jacob
at 2016-05-28T07:04
我記得之前有看過有人經驗獲得兩千多萬的圖 所以我一直覺得
Regina avatar
By Regina
at 2016-05-29T12:23
經驗溢位變負的這原因很奇怪...
Tristan Cohan avatar
By Tristan Cohan
at 2016-06-02T03:00
快推文不然人家以為我看不懂
George avatar
By George
at 2016-06-03T23:39
推這篇讓我真的解惑了~
Selena avatar
By Selena
at 2016-06-06T18:08
我拿過兩千多萬經驗可是是沒均分情況下
公會盧恩擋主教幫加給我打經驗全給我
Adele avatar
By Adele
at 2016-06-07T04:02
快推文免得被發現看不懂
Blanche avatar
By Blanche
at 2016-06-08T06:14
你的推論是正確的.修改方法把公式的 *100 放在最後即可
我管理的mud也有相同問題,也是以該方式解決,缺點就是先除
Oliver avatar
By Oliver
at 2016-06-09T20:34
再乘100的結果就是後兩位數一定是00(強制百位整數),後來
有嚐試新的寫法就是計算先用float(可超過32位元),等計算
Irma avatar
By Irma
at 2016-06-10T18:48
完再透過ftoi(浮點→整數函數)變回整數
Ethan avatar
By Ethan
at 2016-06-11T03:59
強制百位整數的缺點我認為在獲取經驗值10000以上時可無視
Agnes avatar
By Agnes
at 2016-06-15T11:18
(像10000跟10099對於獲得經驗值的人的等級來說差異可無視
Rebecca avatar
By Rebecca
at 2016-06-16T09:35
另一種寫法也試過, n x 100 / m -> ((n x 10)/m) x 10
Tracy avatar
By Tracy
at 2016-06-20T01:46
括號內的值會先被計算,只要確保 n x 10 絕不會溢位就可
Yedda avatar
By Yedda
at 2016-06-23T13:07
低調承認看不懂(遮臉…大推用心
Edward Lewis avatar
By Edward Lewis
at 2016-06-26T14:36
這推論合理 雖然還沒遇過XD
Edward Lewis avatar
By Edward Lewis
at 2016-06-30T21:17
想問原PO 經驗+2倍期間 只給1人打這招還是有效嗎
對不起不會自己算(羞~

各位都收得到gnjoy認證信嗎

Edward Lewis avatar
By Edward Lewis
at 2016-05-27T21:20
其實前幾天就有先辦Gnjoy帳號 但一直沒收到認證信(收件夾 垃圾信件 垃圾桶我都確實翻過) 之後想重新註冊 卻已註冊過 想登入 因為沒驗證所以不能登 就一直卡在這 看網站說明寫沒驗證的24小時之後要重新註冊 但我已超過24小時 還是一樣的狀況 直接留言給原廠的RO粉絲頁 他回我幫我重新 ...

帳號資料修改相關問題

Brianna avatar
By Brianna
at 2016-05-27T17:47
最近因為轉移的事情要申請修改本尊的身分證 但因為我目前玩的本尊原本不是我的帳號 是好幾年前網友不玩了而送給我的帳號 現在也都沒在聯絡,所以根本也拿不到他的身分證 而現在在申請修改的時候遇到了瓶頸 想煩請各位幫我解答一下 我目前的本尊沒有匯入任何GF內,但有一組用我本人身分證申請的GF帳號 ( ...

霧林迷宮旅遊團開團

George avatar
By George
at 2016-05-27T13:42
1.時間:5/28(六) 晚上10點 2.集合地點:免波2線斐揚北邊卡普拉(不是斐洞外那隻卡普拉,不要走錯) 3.內容:霧林迷宮旅遊團 帶朋友解徬徨的守護者(打殭屍龍)任務,預計11點半前收團。(要搶斐揚的拍賣Q_Q) 有興趣可以站內信給我 或到時候密我ID: 卡雷姆佛利德林 or 尤金佛利德林 ...

鋼琴經驗倒扣

Ethan avatar
By Ethan
at 2016-05-27T04:39
現在經驗值是加倍狀態所以會出現經驗值爆錶導致出現負經驗情況 這是因為1隻怪由單人打所以經驗由打的那個人所獲得經驗再分給其他隊友 單人經驗破錶就會扣所以會其他隊友也會扣 所以當打1隻怪時經驗會破錶就要最少2個人打那隻怪而且傷害不能差太多 如果總傷害差太多經驗還是會被傷害最高的那人分去大部份的經驗 簡單 ...

平射狼遊出裝問題

Eden avatar
By Eden
at 2016-05-26T18:37
請問一般平射狼遊 純打王、練功、爬塔;不PVP、不GVG 所需準備的武器卡與衣服卡有哪些? 頭上我有+12草莓頭[未插卡] , 地獄南瓜 武器的話就+8(以上)小精弓,卡片的話需準備哪幾張? 衣服的部分應該就天羽衣不變了,不過卡片的部分要準備那些卡? 已定裝,不再更換的部分: 頭下 熊貓氣球 披肩的部 ...