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