幻獸帕魯 (PalWorld) 顯示傷害與實際傷害機制研究

1 8 月

廣告

作者:tijbcfjf

來源:幻獸帕魯吧

1.顯示傷害不等於造成傷害

舉一個例子,玩家使用下圖配隊攻擊總生命值18943防禦力876的喚冬獸,只打弱點,記錄喚冬獸從滿血到被擊殺的每次實際造成傷害和顯示傷害。

結果如圖所示,第5次標紅是因為沒有命中弱點。每次攻擊顯示的傷害和造成的傷害是不一樣的。造成的傷害是扣除生命值得到,所以總和必然等於總生命值;顯示的傷害的最後一擊也是理論基準值再隨機的結果,排除最後一擊的影響,剩餘顯示傷害的和也不等於造成傷害的和。

這說明遊戲對造成的傷害和顯示傷害使用了不同的亂數產生器。造成的傷害在生成亂數時保證了亂數之和等於總生命值;而動畫顯示的傷害沒有考慮這個前提,只是基於基準值進行隨機。

2.顯示傷害可以看作造成傷害的情況

絕大部分情況下顯示傷害和造成傷害是基於同一個可以計算得出的基準值的。只要基準值相同,在計算傷害時就可以把顯示傷害看作是造成傷害。

如圖所示,對造成傷害和顯示傷害進行降冪排序,排除標紅的數值,所有隨機傷害都在一個範圍內均勻分佈。理論公式計算得出的基準值為1615*200*(1+0.47+0.2+0.2)*(1+0.5)*(1+0.5)*(1+0.4)*0.18/876=390.95,因此理論上亂數的區間為[351.86,430.05],由於遊戲在計算時會取整,取整後區間為[351,430]。顯然測試的所有傷害都處於這個區間內。

3.顯示傷害不能看作造成傷害的情況

由於遊戲的顯示傷害和造成傷害採用了不同的邏輯,出現了顯示傷害的基準值與造成傷害的基準值不一樣的情況。出現這種情況都是以造成傷害為准,畢竟扣除的生命值才是最實在的。

目前發現的情況有兩種,1是金棘獸的顯示傷害總是算上了生效的增傷;2是破眠的顯示傷害沒有算上生效的增傷。

4.如何確定基準值

嚴格來說確定基準值需要巨大的樣本數量,通過測試樣本的最大最小值來反推基準值。但是如圖所示,50%和40%的增傷加算和乘算的浮動區間不同,實際測試時通過判斷樣本的最大最小值是否超過了某區間的上下限來排除不符合的基準值,若樣本無法確定唯一基準值就繼續增加樣本數量直到能夠確定。

當顯示傷害和造成傷害是同一個基準值時,命中一次就會得到兩個亂數,測試樣本的最大最小值就能在顯示傷害和造成傷害的合集範圍內取。或者懶得扣計算器算造成傷害也可以直接記錄顯示傷害。


發佈留言

發佈留言必須填寫的電子郵件地址不會公開。