前段時間看到一套數值策劃筆試題,其他的都比較簡單,有一道稍有難度,題目如下:
假定遊戲裡玩家可以自由配置設定屬性點數到攻擊力,防禦力和生命值上去,攻擊間隔統一為1秒(為了計算過程簡化,不考慮取整因素,可以把傷害認為是持續傷害,總傷害嚴格等于攻擊時間乘以攻擊力),現在玩家擁有100點屬性點,怪物的攻擊力為10,防禦力為30,生命值為60,稱一場戰鬥過程中自身所損失的生命值與自身的總生命值的比值為損血百分比p,玩家希望殺死怪物後,損血百分比最小化(如果玩家無法戰勝怪物,那麼損血百分比就是100%),在以下兩種傷害結算公式的情形下,分别計算玩家如何配置設定屬性點數,能夠達到損血百分比p最小化這個目的(a>0)
情形一:最終傷害=攻擊方攻擊力-a*防禦方防禦力
情形二:最終傷害=攻擊方攻擊力/(1+a*防禦方防禦力)
讨論a取值的不同如何影響p?
我百度了一下,題目搜到很多,但卻沒有一份完整的解答過程,甚至連正确的答案都沒有。于是我就嘗試做了一下,這道題需要用到多元函數的條件極值和拉格朗日乘數法,先給答案:
情形一:減法公式
1.
時:給防禦配置設定0點,攻擊配置設定50+15a點,生命配置設定50-15a可使損血百分比p最小,此時p值為
2.
時:給防禦配置設定10/a點,攻擊配置設定50+15a-5/a點,生命配置設定50-15a-5/a點可使損血百分比p最小,此時p值為0
3.
時:玩家無論如何配置設定都無法戰勝怪物(怪也不一定能殺死玩家,但根據題意也算玩家失敗),此時p值為1
情形二:除法公式
1.
時:給防禦配置設定0點,攻擊和生命各配置設定50點,可使損血百分比p最小,此時p指為
2.
時:給防禦配置設定
點,攻擊和生命各配置設定
點,可使損血百分比p最小,此時p值為
總結:減法公式下,攻擊破不了對方的防就無法造成傷害。除法公式下則不會有不破防的問題,無論對方防禦多高都可以造成傷害。
當防禦的作用過低時,不加防,平均的加攻和生命是最優選擇
計算過程請點下面的連結:林培俊:用多元函數條件極值解一道經典數值策劃題(二)zhuanlan.zhihu.com