原神拆解5-戰(zhàn)斗公式
????????上一部分,我們從游戲中可以爬取到的數(shù)據(jù),簡單推測了以下原神設(shè)計屬性的思路那么接下來的工作就是把屬性帶入到公式當中,實際的戰(zhàn)斗中遵循著這樣的流程:
????????1.初始化角色的屬性,為角色狀態(tài)賦值。
????????2.判斷角色自身buff,debuff狀態(tài)修正,對屬性計算得到實時屬性。
????????3.將實時屬性帶入戰(zhàn)斗公式,計算出傷害值或者受傷害減免值。
????????4.判斷技能特點(技能還是普攻,單體還是群體),算出最終傷害值和作用范圍。
????????5.進行血量扣除,解除當前戰(zhàn)斗流程。
????????我們上一期實際上是對于第一,二步做了探討。本期對原神戰(zhàn)斗公式進行分析。

戰(zhàn)斗公式分析大綱
?????????本章節(jié)我計劃從下面的思路展開分析:
????????1.基礎(chǔ)戰(zhàn)斗公式的選擇
????????2.戰(zhàn)斗的初始值
????????3.戰(zhàn)斗流程

一.基礎(chǔ)戰(zhàn)斗公式的選擇
????????基礎(chǔ)的戰(zhàn)斗公式是由最基本的三個屬性對于傷害計算得到的傷害值而套用的公式,也就是僅有“攻擊力”,“防御力”,“血量”參與得到的戰(zhàn)斗公式雛形。業(yè)界常用的形式有減法公式,乘法公式,除法公式,公式的選擇依據(jù)場景各有不同,公式效果也各有千秋。原神選擇的公式是“乘法公式”。首先,讓我們看一下原神的戰(zhàn)斗公式的形式:
????????????????????
????????在這個公式中:L=攻擊方等級。
????????這就是一個典型的乘法公式,乘法公式的基本雛形為:
????
?????
????????其中a,b,c,X都是可以調(diào)整的參數(shù),可以是常數(shù)也可以是函數(shù)。那么把上述公式a,b,c=1,X=L*500,就得到了原神的基礎(chǔ)戰(zhàn)斗公式。那么為什么選擇的是乘法公式,系數(shù)又為什么這樣賦值,這些會在后面的環(huán)節(jié)和章節(jié)來說明,這部分屬于了對戰(zhàn)斗體驗的評價環(huán)節(jié),后面會對戰(zhàn)斗部分做一個總結(jié)的時候提起。
二.戰(zhàn)斗的初始值
????? ?在上面,我們得到了戰(zhàn)斗的基礎(chǔ)公式,那么,三個基礎(chǔ)屬性就可以被帶入計算了。那么這個賦值的依據(jù)是什么,這就涉及到我們的對于戰(zhàn)斗公式部分的初始值選擇問題。讓我們繼續(xù)看一下之前用到的的旅行者數(shù)據(jù)。

????? ?可以看到,初始值大概是極大值的1/10左右,也就是說整體的傷害提升幅度,其實是隨著升級。突破提升很大的。
????????初始值的規(guī)劃是為了優(yōu)化玩家的新手游戲體驗,將戰(zhàn)斗規(guī)定在一個理想的回合數(shù),讓玩家對戰(zhàn)斗有初步的認識,原神中的傷害聚合是使用的乘法,所以數(shù)值是比較大的,所以初始值選擇較小,為成長養(yǎng)成提供了空間。
三.戰(zhàn)斗流程
?????????原神在戰(zhàn)斗流程的選擇上,采用的是常用且好理解的規(guī)范流程模式,而沒有使用圓桌理論。兩者各有利弊吧。規(guī)范流程清晰易懂,邏輯性強,但是會稀釋計算過程中的一部分價值,比方說命中和暴擊這兩個概念,當玩家命中率和暴擊率均為50%的時候,根據(jù)規(guī)范流程,會先判定玩家一次攻擊是否命中,那么如果沒有命中也就沒有暴擊的概念,此時50%的暴擊率就被稀釋了,實際并沒有50%的收益,然而圓桌理論中會避免這個問題,但是整體的對于屬性的范圍要求很死,并且百分比屬性理應(yīng)要有100%,圓桌理論也會與這部分自然的人為理解相悖。那么說了這么多,原神到底采用了如何的戰(zhàn)斗流程呢。下面會根據(jù)原神的一次戰(zhàn)斗傷害計算展開分析,剖析戰(zhàn)斗的詳情,也是本章節(jié)的重頭戲。
1.流程描述
????? ? 整個流程為以下順序:
????????1.命中判斷
????????2.暴擊判斷
????????3.判斷攻擊屬性(物理,各種元素)。
????????4.計算技能/普攻倍率和元素反應(yīng)增幅倍率和傷害加成倍率,倍率乘以攻擊得到未減免傷害值。
????????5.暴擊修正
????? ? 6.計算防御力的傷害減免。
????????7.計算抗性減免
2.計算順序
????? ??后端在實現(xiàn)會根據(jù)上面的一個流程實現(xiàn),但是策劃在計算時候則應(yīng)該從基本戰(zhàn)斗公式入手展開:
????????首先將目光聚焦到基礎(chǔ)戰(zhàn)斗公式,也就是
????????
? ?????上面的公式放到全局情況其實就可以總結(jié)成下面的這個整體公式
????????我們從這個公式入手展開最終傷害的計算,
①:基礎(chǔ)公式
????? ?我們先將傳入的屬性攻擊力帶入到公式里,然后被攻擊單位的防御屬性,還有角色的等級帶入算出防御力對于傷害的減免。我們暫時將這部分分別放置,傳入的屬性攻擊力我們成為面板攻擊力,再保存起來(1-免傷率)=防御傷害效率。
②:倍率修正
????????現(xiàn)在面板攻擊力那一部分,我們首先對其乘“技能/普攻倍率”。該部分???????
????????到這一步為止,我們的上面的整體公式的未減免傷害部分=面板攻擊力*傷害倍率
③:屬性加成和其他加成判斷
? ? ? ??接下來,我們要讀取本次造成傷害的元素屬性,再讀取人物的對應(yīng)屬性的屬性傷害加成,和其他加成,此時把加成傷害匯總,進行加算,直接按照(1+x%)作用于前面的攻擊部分提升。(這里的傷害加成僅在滿足條件的時候才能生效。)
????????到這一步為止,我們的上面的整體公式的未減免傷害部分=面板攻擊力*傷害倍率*傷害加成
④:元素反應(yīng)提升
????????如果涉及到元素反應(yīng)(見元素反應(yīng)講解部分),還要計算元素反應(yīng)對于傷害的提升,其提升強度與“元素精通”息息相關(guān)。
????????至此為止,們的上面的整體公式的未減免傷害部分=面板攻擊力*傷害倍率*傷害加成*元素反應(yīng)提升。
⑤:暴擊提升
????? ? 如果本次傷害行為發(fā)生了暴擊,那就還需要計算暴擊傷害的提升,如果不觸發(fā)暴擊,則不計算暴擊傷害的提升。此時未減免傷害部分:
????????未暴擊:未減免傷害部分=面板攻擊力*傷害倍率*傷害加成*元素反應(yīng)提升。
????????暴擊:未減免傷害部分=面板攻擊力*傷害倍率*傷害加成*元素反應(yīng)提升*(1+暴擊傷害)。
????????可以得到期望未減免傷害部分=面板攻擊力*傷害倍率*傷害加成*元素反應(yīng)提升*(1+暴擊率*暴擊傷害)。
⑥:抗性傷害減免
????????傷害效率分為兩個部分,第一是我們上面說到的防御傷害效率。此外還有就是抗性傷害效率。游戲中每種傷害屬性都有對應(yīng)抗性(各種元素和物理傷害),抗性作為傷害類型的對抗屬性,是限制未減免傷害部分的除防御力以外的另一道保險。其公式遵循以下結(jié)論,
????????當抗性>75%
????????
? ? ????當0<抗性<75%
????????
????????游戲中存在一定的減抗性手段,所以抗性是可以<0的這時候抗性傷害效率會變成增幅傷害。
? ? ????
????????可以看到,0-75%其實是一個正常能接受的抗性范圍,離開這個范圍效果都會被稀釋。
⑦:最終傷害
????????至此為止,一次傷害輸出的所有傷害部分就計算完畢了,可以得到,最終傷害的公式為:
?
⑧:一個實例
????????下面,讓我們根據(jù)一個實際的例子,驗證一下上面的結(jié)論。
????????首先,我們看一下本次的主角---我的宵宮的面板信息。
????????






????????根據(jù)上面的信息,我們可以總結(jié)出如下的數(shù)據(jù)。

????????我們選擇的對手為85級的丘丘人,丘丘人的防御屬性可以參考下面:

????????那么我們計算一下發(fā)生暴擊的話,把數(shù)值帶入我們上面的公式可以得到未減免之前的傷害為:

????????傷害效率部分,把丘丘人的防御屬性數(shù)據(jù)帶入上面的公式,可以得到

????????將兩部分相乘,得到計算出的傷害值為:

????????下面在游戲里,我們實際考察一下

????????我們計算的結(jié)果為5707,游戲中實際造成了5709,這在誤差范圍內(nèi),因為游戲中的數(shù)據(jù)只顯示了百分比的小數(shù)點后一位,實際上這個誤差應(yīng)該就是顯示的浮點數(shù)位數(shù)不足導致的誤差。比如我們把計算過程中的傷害倍率一欄56.3%改成56.32%
????????

????????可以得到,上面的公式是沒問題的。

四.小結(jié)
????????這一章,我們簡單談了談戰(zhàn)斗公式的設(shè)計,策劃設(shè)計選擇了乘法公式,對于傷害類型不同則采用了對抗屬性的方法來修正平衡。那么,為什么采取這一系列選擇,公式設(shè)計成這樣,優(yōu)點在哪里?屬性和戰(zhàn)斗公式的聯(lián)系,是如何做到平衡的?這些內(nèi)容會在下期討論。