今天的分享來自華中科技大學熊碩老師的《遊戲學導論》課程。其中,關於遊戲數值一些基礎概念、原則、常用公式、以及一些實踐經驗,給予了我很大的啟發。在這裡,我並不打算做思維導圖或者類似大綱總結,僅節選部分簡單有趣或對我很有幫助的片段。
完整課程建議大家移步B站學習:【華中科技大學】《遊戲學導論》熊碩
熊碩:華中科技大學新聞與信息傳播學院 碩士生導師、講師;教育部大數據與國家傳播戰略實驗室副研究員。
數值是什麼
遊戲過程中的各種問題,可以找到一種定量的方法,讓我們的遊戲過程的設計更加豐富,對平衡性的把握更加準確。而數值策劃,就是利用各種數學工具和方法,創造一系列可以表達遊戲意圖的數據模型以控制遊戲節奏。
基本能力:數學基礎、縝密思維、對數字及其敏銳、直接和經驗、工具、耐心。
數學基礎:四則運算,冪函數、正態分佈、微積分、概率論。
戰鬥力
戰士vs野豬
- 戰士:血量 hx=100,每秒傷害 dptx=20
- 野豬:血量 hy=90,每秒傷害 dpty=10
戰鬥結果:hx/dpty - hy/dptx > 0,則戰士贏野豬
不等式可以變換為 hx * dptx - hy * dpty > 0
將 hx * dptx 記為 FCx,即戰鬥力(Fighting Capacity),可以用來衡量單位的戰鬥能力。
則戰鬥過程就是一個FC相減的過程,不僅可以用來判定勝負,還可以計算勝者剩餘的戰鬥力。
使用戰鬥力做簡單職業平衡
- 戰士:生命1000,輸出30,攻擊間隔3秒,FC=10000
- 刺客:生命500,輸出20,攻擊間隔1秒,FC=10000
多戰鬥單位戰鬥過程
一方X0個單位,一方有Y0個單位(X0 > Y0),殺傷力為p(單位時間內輸出傷害與單位生命的比值)
建立微分方程
dx/dt = -py
dy/dt = -px
兩式相乘可得 x*dx/dt = y*dy/dt
積分0-t,得到結論:X0平方-Y0平方 = xt平方 - yt平方
蘭徹斯特平方定律:在任何時候,雙方人數平方的差距不變。如果單個單位戰鬥力為FC,則對於n個單位,其戰鬥力與FC*n平方成正比。
案例:
- 足球場上被紅牌罰一人帶來的實力對比變化
- RTS/MOBA中微操和戰術的作用,局部以多打少
基於攻-防的戰鬥方式
傷害 = 攻方攻擊力 - 受擊方防禦力
則 FCx = hx * (attx - defy) * fx,FCy = hy * (atty - defx) * fy
案例:利用數值形成循環相剋
- 單位A:hp = 1000, att = 50, def = 0, f = 1
- 單位B:hp = 1000, att = 100, def = 20, f = 0.25
- 單位C:hp = 1000, att = 25, def = 0, f = 3
數字敏感
- 星際爭霸:狂熱者vs跳蟲,由於存在傷害溢出,狂熱者優先升1級攻擊,輸出效率不是提高12.5%而是提高50%。
- 三國殺:額外摸牌的武將血量應該<4或摸牌應付出代價,且有1血=2牌收益。
- 三國殺:周瑜英姿多摸一張牌 vs 甄姬洛神判定為黑則保留,誰的數學期望高?
- 劇本殺:6人本比5人本,遊戲時長和信息量不是增加20%,而是增加40%。
原則
- 數值需要在數學邏輯上是體系化(可以用公式描述),否則會造成系統崩潰和無限螺旋迭代。
- 數據需要在規則和公式體系內解釋和操作,避免數據系統落雪迭代崩壞(策劃vs運營)。
- 剛需元素儘可能採用線性模型,減少平衡性設置難度;非剛需元素可以採用非線性規則,性價比曲線採用冪函數,即越高級的東西性價比越低(但是提供額外附加值)。
- 謹慎使用小數據和乘法公式,容易變成數據崩壞的大風暴。
- 涉及概率問題,編程模擬比單純用數據攻擊計算效率高很多。
遊戲洗練度理論
Game Refinement Theory,將遊戲進程模擬成物理活動以描述其在大腦內的活動過程。用於宏觀把控遊戲節奏設置與可玩性評估。
遊戲複雜度 = B的D次方,B是可能移動的平均數(博弈策略集),D是平均遊戲長度。
洗練值 R(Refinement Value),成熟遊戲(象棋圍棋足球籃球)的R在固定範圍 0.073 - 0.078。