當(dāng)前位置: 首頁 > 攻略教程 > 圖文攻略 > 英雄無敵3走進(jìn)科學(xué):無處不在無所不能的戰(zhàn)場隨機(jī)事件

英雄無敵3走進(jìn)科學(xué):無處不在無所不能的戰(zhàn)場隨機(jī)事件

時間:2023-08-10 22:55:00 編輯:易網(wǎng)VIP游戲門戶 閱讀:8

定義

隨機(jī)事件:主要是指游戲中有概率發(fā)生的事件,例如士氣大振,士氣低落,幸運(yùn)一擊,蠻牛發(fā)動死神之眼,蜥蜴發(fā)動石化效果等等。

英雄無敵3走進(jìn)科學(xué):無處不在無所不能的戰(zhàn)場隨機(jī)事件


現(xiàn)象

英雄無敵3的隨機(jī)事件算法,經(jīng)過多個版本的反復(fù)優(yōu)化,有這么幾個現(xiàn)象可以觀察到。(小輝使用的是英雄無敵3死亡陰影高清重制版)

一、隨機(jī)事件的出現(xiàn)次序,具有固定性。

在某次戰(zhàn)斗中,不能簡單的重打來改變隨機(jī)事件。

最常見的,如果不做任何改變,反復(fù)重打,你會發(fā)現(xiàn)始終結(jié)果是一樣的。甚至部隊的攻擊上限下限都一樣,差別基本只有1,2點傷害?。?!

也就是說,必須做點別的什么事,比如戰(zhàn)斗中釋放魔法,比如進(jìn)戰(zhàn)斗前訪問神廟增加士氣,才能改變隨機(jī)的結(jié)果。

注意:實戰(zhàn)觀察到,圣龍的恐懼不遵循這個固定性規(guī)律。不改變?nèi)魏螚l件,反復(fù)重打,圣龍的恐懼的對象有可能發(fā)生變化。

二、大數(shù)量下,隨機(jī)事件的概率統(tǒng)計值,具有穩(wěn)定性。

在很多次的戰(zhàn)斗模擬中,你可以精確的發(fā)現(xiàn)隨機(jī)事件的概率保持非常非常穩(wěn)定的次數(shù)。

舉個例子:

用2個防御特長的英雄(孟斐拉和泰澤),級別修改到200級。(這樣,在測試中,所帶部隊的攻擊都互相只能造成1點傷害。)

孟斐拉帶25只巨蜥(20%概率石化,總生命1000),泰澤分別帶1000生命的部隊(100個戟兵,10個騎士、4個大天使、50個戰(zhàn)斗矮人)

這樣雙方都是1000生命,一回合內(nèi),我方攻擊1次,導(dǎo)致對方損失生命1,對方反擊,導(dǎo)致我方損失生命1;然后對方攻擊1次,導(dǎo)致我方損失生命1,我方反擊,導(dǎo)致對方損失生命1。

也就是說,一回合內(nèi),雙方各掉2點血,攻擊2次。(即使對方被石化,敵方也掉血了,敵方的被攻擊次數(shù)是沒影響的)

因此最后統(tǒng)計我方石化出現(xiàn)次數(shù),除以1000(因為敵人一共就1000次被攻擊次數(shù)),就可以計算出來石化的概率了。

英雄無敵3走進(jìn)科學(xué):無處不在無所不能的戰(zhàn)場隨機(jī)事件

從修正結(jié)果上看,英雄無敵3的隨機(jī)事件的宏觀概率表現(xiàn)非常穩(wěn)定。

三、大數(shù)量下,有可能有多次小概率事件連續(xù)出現(xiàn)。

雖然整體數(shù)據(jù)上石化的隨機(jī)事件概率很穩(wěn)定,但是在實際測試過程中,巨蜥連續(xù)3次出石化是常有的事,連續(xù)5次石化的極端情況也出現(xiàn)過;反過來,連續(xù)20幾次不石化也非常常見。

這說明英雄無敵3的隨機(jī)事件算法,還是比較接近真實隨機(jī)事件。

由于每次石化發(fā)生都是獨立計算概率的事件,只要是真實隨機(jī)事件,就必然有這樣的表現(xiàn)。

順手提一下,手游中為了加強(qiáng)玩家的體驗,往往會設(shè)置類似100抽必中ssr之類的設(shè)定,這就意味著抽卡并不是真實隨機(jī)事件,被強(qiáng)行寫入算法干預(yù)了。

英雄無敵3走進(jìn)科學(xué):無處不在無所不能的戰(zhàn)場隨機(jī)事件


原理

真實游戲里的隨機(jī)事件算法,我們只有反編譯才能看清楚,但是我們根據(jù)上面3個現(xiàn)象,已經(jīng)可以推算出來大概的情形了。

1、在進(jìn)入戰(zhàn)斗的瞬間,程序隨機(jī)生成了一長串隨機(jī)數(shù)列。

英雄無敵3的電腦程序生成了針對本次戰(zhàn)斗大概100個數(shù)字的隨機(jī)數(shù)列(這個100的值不重要,隨口說說,戰(zhàn)斗中如果不夠用就繼續(xù)生成),每個數(shù)字在1-1000之間(這個值不重要,猜測,不過應(yīng)該差不多),對于每個動作發(fā)生的時候,都按次序調(diào)用下一個隨機(jī)值。

例如:進(jìn)入戰(zhàn)斗的時候,生成了800,700,200,914這樣的隨機(jī)數(shù)序列。

第一步我方部隊移動,調(diào)用了800這個隨機(jī)數(shù),但是移動這個動作,不會造成任何隨機(jī)效果,因此800這個數(shù)值調(diào)用了,但沒產(chǎn)生作用。

第二步我方部隊移動后攻擊了敵人,輪到調(diào)用700這個隨機(jī)數(shù),那么根據(jù)攻防公式,計算攻擊傷害計算完上限是100和下限是50后,50+(100-50)乘以700除以1000=85,也就是這次傷害打出了85點傷害,傷害上限是100,傷害下限是50。

第三步敵人反擊,輪到調(diào)用200這個隨機(jī)數(shù)。據(jù)攻防公式,計算反擊傷害計算完上限是40和下限是30后,30+(40-30)*200除以1000=32

第四步我方部隊部隊士氣2,行動后,有8.3%的機(jī)會2次移動。輪到調(diào)用914這個隨機(jī)數(shù),那么計算914是否落到1-1000區(qū)間的8.5%區(qū)間內(nèi),沒落到。(如果落到應(yīng)該是在915到1000以內(nèi)的數(shù)字才行算落入8.5%的區(qū)間),那么不觸發(fā)2次行動,結(jié)束。

大概就是這么一個工作機(jī)制,所以,可以觀察到,如果什么都不改變,反復(fù)進(jìn)入戰(zhàn)斗,戰(zhàn)斗過程中的隨機(jī)事件觸發(fā),會一直是重復(fù)。

2、那些因素可以影響到進(jìn)入戰(zhàn)斗生成的隨機(jī)數(shù)列。

戰(zhàn)斗發(fā)生點的地圖坐標(biāo),敵我雙方的部隊情況(分隊、混編、站位、生命,數(shù)量、士氣、運(yùn)氣等等),應(yīng)該還有其他條件,但現(xiàn)象太少推測不出來了。

3、隨機(jī)數(shù)列并不是永遠(yuǎn)一成不變,每次進(jìn)入戰(zhàn)斗依然存在隨機(jī)浮動。

如果不改變?nèi)魏螚l件,反復(fù)進(jìn)入同一次戰(zhàn)斗,隨機(jī)數(shù)列有可能輕微變化,但不會變化太大,所以你會觀察到每次部隊的互相攻擊的傷害變化都不大。。。運(yùn)氣好偶爾比如出現(xiàn)剛才的第四步,之前一直是隨機(jī)數(shù)是914,偶爾有一次重新進(jìn)入戰(zhàn)斗,這個數(shù)值輕微變化到了915,就剛好觸發(fā)了士氣,一旦觸發(fā)了士氣,就意味著隨機(jī)數(shù)的后面的調(diào)用次序發(fā)生了變化,那么后續(xù)戰(zhàn)斗都將發(fā)生變化,也就是這次戰(zhàn)斗結(jié)果很可能發(fā)生了巨大改變。