作為策劃,很高興可以在這里和大家一起交流如何去反推一個游戲的戰(zhàn)斗公式。
通常來講,游戲的數(shù)據(jù)表現(xiàn)形式,絕大多數(shù)都是黑箱式的,即可直觀見到游戲事件的發(fā)生和結(jié)果,但控制游戲事件進行的系統(tǒng)不公開,因此不可見,甚至難于理解。
除去獲得官方公開的數(shù)據(jù);通過適當(dāng)或者不太適當(dāng)?shù)耐緩将@得游戲內(nèi)部數(shù)據(jù),源碼或者策劃案之外;大多數(shù)時候,也只能依靠反推這個方案了——顯而易見的這是一種相對而言最為可行的探求黑箱內(nèi)部的方案。
如果要通過事件發(fā)生和結(jié)果的數(shù)據(jù),進行反推,我們認為其可行的評估通;冢
A,大多數(shù)戰(zhàn)斗系統(tǒng)或者其他系統(tǒng),通常都依靠具體的算法和公式為核心。
B,公式和算法通常不會特別復(fù)雜,在網(wǎng)絡(luò)游戲時代,計算戰(zhàn)斗過程和結(jié)果通常放在服務(wù)器端進行,為了應(yīng)付海量戰(zhàn)斗造成的負擔(dān)上升,算法勢必以簡單高效為要求。
C,在一個游戲的生命周期內(nèi),其底層系統(tǒng)的核心公式通常不會大幅變動(通?赡馨l(fā)生變動的時間是大幅度的更新如游戲資料片,或出現(xiàn)某些不可調(diào)和的問題或bug時)。
萬幸,符合這樣規(guī)律的游戲是大多數(shù),所以我們就有了反推的基礎(chǔ)。
而反推方案的可執(zhí)行,對執(zhí)行者的素質(zhì)要求是:
1、對輸出輸出端的所有數(shù)據(jù),結(jié)果,一般現(xiàn)象和特殊現(xiàn)象有足夠的認知和了解。
2、能夠通過歸納和分析,建立并驗證簡單數(shù)學(xué)模型的能力。
3、能夠在游戲中建立測試環(huán)境,對模型進行反復(fù)的評估和驗證的能力和手段,或者有方法獲得用于驗證的大量數(shù)據(jù)樣本。
4、最好擁有相關(guān)游戲開發(fā)的經(jīng)驗或游戲系統(tǒng)的深入了解。
這樣我們就可以準備著手進行反推了。
好,下面是具體的例子了:我首先會想起的正是《魔獸世界》(以下簡稱為WOW),而且是60級年代的,最有趣的那個WOW。
那個時候,整個艾澤拉斯大陸的玩家還沉浸在“我操這個游戲好屌”的情緒中,開發(fā)方也極少透露出和游戲相關(guān)的各種數(shù)據(jù),但是仍然有大量的玩家在思考數(shù)據(jù)系統(tǒng)的奧秘,試圖探求黑盒的內(nèi)部,并且取得了輝煌的結(jié)果,更棒的是,他們的結(jié)果都后來直接或間接地被證明是正確的。
第一個故事:骰子和百分比之桌(Attack table)——這個問題爭論之久涵蓋了整個60時代,焦點是說,一次普通的攻擊可能造成命中,暴擊,閃避,招架,格擋,碾壓,偏斜還有未命中等等不同的結(jié)果——魔獸世界為了凸顯即時戰(zhàn)斗的多樣化和不可預(yù)知結(jié)果的特性,在一個平砍上就做了這么多的文章。這些數(shù)據(jù)各自被命中率,暴擊率,閃避率,招架率,格擋率(均為百分比數(shù)據(jù))和等級差影響,那么這一大堆數(shù)字應(yīng)該看哪個,數(shù)學(xué)預(yù)期到底是怎樣的呢?
艾澤拉斯的民科數(shù)學(xué)家們,已經(jīng)因為分成了兩個陣營分明的派系,各自有不同的說法:
多次骰子派認為,每個百分比都是一個獨立的100%中的占比;結(jié)果的出現(xiàn)是先用隨機數(shù)決定是否命中,再用隨機數(shù)決定是否招架,再用一次隨機數(shù)決定是否暴擊……
單次骰子派即認為,所有百分比都是同一個100%中的占比,一次骰子決定結(jié)果。
但是后者比較容易遭受質(zhì)疑的是,顯然某些極端情況下,這些百分比的數(shù)值之和已經(jīng)遠大于100了,因此看起來這個算法就不能成立了。
直到官方藍色帖子發(fā)布:
Info on crit and hit chances | 2006-08-25 09:54 | Aeus
The way WoW calculates crit rate is over ALL attacks. Crit rate is not based on hits only. In other words, if you have a 5% crit rate, that 5% chance includes misses.
單Roll派才恍然大悟,提出了Table制算法——也就是當(dāng)各種攻防雙方各種非命中數(shù)據(jù)上升時,就好像向一個桌子上擺入更多的杯子,當(dāng)杯子多到裝不下的時候,名叫普通命中的那種被率先擠出去。
接下來的一大串巨量combat log襲來,大量數(shù)據(jù)證明了這個算法是符合實際情況的,這就很好的解釋了大部分現(xiàn)象;其次,部分實驗者又用用等級差和裝備差,以及利用各種技能產(chǎn)生的極端數(shù)據(jù),又一一驗證了這個桌上被擠出去的優(yōu)先順序列。
而elitistjerks 的Vulajin,一位深思熟慮的盜賊,對于這一結(jié)果在物理傷害技能在PVP方面的表現(xiàn)存疑,通過超過50天,數(shù)萬次的背刺試驗,得到了技能傷害是獨立于平砍的計算方式,是兩次骰子的形式來決定結(jié)果的結(jié)論:Backstab: Two Rolls?
到了70年代,elitistjerks的Lactose,一個疑心病很重的獵人,對于獵人的遠程物理攻擊是否遵循Attack Table的一次骰子方式進行了驗證,用豪華裝備加上極端測試環(huán)境,積攢了數(shù)千行有效combat log,統(tǒng)計并再次驗證了遠程攻擊也完全遵循Attack table的結(jié)果。
到此,這個復(fù)雜的問題得到了圓滿的解決,而之后的WOW版本中,更通過移除了碾壓和偏斜的發(fā)生,進一步簡化了普通攻擊的Table相關(guān)算法:顯然從開發(fā)者的角度評估,如果能夠?qū)崿F(xiàn)相似的結(jié)果,顯然一次骰子的算法,要高效于多次骰子,但如果沒有確實的公式,算法和規(guī)律加以驗證,那么終究難以具有足夠的說服力。
第二個故事:道具(裝備)哪家強?(Item level)——這個問題更是伴隨了WOW多半游戲歷程,直到”裝等“概念已經(jīng)深入人心,成為普及觀念,也成為衡量一個玩家價值的直接標準(從某種意義上講我并不喜歡這點)的時候,”兩件不同的裝備,究竟哪一件更好“這個問題,才基本上不再有人爭論。
但在游戲的早期,大家對裝備的概念只有紫的比藍的好,藍的比綠的好;到了60級中后期,Raid開始普及紫裝的時候,問題就出來了,同樣是”60級“的紫裝,到底哪個會更好呢",或者“搶了人女朋友還要不要搶龍人盾呢?”
在Addon(各種插件)開放的同時,WOW也提供了大量的API給開發(fā)者調(diào)用,其中關(guān)于道具,可以取得一個叫做Item level,也就是物品等級的值,但是這個值,普通玩家不能看到(Patch 3.2之前),只能通過”物品使用等級“來判斷,但是問題如上,到了滿級就看不出哪個更屌了——從60-95的史詩裝備,都標注為“ 使用等級:60”。
對應(yīng)的譯文在這里:[翻譯]物品等級機制
Hyzenthlei 一位牛頭人薩滿,自己琢磨啊計算啊,得到了一個公式,并發(fā)布在了BLZ的WOW官方論壇上:
方程
下面是經(jīng)過對WOW物品生成的規(guī)則進行了很多方程的嘗試后得出的結(jié)論:
ItemValue = [(StatValueX*StatModX)^1.5+(StatValueY*StatModY)^1.5+ …]^(2/3)/100 (X,Y代表屬性的數(shù)值,^是指數(shù))
在這個方程里你要注意到:
1、它很簡單(我害怕那些復(fù)雜到搞笑的東西),但并非象所有屬性相加那么簡單。這意味著物品平衡并非要用一些亂七八糟極為復(fù)雜的東西,一些簡單的數(shù)值就能描繪出這種平衡的方法。
2、每個屬性在公式中的表現(xiàn)都是他本身的1.5次方。這樣它不會增長得太快,但又可以更好地平衡超高的單獨屬性。舉個例子,一件物品可以有+29力量或者+18/19 力量/耐力,這兩種情況下物品的ItemValue大致上相等(數(shù)值足夠相近到同等ilvl的程度)。
3、把這些屬性的1.5次方加起來以后得出的值再化為它本身的2/3次方,這能使ItemValue不會螺旋型上升。經(jīng)過這些改變之后,物品的ItemValue將基于ilvl線性上升。
嚴格來說我看到“螺旋形上升”就已經(jīng)想不明白是怎么個意思了,但是,這一條Item Value(簡寫為IV清晰的解釋了道具等級,道具帶來的屬性提升,屬性的價值,這就意味著,除了極少數(shù)明顯數(shù)值錯誤的道具之外,對于”我應(yīng)該如何選擇道具,能夠使自己的數(shù)值成長更多“這個問題的答案已經(jīng)非常清晰了:獲得ILV,并計算出他的價值就是了。
我在60年代末期,大家還不知道ILV是什么概念的時候,就做了一個addon,核心公式和界面都是抄的,但是增加了幾個實用方便的功能:
1,自動觀察每一個視野內(nèi)的玩家,記錄他們的IV總值,并存在本地,查詢的時候可以進行排名
2,自動觀察隊友,一鍵生成一個IV總值列表合計
3,在裝備對比的時候直接顯示IV和IV差值
其中1只要把號在主城掛幾個小時,基本就能掌握服務(wù)器平均raid進度,而第二個功能,在60級末期剛剛開始有20人野團的時候,這玩意能一下判斷出整個團隊的硬件狀況;第三個則是省了你琢磨換還是不換的問題。
第三個故事:OT到底該怨誰,神秘的仇恨系統(tǒng)(Threat)——這曾經(jīng)是最讓每一個Raid Leader頭痛的問題,到底仇恨是個什么機制,為什么有時候風(fēng)平浪靜,有時候OT一波接一波。
相對于前幾個問題,你至少還能看到黑箱輸入的所有數(shù)據(jù)和輸出數(shù)據(jù);而仇恨值我們即無法直觀看到輸入數(shù)據(jù),更無法看到輸出數(shù)據(jù),準確地說,只能看到現(xiàn)象,也就是:OT還是沒有OT。
因此,試圖反推的難度要高太多了,直到整個60年代即將結(jié)束的時候,Kenco's research on threat這篇帖子的發(fā)布,才宣告仇恨系統(tǒng)的面紗已經(jīng)被完全揭下。
作者Kenco和幾個朋友,建立了一個簡單的設(shè)想,即普通的平砍傷害=仇恨增加,在這個基礎(chǔ)上,測出了 的0.5(治療有效值的0.5倍相當(dāng)于產(chǎn)生仇恨),1.1/1.3等幾個極為關(guān)鍵的數(shù)值(當(dāng)某個單位的仇恨值超過當(dāng)前目標,近戰(zhàn)為1.1,遠程為1.3倍時,則發(fā)生OT),嘲諷的工作原理(瞬間獲得相同于 仇恨目標的等量仇恨,并強制目標轉(zhuǎn)向)等等,加上對極為含糊的仇恨數(shù)據(jù)描述(產(chǎn)生”大量“”額外的“”較低的“仇恨)作出了數(shù)據(jù)測評,使得玩家頭一次有一種撥云見日的感覺。
在那之后的一段時間內(nèi),各種Tank職業(yè)對于如何制造仇恨的技巧大幅增加,而DPS們也在如何不OT的情況下舊能增加輸出有了良好的理解。
這一直接影響就是到70年代開荒卡拉贊時代,仇恨插件就已經(jīng)普及,控制仇恨的難度對于Raid leader就是件直觀明白的工作了:”那個暗牧少用震爆,馬上OT了!“。
(圖應(yīng)為Omen,不是最早但是普及最廣的仇恨插件之一)
仇恨系統(tǒng)是WOW從Ever Quest借鑒并沿襲最為理想的設(shè)定之一,其黑箱程度如上所述,在各個系統(tǒng)中也是 ,但仍然被破解了。
在整個WOW的游戲歷程當(dāng)中,類似的情況非常多,例如護甲的加值和減傷效果的推演,怪物和玩家之間的Arrgo關(guān)系的等等。
既然題主還問了“其他公式”,我們就再講兩個WOW以外的故事。
第四個故事:誰有利,誰不利——格斗游戲發(fā)展到現(xiàn)在階段,最大的問題不是反應(yīng)夠快不夠快,連招練得是不是熟,而是對策是否豐富,而對策是否豐富完全依賴于你對每個角色的數(shù)據(jù)掌握是怎樣的——
不,不是這些,和三圍年齡愛吃什么沒關(guān)系,是你需要牢記一大張數(shù)據(jù)表,我們稱之為Frame Data幀數(shù)數(shù)據(jù),這個數(shù)據(jù)中最重要的數(shù)據(jù)是——有利和不利。
而(硬直差)有利不利翻譯過來就是"在你打了我一下,我防住了/我挨打了”的情況發(fā)生后,誰可以先動的數(shù)據(jù),這個數(shù)據(jù)決定了先發(fā)制人還是后發(fā)被人制,可以說了解硬直差的人在實戰(zhàn)中將有巨大的優(yōu)勢,壓制,強擇,確反都靠它了!
我們強調(diào)一下:這個數(shù)據(jù)表只有一個角色全表的1/3長,每個角色的數(shù)據(jù)條數(shù)在70-120不等,每條至少記下來發(fā)生,硬直,命中硬直差和防御硬直差和傷害值吧5條吧,這樣每個角色只需要大概其記400-600個數(shù)據(jù),某些不常用可能不用特別記,平均算200個吧,街霸4這樣40來個角色的,需要記的總數(shù)據(jù)可能也就一萬不到,全數(shù)據(jù)則在兩萬條上下。
而在早年,官方?jīng)]有提供這種數(shù)據(jù)的時候,怎辦呢……我們的玩家以有些老土的方式,完成了人肉測量:選擇兩個(起跳速度)相同的角色,你踢我一下,我防住了,然后大家都拉住上,這樣大家都會在硬直結(jié)束的時候跳起來,然后把這段情況錄下來,用視頻工具逐幀播放。
根據(jù)兩個人的跳躍高度差,就可以反推出幀數(shù)差了,這就是人肉frame data的來歷。
你也知道需要多少數(shù)據(jù)量,所以請想想看這個工作是如何完成的,那就是不可思議的頑強毅力。
最后一個故事:我一個沒怎么玩過夢幻西游的人如何反推亂敏現(xiàn)象的機制——這個是我的一個答案
很多回合制游戲都有亂敏現(xiàn)象,請問該設(shè)定的初衷和原理是什么? - 網(wǎng)絡(luò)游戲
基于兩個道理——如果一個數(shù)值會造成不平衡,如何平衡;所有能夠達到平衡的手段中最簡方案是什么;建立一套更復(fù)雜的模型來實現(xiàn)同樣的效果這種蠢事,聰明的游戲開發(fā)不會做的。
投稿郵箱:chuanbeiol@163.com 詳情請訪問川北在線:http://m.sanmuled.cn/