數學建模在遊戲數值策劃工作中的有哪些應用? | 知乎問答精選

 

A-A+

數學建模在遊戲數值策劃工作中的有哪些應用?

2016年06月05日 知乎問答精選 暫無評論 閱讀 87 ℃ 次

【胡擺平的回答(47票)】:

-

思前想後,建模前的大原則還是要寫在前面:

1,不管是在大公司還是在小公司,都要知道會有更好的工作方法模型,你現在用的並不是最好或唯一的。建立自己的學識和思維體系和方法並時常修正它,而不是拿著Q群裡拿來的知識碎片沾沾自喜,也不是讓奇葩公司扭曲了你的價值觀。

2,不同公司對同一過程和對像定義(包括稱謂)可能是不同的,在討論前先溝通定義,避免雞同鴨講,因為這個發生矛盾更是愚蠢的。

3,MATLAB,VBA,C#等都是工具,數據規模,複雜程度或精細程度到達一定水平後自然會用到,用到之前就應開始學習,版本高速迭代的時候你不會有這個時間。直接說這些東西「完全沒用」「不要去學」的人離他們遠一點。

4,想要單從一張Excel表反向工程就學會建模的,不但學不會什麼,還有很大可能會誤入歧途。因為有大量的原生數據不體現在數值表上,哪怕你把你認為所有的數值根據都註釋在了表裡。

5,沒有任何數值可以是拍腦袋來的,每個數值寫上去必須有數值根據。你甚至可以找一個看起來很扯淡的數值根據附會上去,找到更合適的再替換它,但不可以沒有數值根據。

6,如果你覺得你的數值根據是有問題的,那麼想辦法提醒自己找到更好的並將其替換掉,而不是犯懶把它放在那裡,等它出了問題再去管它。念念不忘,必有迴響。

7,數值從來不是孤立的,它是從遊戲感受量化抽像而來,是遊戲感受的可視化體現。在感受反饋不好且可能產生不良後果的情況下,不過多強調數值在表上的合理性。

8,學數學不僅僅是為了學習算法,更多的是訓練抽像邏輯思維,將問題迅速歸入已有模型並迅速解決之。這種方法的應用不局限於遊戲領域。數值策劃是掌握遊戲骨架脈絡的人,認同「數學學到高中就夠當數值策劃了」說明你的短視不適合做數值策劃。

以下流程均為個人總結,僅供參考

數值策劃領域的數值建模,作用是控制戰鬥平衡,解決「A為什麼能戰勝B」的問題。

以下舉例的模型變化過程以RPG遊戲為例,數值製作用拆分法

1,最小化模型:

A血/B攻 = B血/A攻 = 戰鬥時長

血 = 有效生命

攻 = 傷害輸出

遊戲中的戰鬥是真實戰鬥的抽像,而這個模型抽像的是兩個壯漢互抽嘴巴看誰先倒

下面拆分出來的東西原像是什麼你們就自己腦補吧。

但需要注意的是,如果你腦補不出來一個合理的原像,則你的屬性設置可能有問題。

2,拆分的定值

有效生命值,除了HP之外可以拆分成其他形式。

例如每次打擊時起效的免傷點數,或換了名字的免傷點數(例如PVP專有免傷點數,例如護甲,韌性等換了名字的免傷)

也可以換成非技能層面的傷害吸收,HOT等。

傷害輸出可以拆分成攻擊以外的其他形式,例如攻擊點數加成或換了名字的攻擊(同上形式)

或者換成非技能層面的DOT,掉血光環都好。

設置屬性時需要注意,最簡便的方式是做性質作用上的一一對應。

例如攻擊和免傷都是每個戰鬥時長起效的屬性,那麼這兩個可以配對。

而戰鬥時長越長,攻擊的收益越高,而HP的收益不變,則這兩個不能配對。

如果大局觀好的人可以做2V1甚至3V2的對應,只要它在模型上是平的。

為保險也可以加上數值反向減免,例如陽痿光環(對方攻擊下降)什麼的(注意是數值層面而非技能機制)。

2,拆分百分比

百分比的拆分與定值大致相同。

攻擊拆成攻擊百分比,傷害百分比,攻速什麼的。

防禦拆成防禦百分比,免傷百分比什麼的。

配對原則見定值拆分。

為了保險,屬性可以做反向減免,例如可以做出暴擊(爆發傷害),格擋(爆發防禦)和抗暴(anti-暴擊)

3,工具製作流程

用MATLAB模擬以上拆分後單位的戰鬥流程,屬性可自行輸入。

由於所有值均為定值,所以當模擬雙方數值確定則戰鬥結果確定(先後手的問題放後面說)

注意這裡寫的是函數,因為後面要用到多次模擬。

4,概率屬性拆分

以有效生命和傷害輸出兩大方向拆分出概率數值

有效生命拆出閃避,格擋,偏斜,招架等

有效傷害拆出暴擊,重擊,風怒,亂舞等

配對原則見定值拆分部分。

5,設定概率計算優先級,並確定隨機算法,是堆棧圓桌,相鄰互斥還是相鄰互吃等。

6,把概率屬性寫成函數放進MATLAB腳本,並多次執行戰鬥過程,觀察概率之間的相互影響

比如你測出來的「兩角色實力相差10%,弱者綜合勝率僅為2%~30%(只可能是復合區間)」,那說明那說明數值空間太小,且概率過多導致戰鬥失控……

7,拆分職業,並做職業平衡矩陣,確保兩職業互A戰鬥平衡

8,設定一般價值量,將所有屬性轉化為戰鬥力,作為遊戲內唯一實力依據。

這個戰鬥力可能與顯示給玩家的戰鬥力不是一個值,但對你自己的計算很重要。

PS1:國內遊戲開發,只要類型確定了,就有好幾個現成經典模型給你用了。

一般也很少有人作這個死自己建一套全新的。

所以其實對建模的要求更多落在了對模型的修正上。

例如在AvsB時戰鬥時長差距小於1的時候,則誰先動手誰先贏。

例如攻速在規定時間內如果不產生一次以上出手機會則等於未生效。

樣會產生很多問題,你不得不去修正它。

能夠把這些問題解決好了,就可以考慮下一步了。

PS2:把離散和概率求個平均寫到表裡,不做模擬器不是不可以。

但如果你有時間學MATLAB離散數學概率論的情況下依然這麼干就是你偷懶了。

更精確的數值計算可以讓你在運營期提高調整效率。

PS3:數值建模不是建模板……是模型……

其實原則來說上面的轉化過程不算是模型……算是模型的一部分……

比較具像我拿出來說而已……

因為到此,你剛剛建立平衡。下一步你要做的是破壞平衡。

後面內容提綱:

續航也是可以納入原始模型的。

設計階段不要相互「補漏」,即不要用其他系統和機制來補數值的漏洞,反之亦然。

遊戲種類不同建模方式不同(例如WAR3)

數值製作方法我知道的有拆分法和組合法

RPG領域經典數值模型我知道的大概有三四種,分別適用不同遊戲

-

【熊樂的回答(10票)】:

你這問題有好多層,一個一個來.

先舉個不太嚴謹的例子:

你已經制定好一套裝備系統產出的策略,有文檔有公式有表格有圖表.

以下這是你模型中的兩個點:

力量+125的武器在遊戲中占比約32%

力量+175的武器占比約1%

突然有一天,要加一個裝備強化系統

沒強化的是0級,最高強化到10級

強化到最高10級可以讓武器屬性額外增加40%

當然了,強化1-9也可以有不同的提高,在0%-40%之間,不一一列舉.

現在給你一個任務:

一張表,字段包括ID武器名稱強化1概率強化2概率……強化9概率強化10概率,表內已經存在一些武器的ID和名稱,但是概率部分為空.

要你給這些概率賦值.

OK,做法不難,很容易就想到一個公式:

武器原本掉率 * A = 武器原本屬性 與 強化獲得屬性 之和所對應的 強化0級的裝備的掉率

A就是你的賦值.

其中一個答案很簡單,上面說的那一件力量+125的武器,本來的掉率為32%,那麼他強化到+10的概率應該是小於等於3.125%.

接下來你要做的就是計算出每一件裝備在每一個強化等級上的A,然後填入到表中.

不難吧

對EXCEL熟悉的,甚至不需要一個一個算,用幾個函數幾分鐘就解決問題.

明白數值模型是用來幹嘛的麼?

在上面這個例子裡,數值模型是用來提供計算依據的,是一種基準.為了保證遊戲增量內容與原有內容在基準上的一致性.如果沒有舊的數值模型做基準,新加入的武器強化系統很可能會被人亂寫,早先確定的平衡性難以維繫.

但是!(終於出現這個著名的詞彙了)

我說數值模型是屁,在實際工作中用處極其有限.

實際情況:

在辦公室,老大說要加一個強化系統.

"要加強化系統?好哇好哇."

"做10級是吧?,那這個簡單,概率每一級降10%就可以了"

"搞一些石頭在商城裡面賣,強化要消耗石頭!"

加班加點做出來,更新上線.

那些不那麼講究的玩家們,不會再去天天守BOSS期望能掉一把力量+175的極品.

都跑去拿+125的去強化,就算強化不到+10,到7或者8也湊合用.

再過了一陣子,石頭各種降價促銷,還覺得不夠,在遊戲裡面直接掉,掉率也慢慢越調越高.

反正也沒什麼人覺得有問題.

除了那個做出基準模型的那個數值策劃蹲在角落一言不發地畫圈圈.

看我口型,數!值!模!型!神!馬!都!不!是!

好了別跟我較真,我都說了這只是個不嚴謹的例子.

招聘啟示上列出的要求,往往是充分但不是必要的.

有見過一些比較有心的HR,會主動向項目組收集需求信息,然後用非常職業的方式起草對應的招聘啟示,但是我這輩子見過的就倆,而且都沒做多久,一個改行一個創業.

你要知道,眼下遊戲行業的招聘工作可以說不專業到令人髮指的程度.

很多招聘啟示的誕生和維繫過程是

1項目組說要人

2HR要求項目組提供書面需求

3項目組通過各大招聘網站拼湊出人員需求

4HR發佈

5面試過程又頻頻出問題

6許久招不到合適的人

公司要開新項目了,組建新團隊,同樣需要招人.新項目組的成員對公司已有的招聘啟示不滿提出修改意見.

7HR部門愛理不理,認為修改招聘啟示對完成工作指標無實質幫助

8詢問高層,得到的指示肯定是"一定保持對人才的高標準嚴要求"

你看到的就是這樣一份具備諸多專業名詞,但是與實際工作情況完全脫節的需求表,

就這樣了.

看招聘啟示的人都在糾結,這到底是神馬玩意兒?其意義在哪?

"精通算法"精通? 算法? 又沒給個亟待解決的實際問題,從何談起?

可不可以理解為寫這個的人僅僅只是搬弄詞彙而已?

反正要求都是要往高了提,深具高概括性,無視其要求與崗位的匹配精準度.

這算偽要求吧?

就算你去面試,大多會遇上各種專業名詞飛舞,但就是抓不到重點的面試官.

沒辦法.

到底解決了什麼實際問題?

數學建模更多的是為了在應用層面解決一些問題,這些問題往往是已經出現,需要用到很多數學技術和知識,最終目的是為了提高決策的準確程度.有一些難以收集,不確定的數據是需要做出主觀假設的.

但現在大多數項目內數據集之間的聯繫並不深,為了降低開發成本甚至會刻意割裂各個系統.決策者普遍也是偏重運營型的數據指標,一些涉及到數據的修改與調整,往往都是以付費率,流失率為重,並不是很尊重研發階段的數值模型.

所以掌握數學建模技術,對眼下工作的幫助非常有限.大多數時候都只是協助測算一些簡要想法和數據而已,

此招聘要求的另外一個潛台詞是,對方希望你能降低換皮型項目的成本,能提供一套不限於單一項目可復用數值體系,所謂"模".

這答案夠實際麼?

親身經歷:

某項目,開到45級,數值一口氣設計到200級.

甚至各類坐騎寵物等等常見的系統全都做好預留.

文檔表格圖形小工具直接寫好.

夠哥們兒吧!

交付之後遭遇無節操分發,各路貓狗硬盤上均出現你的工作成果,各路人馬開始逆向工程.時不時有人來找你"請教".

QQ上的請教,不是伴隨招待的那種"請教",真的只是交談.

伴隨請教進度的深入,請教者所在項目上線,人卻消失蹤影.

行業內活動,偶遇熟悉名字,主動上前打招呼自我介紹,對方說不記得你......

所有的模型模板模具,都是具備高度可複製性的.

作為業內人,警醒你一下,在這個不尊重知識產權的國度,談此類話題要看人.

有興趣深究麼?交換一下思維?

假設商城上架兩款裝備直接賣,單位是角,問你定價多少?

屬性分別是力量+150和力量+175

定價的依據是遊戲內的數值模型,可以不用考慮運營數據(好理想主義~).

請問你會怎麼做?缺失條件,自行做假設.

【陸雨知的回答(3票)】:

謝 @胡擺平 邀。

其實我是個程序演算n次看分佈黨。

幾位寫得很詳細了。我扯點什麼好呢~

如幾位說,大多時候都是採用已有模型放到自己的遊戲裡。

這時至少需要知道每種體系的特徵及弱點。

因為我覺得模型(系統)級的問題是無法通過調數值平衡解決的

說些最基礎的,減法公式有攻等於防時的不破防問題。乘法的話也有免傷率是跟著職業走(wow)還是跟著裝備走(diablo)的很多類型。當然一般來說都是複合型的,也分好多層。

當老闆說:「我想讓超R揍無限個非R,大R揍100個非R」的時候,經驗能幫你挑選出合適的模型。

最後扯個遠的吧,有前輩跟我說過一個「穩態」模型。(好像是因為wow萌生出這個想法)

大概就是指「玩家可以進行正常操作迭代」的狀態。

不同於擺平的攻防二元,「穩態」是由

擊出穩態(攻擊)

保守穩態(防禦)

恢復穩態(回復)

三部分構成的。

二元數值體系裡,一般會尋找一個標準值調平,比如將「HP」作為基本單位,給所有數值設想為n個HP。然後利用經驗和測試進行調整。

但這樣會忽略邊際效應。比如第1000點血,和第10點血的邊際效益是不同的。無法去設計一個0防1血全攻角色(當然策劃不會這麼設計,只是假設極限)。

在「穩態」結構裡,離穩態核心需求越遠的數值成本越高。要兌換它的代價也越大。

嗯,想像一下的話應該就是一個三點間互有拉力,三點和各自基點也有拉力的力學模型。力的大小與距離的某次方成正比。

在內應力可接受的範圍內,可以在這個模型的各方向拉出多個職業數值。

。。。只能說到這裡了,因為沒有真的實踐過「穩態」。瞎扯些有的沒的來應邀~見笑了。

畢竟不是個遊戲策劃……

【滿城風絮的回答(0票)】:

唔,原諒我很懶,樓上寫了那麼多沒有悉數看完。我來說說我的看法吧。所謂建模,並沒有真正意義上的數學建模那麼複雜,數值工作中用到的公式與算法,初中生就能夠明白了。舉例:我要做一個副本,副本中怪物的屬性,就可以通過建模得到,如怪物的攻擊,我可以關聯期望玩家實力的防禦力。如此這般。然後我在變更玩家實力的時候,就不需要把這副本一起改了,關聯動態值即可。這就是建模最常見的用法。還有成功率,戰鬥模擬這些模型也很常見。多是以驗算結果方式獲得期望值。

標籤:-遊戲 -遊戲設計 -遊戲策劃 -數學建模 -遊戲數值策劃


相關資源:





給我留言