絡(luò)游戲數(shù)值學(xué)習(xí):屬性價(jià)值推導(dǎo)與戰(zhàn)斗平衡建模全解析)
簡(jiǎn)介這是一份網(wǎng)絡(luò)游戲數(shù)值學(xué)習(xí)的系統(tǒng)整理主要面向游戲數(shù)值策劃、戰(zhàn)斗策劃以及想深入理解RPG戰(zhàn)斗公式的開(kāi)發(fā)者。內(nèi)容從公式與模型、模型設(shè)定、模型特征參數(shù)講起強(qiáng)調(diào)公式因需求而存在并以屬性相同的兩個(gè)標(biāo)準(zhǔn)玩家相互平砍為基準(zhǔn)推導(dǎo)戰(zhàn)斗節(jié)奏隨后系統(tǒng)介紹屬性成長(zhǎng)曲線、屬性計(jì)算公式、護(hù)甲減傷、閃避/招架強(qiáng)度轉(zhuǎn)率、暴擊/命中強(qiáng)度轉(zhuǎn)率、攻擊強(qiáng)度轉(zhuǎn)DPS、EHP有效生命值和EDPS有效傷害值等關(guān)鍵內(nèi)容幫助讀者理解如何穩(wěn)定屬性價(jià)值、規(guī)避邊際效應(yīng)。資源為1個(gè)docx文檔共191KB目錄清晰緊湊便于按模塊查閱。目前已有246人學(xué)習(xí)/下載。通過(guò)該文檔可以掌握從模型抽象、參數(shù)賦值到公式系數(shù)推導(dǎo)的完整數(shù)值設(shè)計(jì)流程獲得各屬性預(yù)期值的推算示例與推導(dǎo)結(jié)果匯總對(duì)搭建戰(zhàn)斗數(shù)值框架、設(shè)計(jì)職業(yè)成長(zhǎng)曲線或入門(mén)數(shù)值平衡都有實(shí)用參考價(jià)值。1. 數(shù)值學(xué)習(xí)不止是公式一張屬性價(jià)值推導(dǎo)的知識(shí)地圖先說(shuō)個(gè)反直覺(jué)的結(jié)論一份好的《網(wǎng)絡(luò)游戲數(shù)值學(xué)習(xí)大全》核心往往不是那一堆加減乘除的公式而是“讓不同屬性的價(jià)值穩(wěn)定下來(lái)”這條主線。這份材料看著是在講護(hù)甲減傷、閃避招架、暴擊命中這些散落的公式實(shí)際上從頭到尾只有一條推導(dǎo)鏈條定義標(biāo)準(zhǔn)玩家抽象出 EHP 與 EDPS用“平砍節(jié)奏”作價(jià)值的統(tǒng)一標(biāo)尺再反解出公式系數(shù)。它把數(shù)值策劃的工作從“拍一個(gè)公式”升維成了“建一套模型”。適合正在做戰(zhàn)斗平衡、職業(yè)屬性規(guī)劃或者想系統(tǒng)復(fù)習(xí)屬性價(jià)值與強(qiáng)度轉(zhuǎn)率推導(dǎo)的人。讀完之后你會(huì)明白公式本身不是重點(diǎn)公式與戰(zhàn)斗模型是否自洽才是重點(diǎn)。2. 模型與參數(shù)標(biāo)準(zhǔn)玩家、七項(xiàng)屬性與特征參數(shù)表2.1 為什么必須先定義“標(biāo)準(zhǔn)玩家”和“平砍節(jié)奏”建模的第一步經(jīng)常被跳過(guò)也是最容易出分歧的一步到底以誰(shuí)為基準(zhǔn)這份筆記給出的答案是“標(biāo)準(zhǔn)玩家”——不是某個(gè)具體職業(yè)也不是某件裝備而是你所預(yù)期的玩家最可能處于的狀態(tài)??梢允侨殬I(yè)的綜合平均體也可以針對(duì)某個(gè)職業(yè)單獨(dú)設(shè)定一套標(biāo)準(zhǔn)模型取決于項(xiàng)目需求。定義了一致標(biāo)準(zhǔn)后續(xù)所有屬性的價(jià)值才有可比性。戰(zhàn)斗節(jié)奏被定義為“雙方站樁平砍分出勝負(fù)所需的時(shí)間”。這句話聽(tīng)起來(lái)很簡(jiǎn)單但它直接決定了屬性的價(jià)值方向攻擊類屬性縮短節(jié)奏防御類屬性延長(zhǎng)節(jié)奏。公式存在的目的就是讓屬性對(duì)平砍節(jié)奏的影響保持穩(wěn)定。換言之?dāng)?shù)值平衡不是追求某個(gè)單點(diǎn)傷害漂亮而是保證玩家對(duì)“我變強(qiáng)了多少”的感受是線性、可預(yù)期的。戰(zhàn)斗節(jié)奏是一切戰(zhàn)斗平衡的基礎(chǔ)后續(xù)想擴(kuò)展裝備、技能、寵物屬性都能從這一個(gè)錨點(diǎn)開(kāi)始。這里有個(gè)容易想偏的點(diǎn)平砍節(jié)奏是玩家最直觀的戰(zhàn)斗感受所以即使你的項(xiàng)目最終有很多技能和機(jī)制也應(yīng)該先以平砍為基準(zhǔn)做第一層平衡。很多團(tuán)隊(duì)上來(lái)就調(diào)技能調(diào)到最后發(fā)現(xiàn)基礎(chǔ)攻防一改所有技能數(shù)值白調(diào)。先定基礎(chǔ)攻擊與防御模型再往上面疊技能才不會(huì)把兩件事糊在一起。2.2 七項(xiàng)基本屬性與概率判定模型本模型為角色設(shè)定了七項(xiàng)基本屬性MHP生命上限、AP攻擊強(qiáng)度、CHP暴擊強(qiáng)度、HitP命中強(qiáng)度、AC護(hù)甲強(qiáng)度、DGP閃避強(qiáng)度、PRP招架強(qiáng)度。這七項(xiàng)被認(rèn)為是不可避免的戰(zhàn)斗屬性。力量、敏捷、耐力這類復(fù)合屬性為什么不直接參與建模因?yàn)樗鼈儾恢苯幼饔糜趹?zhàn)斗結(jié)果最終都要等價(jià)轉(zhuǎn)化成這七項(xiàng)中的某幾項(xiàng)所以建模時(shí)按轉(zhuǎn)化后的結(jié)果算即可。概率判定方式也需要提前選定這直接影響 EHP 與 EDPS 的計(jì)算公式。主流做法有兩種單次擲篩的“圓桌模型”和多次擲篩的獨(dú)立判定模型。圓桌模型在程序上略省效率真實(shí)發(fā)生幾率與面板吻合度高但 Table 溢出時(shí)策劃容易算錯(cuò)期望并且同一 Table 內(nèi)屬性的價(jià)值會(huì)互相牽連屬性價(jià)值難以完全獨(dú)立穩(wěn)定。多次擲篩則相反概率分開(kāi)判定更直觀但面板值與實(shí)際發(fā)生率的對(duì)應(yīng)關(guān)系需要仔細(xì)核算。本筆記按圓桌模型推導(dǎo)也就是單次擲篩決定所有率同時(shí)假設(shè)所有率之和不溢出這點(diǎn)在后面看公式時(shí)非常重要。2.3 模型特征參數(shù)拍數(shù)流程與參數(shù)表模型特征參數(shù)是你對(duì)模型的基本需求是拍出來(lái)的不是算出來(lái)的。拍數(shù)流程有固定的五步先分析模型總結(jié)你認(rèn)為能代表模型特征的數(shù)據(jù)確認(rèn)這些參數(shù)不會(huì)經(jīng)常變化并且相互之間沒(méi)有邏輯關(guān)系按需求給參數(shù)賦值拍完之后還要回頭檢查實(shí)際游戲環(huán)境與參數(shù)是否匹配最后把參數(shù)集中到一張表里讓其他計(jì)算都引用它。第五點(diǎn)是長(zhǎng)期維護(hù)的命門(mén)后面單獨(dú)展開(kāi)。下面是這份筆記中拍出的一組示例參數(shù)。注意這些數(shù)值只是“為了給推導(dǎo)一個(gè)起點(diǎn)”不能直接抄到別的項(xiàng)目里當(dāng)標(biāo)準(zhǔn)。參數(shù)設(shè)定值備注總護(hù)甲減傷比例35%包括 AC 轉(zhuǎn)化部分總閃避率15%其中其它閃避率 5%總招架率15%其中其它招架率 5%總暴擊率25%其中其它暴擊率 10%總命中率96%其中其它命中率 90%f(lvl) 每增加 1 增長(zhǎng)的 MHP100以此控制等級(jí)成長(zhǎng)強(qiáng)度攻強(qiáng)轉(zhuǎn)化 DPS 占總 DPS50%另一部分由武器 DPS 提供等級(jí)偏移量 B4用于平滑低等級(jí)屬性平砍擊殺時(shí)間20 秒預(yù)期的標(biāo)準(zhǔn)戰(zhàn)斗節(jié)奏全技能后 EDPS 提高100%打擊能力翻倍全技能后 EHP 提高50%抗打擊能力提升一半暴擊價(jià)值 / 命中價(jià)值1 / 1每單位收益相等閃避價(jià)值 / 招架價(jià)值1 / 1.25招架定價(jià)更高最值得留意的是“其它閃避率”與“其它招架率”天賦、Buff、初始屬性帶來(lái)的那部分率不參與強(qiáng)度轉(zhuǎn)化所以你在反推強(qiáng)度轉(zhuǎn)率公式系數(shù)時(shí)必須先把這部分扣除。比如總閃避率 15%其它閃避率 5%那么由 DGP 轉(zhuǎn)化的閃避率實(shí)際只有 10%。2.4 技能擴(kuò)展屬性平衡與技能平衡必須分開(kāi)模型還可以擴(kuò)展來(lái)描述技能的影響。比如假設(shè)技能全開(kāi)時(shí)角色打擊能力提高 1 倍、抗打擊能力提高 0.5 倍那么全技能對(duì)轟狀態(tài)下的戰(zhàn)斗節(jié)奏就是 20 秒除以 2 再乘 1.5也就是 15 秒。這個(gè)擴(kuò)展只是證明“技能數(shù)值也能被納入節(jié)奏預(yù)期”但作者反復(fù)強(qiáng)調(diào)了一件事技能平衡與戰(zhàn)斗模型平衡請(qǐng)務(wù)必分開(kāi)做不要妄想在屬性平衡模型中解決技能平衡問(wèn)題。為什么這么強(qiáng)調(diào)因?yàn)閷傩阅P徒鉀Q的是“角色裸體互相平砍”的基礎(chǔ)攻防價(jià)值技能則是玩家主動(dòng)選擇、有 CD、有覆蓋率的東西。如果把技能效果算進(jìn)基礎(chǔ)模型會(huì)得到一套極其復(fù)雜且難以維護(hù)的參數(shù)。屬性模型負(fù)責(zé)地基技能模型負(fù)責(zé)樓上的房間兩者用固定的擴(kuò)展系數(shù)銜接才是可持續(xù)的做法。3. 核心公式族成長(zhǎng)曲線、強(qiáng)度轉(zhuǎn)率與攻防計(jì)算3.1 屬性成長(zhǎng)曲線 f(lvl) 與屬性計(jì)算公式屬性成長(zhǎng)曲線是整套公式的地基。本模型里邊定義 f(lvl)levelBB 取 4。它的作用不只是讓屬性隨等級(jí)變高更重要的是讓公式里的分母隨等級(jí)增長(zhǎng)從而實(shí)現(xiàn)等級(jí)削減效果。B 的物理意義很直觀當(dāng) B0 時(shí)1 級(jí) 100 生命、2 級(jí) 200、3 級(jí) 300屬性與等級(jí)嚴(yán)格成正比B4 時(shí)1 級(jí)角色直接有相當(dāng)于 5 級(jí)的屬性量初始數(shù)值更好看。實(shí)際項(xiàng)目里不要照抄這條公式。它的結(jié)構(gòu)是線性的但角色能力的成長(zhǎng)幅度未必是線性。你可以把 f(lvl) 定義為分段線性函數(shù)、非線性多項(xiàng)式甚至直接定義成一張“等級(jí)→函數(shù)值”的查表這都不影響平砍節(jié)奏前提是后續(xù)所有公式調(diào)用的是同一個(gè) f(lvl)。某經(jīng)典 MMO 就是拿兩個(gè)版本分段線性函數(shù)拼出來(lái)的成長(zhǎng)曲線因?yàn)椴煌燃?jí)段落的屬性膨脹速度完全不同這種“土辦法”反而最可控。梳理下來(lái)會(huì)發(fā)現(xiàn)f(lvl) 的真正價(jià)值不在數(shù)學(xué)形式而在它作為“全模型統(tǒng)一引用”的等級(jí)錨點(diǎn)。屬性計(jì)算公式緊貼著 f(lvl) 走角色在指定等級(jí)下的任意屬性預(yù)期值本質(zhì)上就是“f(lvl) 每增加 1 時(shí)的屬性增量”乘以 f(lvl)。這個(gè)增量對(duì)應(yīng)特征參數(shù)表里的“每提升 1 級(jí)增長(zhǎng) 100 MHP”之類設(shè)定。有了統(tǒng)一格式后面在護(hù)甲減傷、閃避招架、暴擊命中里出現(xiàn)的 A 系數(shù)才可以全部消去等級(jí)影響。3.2 護(hù)甲減傷公式C1 才是線性化的關(guān)鍵護(hù)甲減傷公式的結(jié)構(gòu)可以寫(xiě)成下面這種形式強(qiáng)度值 x 在分子與分母同時(shí)出現(xiàn)def armor_reduction(ac, level, A65, B4): f level B # 調(diào)用統(tǒng)一的等級(jí)成長(zhǎng)曲線 dr ac / (ac A * f) # 護(hù)甲減傷率C 已隱含為 1 return dr參數(shù)說(shuō)明A 被稱為“等級(jí)削減系數(shù)”作用是讓角色等級(jí)越高時(shí)轉(zhuǎn)化出同樣減傷率所需的護(hù)甲強(qiáng)度越大同時(shí) A 也是護(hù)甲減傷公式的尺度系數(shù)。注意這里 C 直接取 1這不是隨便拍的而是為了讓減傷率代入 EHP 后分母里的 AC 能被消掉最終推出“EHP 與 AC 成線性關(guān)系”。換句話說(shuō)只有這種結(jié)構(gòu)才能保證每一點(diǎn) AC 提升固定量的 EHP不再受當(dāng)前 AC 值影響。在給定“每等級(jí)成長(zhǎng) 100HP、總減傷比例 35%”的條件下可以解出 A100×(1?35%)65。再代入等級(jí) 60 與 B4 驗(yàn)證MHP(604)×1006400期望護(hù)甲 AC0.35×65×64÷0.652240。這個(gè)例子能幫你快速跑通一遍“由總減傷反推屬性量”的流程下次換參數(shù)時(shí)只要替換 A、B、減傷預(yù)期值結(jié)果立刻更新。3.3 閃避與招架強(qiáng)度轉(zhuǎn)率C0.92647 背后的推導(dǎo)閃避、招架強(qiáng)度轉(zhuǎn)率公式與護(hù)甲減傷同族也帶有等級(jí)削減的分母。推導(dǎo)時(shí)先列出方程比如總閃避率 15% 由“其它閃避率 5% DGP 轉(zhuǎn)化閃避率 10%”組成。要讓 EHP 對(duì) DGP 保持線性C 需要滿足一個(gè)特定條件。解出來(lái)的結(jié)果是 C0.92647這個(gè)數(shù)字不是拍出來(lái)的而是從“EHP 與 DGP 線性”約束下反推出來(lái)的。細(xì)看某經(jīng)典 MMO 的招架閃避削減公式會(huì)發(fā)現(xiàn)那些看似奇怪的系數(shù)其實(shí)就是這類推導(dǎo)解出來(lái)的不是故意設(shè)計(jì)得難看。作者還提到過(guò)一個(gè)現(xiàn)象暴雪系游戲里招架公式的 C 值明顯偏小導(dǎo)致招架價(jià)值大打折扣原因不明。這給我們的啟發(fā)是C 是強(qiáng)度轉(zhuǎn)率的效率上限也是該屬性的價(jià)值標(biāo)桿C 值太小就算面板率來(lái)回調(diào)實(shí)際收益也填不回來(lái)所以每次抄公式前先確認(rèn) C 是否符合你的屬性價(jià)值預(yù)期。3.4 暴擊與命中強(qiáng)度轉(zhuǎn)率分母沒(méi)有 x本質(zhì)是線性暴擊、命中強(qiáng)度轉(zhuǎn)率的公式結(jié)構(gòu)與護(hù)甲閃避完全不同關(guān)鍵差異在分母里沒(méi)有 x公式族公式形狀與強(qiáng)度的關(guān)系主要作用護(hù)甲減傷x / (x A·f)非線性收益遞減影響 EHP 分母閃避/招架C·x / (A·f x)非線性收益遞減影響 EHP 分母暴擊/命中k·x / (A·f)線性影響 EDPS攻強(qiáng)轉(zhuǎn) DPS與 AP 成正比線性影響 EDPS暴擊率與命中率公式里沒(méi)有“?x”意味著強(qiáng)度與率之間保持直線關(guān)系轉(zhuǎn)率效率不受強(qiáng)度值本身的削減影響。為什么要區(qū)別處理并不是因?yàn)椤氨裘惺枪魧傩?、護(hù)甲閃避是防御屬性”而是因?yàn)檫@些自變量在 EHP 或 EDPS 公式里的位置不同。如果暴擊率出現(xiàn)在 EDPS 的某個(gè)乘積項(xiàng)里為了讓 EDPS 對(duì)暴擊強(qiáng)度保持線性就需要調(diào)整公式形狀與它是不是攻擊屬性沒(méi)有必然聯(lián)系。這是最容易想岔的地方。攻強(qiáng)轉(zhuǎn) DPS 公式就簡(jiǎn)單得多DPS 與 EDPS 直接成正比所以讓 AP 與 EDPS 成正比即可。但攻擊強(qiáng)度只占總 DPS 的 50%另一半來(lái)自武器 DPS因此推導(dǎo)時(shí)要分清楚你在反推 AP 屬性量時(shí)只約束“攻強(qiáng)轉(zhuǎn)化的那部分 DPS”不能拿總 DPS 去硬套否則武器提升后屬性價(jià)值會(huì)偏離預(yù)期。4. 推導(dǎo)主線EHP/EDPS 的線性化、預(yù)期值與實(shí)際價(jià)值4.1 EHP 與 EDPS所有屬性的價(jià)值載體EHP 叫有效生命值也叫抗打擊能力是所有防御類屬性的綜合體現(xiàn)EDPS 叫有效傷害值是攻擊類屬性的綜合體現(xiàn)。它們的價(jià)值在于把“平砍節(jié)奏”上升為一個(gè)可計(jì)算的比值平砍節(jié)奏 EHP / EDPS。每一條屬性要么通過(guò)提升 EHP 延長(zhǎng)戰(zhàn)斗時(shí)間要么通過(guò)提升 EDPS 縮短戰(zhàn)斗時(shí)間兩者最終都能換算成同一套價(jià)值體系。EHP 的典型結(jié)構(gòu)為def ehp(mhp, dr, dodge, parry): # 減傷、閃避、招架三部分相互獨(dú)立時(shí)EHP 是乘法疊加 ehp_value mhp / ((1 - dr) * (1 - dodge) * (1 - parry)) return ehp_value參數(shù)說(shuō)明MHP 是生命上限D(zhuǎn)R、Dodge、Parry 分別是總護(hù)甲減傷率、總閃避率、總招架率。只要這些率來(lái)自不同的獨(dú)立事件EHP 就用連乘形式計(jì)算。這也是為什么“其它閃避率”“其它招架率”必須單獨(dú)列出——它們雖然沒(méi)有強(qiáng)度轉(zhuǎn)化但提升的絕對(duì)是真實(shí)的 EHP價(jià)值一點(diǎn)也不小。這套體系的推導(dǎo)主線是首先保證屬性價(jià)值穩(wěn)定也就是 EHP 與 EDPS 分別對(duì)引起它們變化的屬性成線性關(guān)系然后“設(shè)定每單位屬性價(jià)值相等”得到 EHP 與 EDPS 對(duì)所有屬性自變量的導(dǎo)數(shù)相等兩個(gè)推論聯(lián)合起來(lái)就能建立方程組代進(jìn)特征參數(shù)后解出戰(zhàn)斗公式參數(shù)。這份筆記最值錢(qián)的地方就在這條從“價(jià)值相等”走向“方程組”的路線而不是某個(gè)孤立公式。4.2 邊際效應(yīng)為什么減法公式會(huì)被放棄所謂邊際效應(yīng)是指某屬性數(shù)值越大時(shí)價(jià)值越大導(dǎo)致玩家最優(yōu)策略變成“要么往死里堆要么干脆一點(diǎn)不堆”。用攻減防來(lái)算傷害天然就會(huì)走向這條死路傳統(tǒng)閃避減傷模型也會(huì)有同樣問(wèn)題。這套模型里所有公式的結(jié)構(gòu)設(shè)計(jì)本質(zhì)上都是為消滅邊際效應(yīng)而服務(wù)的要么讓 EHP 對(duì)屬性線性要么讓 EDPS 對(duì)屬性線性使屬性價(jià)值不隨自身數(shù)值變化而漂移。滿足線性關(guān)系后再做“每單位屬性價(jià)值相等”的設(shè)定從方便玩家理解的角度把 MHP、AP、CHP、HitP、AC、DGP、PRP 的每單位價(jià)值定為相等只有招架因?yàn)槟P吞卣鞅欢?1.25。EHP 與 EDPS 對(duì)任意屬性自變量的導(dǎo)數(shù)相等這組方程直接約束了各個(gè)公式的系數(shù)。如果哪個(gè)系數(shù)滿足不了這個(gè)約束就說(shuō)明該屬性存在邊際效應(yīng)最好回頭改公式結(jié)構(gòu)。4.3 各屬性預(yù)期值的推算與拆分有了強(qiáng)度轉(zhuǎn)率公式和特征參數(shù)就能反推標(biāo)準(zhǔn)模型下各個(gè)屬性的預(yù)期值。拿閃避舉例總閃避率 15%其它閃避率 5%需要由 DGP 轉(zhuǎn)化的部分就是 10%。于是在已知轉(zhuǎn)化公式的前提下解出閃避強(qiáng)度的“每 f(lvl) 增量”即可。護(hù)甲、招架、暴擊、命中同理只要把各個(gè)率拆清了推導(dǎo)就只剩解一個(gè)方程。注意推導(dǎo)結(jié)果是“標(biāo)準(zhǔn)模型下的屬性預(yù)期值”它給出的是一個(gè)總量不是最終分配到裝備、強(qiáng)化、寶石、寵物上的數(shù)值。很多人在這一步就停了忙著去核對(duì)某個(gè)職業(yè)的具體裝備能不能達(dá)到預(yù)期。作者強(qiáng)調(diào)屬性總量的推算還只是規(guī)劃層面的結(jié)果接下來(lái)要把總量拆到各個(gè)養(yǎng)成系統(tǒng)上區(qū)分“裝備占多少價(jià)值、強(qiáng)化占多少價(jià)值、寶石占多少價(jià)值”讓角色實(shí)際狀態(tài)與模型預(yù)期盡量貼合。所以復(fù)習(xí)時(shí)至少要能回答預(yù)期值是誰(shuí)的預(yù)期值拆分到各系統(tǒng)之后還對(duì)不對(duì)得上。4.4 脫離標(biāo)準(zhǔn)模型后以閃避強(qiáng)度為例標(biāo)準(zhǔn)模型下為屬性賦值比較舒服因?yàn)橹跋舴帜傅牡仁匠闪?。但玩家并不?huì)按標(biāo)準(zhǔn)模型穿裝備一旦實(shí)際屬性偏離預(yù)期之前推好的價(jià)值關(guān)系就不一定成立。這時(shí)可以通過(guò)對(duì) EHP 或 EDPS 求導(dǎo)得到“實(shí)際價(jià)值表達(dá)式”觀察屬性在真實(shí)面板下的邊際收益。比如以閃避強(qiáng)度 DGP 為例固定價(jià)值(EHP)1由 EHP 對(duì) DGP 求導(dǎo)可以得到閃避強(qiáng)度的價(jià)值表達(dá)式。結(jié)果是閃避強(qiáng)度堆得越高它帶來(lái)的實(shí)際價(jià)值越低收益逐步衰減。這不算壞現(xiàn)象作者真正想避免的是“越堆某個(gè)屬性玩家越強(qiáng)到失控”。實(shí)際上玩家會(huì)在收益下降與其它屬性收益上升之間自動(dòng)找到平衡點(diǎn)最終穩(wěn)定在一個(gè)合理的屬性配比上。屬性價(jià)值平衡的主要目的是給輕度玩家提供一個(gè)基本靠譜的屬性選擇標(biāo)準(zhǔn)重度核心玩家本來(lái)就會(huì)按自己的模型找最優(yōu)解。所以查漏補(bǔ)缺時(shí)可以養(yǎng)成一個(gè)習(xí)慣每當(dāng)某個(gè)屬性出現(xiàn)“收益越來(lái)越小”的反饋不要急著責(zé)怪公式寫(xiě)錯(cuò)先算一算它當(dāng)前值對(duì)應(yīng)的導(dǎo)數(shù)是否還在合理區(qū)間。只要價(jià)值隨自身屬性遞增而遞減說(shuō)明系統(tǒng)存在自平衡機(jī)制。5. 易漏易錯(cuò)點(diǎn)從建模習(xí)慣到公式推導(dǎo)的五處雷區(qū)5.1 概率判定模型沒(méi)選好就開(kāi)寫(xiě)公式最常漏在第一步直接用某個(gè)已知游戲的公式結(jié)構(gòu)卻不先聲明自己的概率判定是圓桌還是多次擲篩。兩種模型下 EHP、EDPS 的計(jì)算公式有差異率與率之間的價(jià)值關(guān)聯(lián)也不同。圓桌模型使用單次擲篩決定所有概率面板數(shù)值與實(shí)際發(fā)生幾率高度吻合策劃算期望時(shí)卻容易因?yàn)?Table 溢出而出錯(cuò)多次擲篩下概率各自獨(dú)立算起來(lái)更直觀但率之間的價(jià)值關(guān)系也存在細(xì)微不同。不先定這個(gè)前提推導(dǎo)到一半就會(huì)出現(xiàn)“率看著對(duì)期望卻對(duì)不上”的尷尬。為什么漏因?yàn)楣介L(zhǎng)得很相似多數(shù)人只看見(jiàn)“率 強(qiáng)度 / 某個(gè)分母”不關(guān)心底層事件判定方式。怎么補(bǔ)動(dòng)筆之前先寫(xiě)一行模型設(shè)定“本模型使用單次擲篩所有率之和不溢出”后續(xù)所有公式都基于這個(gè)前提換前提就換公式。5.2 公式參數(shù)直接寫(xiě)死在計(jì)算頁(yè)里這是維護(hù)階段的頭號(hào)血淚教訓(xùn)。健康的數(shù)值表里計(jì)算頁(yè)的所有公式中不應(yīng)該存在數(shù)字除了一以外每個(gè)參數(shù)都應(yīng)對(duì)其它單元格的引用。模型特征參數(shù)要集中定義在一張表單里其它計(jì)算頁(yè)都去引用它。最終目標(biāo)是模型建立完后你唯一的維護(hù)動(dòng)作就是調(diào)整特征參數(shù)表而不是幾十頁(yè)公式全部重翻。為什么漏因?yàn)榈谝淮谓r(shí)貪圖省事覺(jué)得“這個(gè)值以后不會(huì)變”。結(jié)果項(xiàng)目上線后需求一變每個(gè)公式里的魔法數(shù)字都得手動(dòng)找一遍改錯(cuò)一個(gè)還看不出是哪引錯(cuò)了。怎么補(bǔ)給自己立個(gè)規(guī)矩任何數(shù)字進(jìn)公式前先問(wèn)一句它屬于模型特征參數(shù)嗎是的話進(jìn)參數(shù)表不是的話它必須能從某個(gè)特征參數(shù)推導(dǎo)出來(lái)。5.3 暴擊命中用非線性表、防御屬性用線性表減速類公式和暴擊命中類公式長(zhǎng)得不一樣很容易記串有人把暴擊命中也套進(jìn)帶 x 分母的公式導(dǎo)致暴擊率越高收益遞減又或者給護(hù)甲閃避用了線性轉(zhuǎn)率結(jié)果減傷屬性價(jià)值隨強(qiáng)度爆炸增長(zhǎng)。正確規(guī)律是護(hù)甲、閃避、招架公式在分母里保留 x收益遞減暴擊、命中公式分母不含 x與強(qiáng)度保持線性關(guān)系。原因在于自變量在 EHP 公式和 EDPS 公式里的位置不同與“它是攻擊屬性還是防御屬性”無(wú)關(guān)。為什么漏因?yàn)楣纛悓傩越?jīng)常被歸為一類想當(dāng)然覺(jué)得“暴擊和命中都是攻擊應(yīng)該同構(gòu)”。怎么補(bǔ)每次推公式時(shí)把屬性放回它所在的 EHP/EDPS 表達(dá)式里看它出現(xiàn)在分母還是分子再?zèng)Q定公式形狀。拿不準(zhǔn)時(shí)就寫(xiě)一個(gè)方程讓 EHP 對(duì)屬性偏導(dǎo)數(shù)等于常數(shù)解出來(lái)是什么樣就什么樣。5.4 把標(biāo)準(zhǔn)模型當(dāng)成玩家真實(shí)狀態(tài)來(lái)校驗(yàn)標(biāo)準(zhǔn)模型是一個(gè)期望基準(zhǔn)不是對(duì)每個(gè)玩家的精確預(yù)測(cè)?;跇?biāo)準(zhǔn)模型推算出來(lái)的護(hù)甲值、閃避率在設(shè)計(jì)裝備、天賦、Buff 時(shí)是目標(biāo)參考但玩家實(shí)際屬性不可能完全貼合成一。裝備檔次整體偏低或偏高、玩家刻意堆某一屬性而放棄另一屬性都會(huì)造成與模型不符。小幅偏移一般不影響整體平衡大幅刻意堆疊時(shí)模型給出的價(jià)值排序會(huì)失真。最難受的是有人拿某職業(yè)極限配裝的數(shù)據(jù)來(lái)找你“你看這公式不準(zhǔn)”。要如何補(bǔ)先問(wèn)這個(gè)數(shù)據(jù)來(lái)自哪種概率模型再問(wèn)他當(dāng)前屬性是否在標(biāo)準(zhǔn)模型附近。只要誤差來(lái)自“偏離標(biāo)準(zhǔn)模型”而不是“公式不自洽”那就不是公式的問(wèn)題而是配裝偏了。真正不能接受的是“越堆某一屬性玩家越強(qiáng)”需要在設(shè)計(jì)裝備時(shí)就把高端裝備的屬性結(jié)構(gòu)鎖死讓玩家怎么穿都穿不出極端值。5.5 參數(shù)之間存在相關(guān)性直接拍兩個(gè)值推導(dǎo)公式系數(shù)時(shí)如果公式里有兩個(gè)或兩個(gè)以上參數(shù)必須確認(rèn)參數(shù)之間是否存在相關(guān)性。比如等級(jí)偏移量 B 和成長(zhǎng)曲線 f(lvl) 是強(qiáng)相關(guān)的B 變了f(lvl) 的絕對(duì)量就變了所有依賴 f(lvl) 的 A 系數(shù)都得跟著變。如果你同時(shí)拍兩個(gè)參數(shù)很容易出現(xiàn)二者互相抵消的隱藏情況表面看起來(lái)公式?jīng)]問(wèn)題換一個(gè)等級(jí)段就崩。為什么漏因?yàn)槿丝偸莾A向于先拍一個(gè)自己覺(jué)得合理的值再拍另一個(gè)讓結(jié)果好看的數(shù)而忽略它們共享了同一個(gè) f(lvl)。怎么補(bǔ)建立公式時(shí)優(yōu)先找一個(gè)參數(shù)用方程推另一個(gè)參數(shù)保持引用特征參數(shù)表如果無(wú)法避免兩個(gè)待定參數(shù)就先把其中一個(gè)寫(xiě)成另一個(gè)的表達(dá)式再代入方程。一句話能推出來(lái)的就不要拍拍了的要確認(rèn)它不和你已有的參數(shù)打架。6. 復(fù)習(xí)清單一套能防翻車的推導(dǎo)自檢順序把整份筆記壓縮成一次復(fù)習(xí)動(dòng)作可以按下面這個(gè)自檢順序走一遍定標(biāo)準(zhǔn)玩家你的標(biāo)準(zhǔn)玩家是全職業(yè)平均體還是某個(gè)職業(yè)模型戰(zhàn)斗節(jié)奏預(yù)期是多少秒定概率判定模型圓桌還是多次擲篩所有率之和會(huì)不會(huì)溢出列出七項(xiàng)基本屬性確認(rèn)沒(méi)有缺項(xiàng)復(fù)合屬性是否已等價(jià)轉(zhuǎn)化。拍模型特征參數(shù)總減傷、總閃避、總招架、總暴擊、總命中以及“其它率”各是多少招架價(jià)值是否單獨(dú)設(shè)定。抽象 EHP 與 EDPS先寫(xiě)兩個(gè)表達(dá)式確認(rèn)所有屬性都能放進(jìn)這兩個(gè)方塊之一。驗(yàn)證線性化條件對(duì)每個(gè)屬性求導(dǎo)看 EHP 或 EDPS 是否對(duì)該屬性線性如果不線性回頭改公式結(jié)構(gòu)而不是硬調(diào)系數(shù)。反解公式參數(shù)每單位屬性價(jià)值相等用方程組解 A、C能用公式推的不要拍。推算標(biāo)準(zhǔn)模型下的屬性預(yù)期值再把這些值拆到裝備、強(qiáng)化、寶石等系統(tǒng)。校驗(yàn)實(shí)際價(jià)值代入一兩個(gè)極端配裝樣本算導(dǎo)數(shù)確認(rèn)邊際收益沒(méi)有惡性膨脹。我從第一次帶項(xiàng)目開(kāi)始吃過(guò)不少虧最重的一次就是公式里寫(xiě)死了數(shù)值上線前調(diào)平衡翻了幾頁(yè)表都找不到問(wèn)題在哪。從那以后我每次建模都強(qiáng)制走一遍這個(gè)清單尤其是“驗(yàn)證線性化條件”和“參數(shù)進(jìn)特征參數(shù)表”這兩步絕對(duì)不跳。這套《網(wǎng)絡(luò)游戲數(shù)值學(xué)習(xí)大全》整理的順序本質(zhì)上就是一套可以反復(fù)回查的推導(dǎo)流程復(fù)習(xí)時(shí)對(duì)著它一項(xiàng)一項(xiàng)打勾比單記公式要穩(wěn)得多。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取