戰(zhàn)艦世界數(shù)學(xué)教室3簡(jiǎn)單的心理學(xué)

閱讀此系列需要有基本的游戲機(jī)制知識(shí),詳見官方運(yùn)作機(jī)制系列視頻官方小教室

當(dāng)玩家發(fā)現(xiàn)有炮彈來(lái)襲時(shí)會(huì)采取一定的策略,包括但不限于外切、內(nèi)切、加減速。相應(yīng)的,對(duì)手也會(huì)估計(jì)對(duì)方的策略并采取相應(yīng)的行動(dòng)。我們常常將對(duì)手的行為作為一個(gè)不確定量,實(shí)際上人類沒有我們想的那么復(fù)雜。運(yùn)用唯物主義的觀點(diǎn),--認(rèn)為人是按照某種算法決定自己的行動(dòng)策略的,通俗來(lái)說(shuō),就是習(xí)慣。見到來(lái)襲就外切,這是條件反射,你甚至可以教猴子玩游戲;假設(shè)對(duì)方會(huì)判斷距離和角度之類的,比如大于90度外切,距離小于15km外切,這就是加了一個(gè)判斷條件。也許越有經(jīng)驗(yàn)的人應(yīng)對(duì)方法越多,反應(yīng)越快,但人類還是有極限的。在一輪炮擊的時(shí)間你不能做出那么多的思考,你總會(huì)按照自己的習(xí)慣決定行動(dòng)。
我們拿游戲ai做類比,我們生成一套算法(自己的風(fēng)格),根據(jù)輸入(觀察得到的信息),給一個(gè)輸出(操作)。這個(gè)算法是在對(duì)方行動(dòng)(炮擊)之前就決定,我們的策略采用的輸入信息越多,策略越復(fù)雜,行動(dòng)就越難被預(yù)測(cè)。而攻擊方要做的事情也差不多,就是估計(jì)對(duì)手的策略而行動(dòng)。舉個(gè)例子,你開著共和國(guó),打了亨利一輪外切位,他減速了,下一輪你判斷他會(huì)加速,然后爆了他一個(gè)核心,開心的大叫:加減速的菜逼騙誰(shuí)呢?。╬yo顏)這就是一次成功的預(yù)測(cè)。
游戲ai有一種經(jīng)典的方法叫做αβ搜索,一般是用于下棋的,我預(yù)測(cè)幾個(gè)回合,搜索我所有做法中收益最高的,然后再搜索對(duì)手所有可能做法中收益最高的,反復(fù)預(yù)測(cè)回合數(shù),選擇使自己受益最高的做法。αβ搜索并不是假設(shè)對(duì)手一定是明智的,而是選取最不虧的策略,如果對(duì)手沒有采取自己估計(jì)的最優(yōu)策略,會(huì)只賺不虧。但由于預(yù)測(cè)回合數(shù)有限,假如對(duì)手也是一個(gè)采用αβ搜索的ai,但是比你的ai多預(yù)測(cè)兩個(gè)回合,對(duì)手就更可能戰(zhàn)勝你??墒菓?yīng)用到wows中就不是那么簡(jiǎn)單了,拿戰(zhàn)列艦距離,我一輪一輪打炮就像回合制一樣。我打?qū)γ嬉粋€(gè)橫著的巡洋外切位,因?yàn)槿绻馇辛宋夷艽虺龊芎玫膫?,如果他?nèi)切我之后還有機(jī)會(huì)能打他。結(jié)果他內(nèi)切了,也在我預(yù)期之內(nèi),結(jié)果在我裝填的功夫他轉(zhuǎn)身轉(zhuǎn)過(guò)去了或者滅點(diǎn)了,這就是一次比較失敗的搜索。αβ搜索是不知道對(duì)方策略下的方法,如果我們知道對(duì)方的策略,那么αβ搜索得到的做法收益通常不是最高的,αβ搜索只是得到最不虧的策略。而對(duì)手的策略,也就是習(xí)慣,是可以預(yù)測(cè)的。
然后來(lái)說(shuō)一個(gè)流行的神經(jīng)網(wǎng)絡(luò)做法:強(qiáng)化學(xué)習(xí)。強(qiáng)化,就是給我的結(jié)果一個(gè)評(píng)分,讓ai向更高的得分方向修改參數(shù)。對(duì)于人類來(lái)說(shuō),這就是經(jīng)驗(yàn)。對(duì)于很多游戲來(lái)說(shuō)評(píng)分是很方便的。拿到窩窩屎里,感覺強(qiáng)化學(xué)習(xí)的ai和人類也差不多,我打個(gè)幾千場(chǎng)練我的炮術(shù),走位,意識(shí)。打得好的局(高評(píng)分)考慮優(yōu)點(diǎn),暴斃的局(低評(píng)分)想想為什么暴斃下次不這么干了。所以一個(gè)人能比強(qiáng)化學(xué)習(xí)完的ai強(qiáng)在哪呢,答案是不如ai,圍棋輸了,星際2輸了,人類不用玩了,看著ai打游戲算了趁著ai還沒廣泛的暴打人類好好玩吧。
(關(guān)于游戲ai的科普推薦up主 柯力卬Kleon 的視頻如何制作訓(xùn)練有素的游戲AI
信號(hào)系統(tǒng)與齊射
???????? 雖說(shuō)戰(zhàn)列艦也有dpm的概念,但是裝填時(shí)間也是很重要的,比如共和國(guó)的抓機(jī)會(huì)能力就是指較快的射速。戰(zhàn)列艦的dpm不是持續(xù)的,而是脈沖的,每次齊射產(chǎn)生一次高額輸出,而裝填的時(shí)間,她的輸出就是0。在這個(gè)時(shí)間內(nèi),你就是橫著,他也不能把你怎么樣,這就是我們?yōu)槭裁匆葘?duì)方開過(guò)一輪炮再轉(zhuǎn)拖刀。
???????? 另外,由于存在炮彈飛行時(shí)間,對(duì)方發(fā)出攻擊的輸入到你受到攻擊的輸出,服務(wù)器是一個(gè)延時(shí)系統(tǒng),把實(shí)際傷害相對(duì)于開火信息延后炮彈飛行時(shí)間傳遞給你。
???????? 因?yàn)檠b填時(shí)間固定,可以把開火視為一個(gè)周期脈沖。我們常常能估計(jì)對(duì)方的開火時(shí)間,所謂的節(jié)奏就是周期。不過(guò)出于個(gè)人習(xí)慣,這個(gè)周期只能作為最短開火間隔,有些人會(huì)多瞄那么一兩秒。
???????? 至于為什么大部分人喜歡齊射,可能有這樣幾方面原因。
1有氣勢(shì)
2輪射需要瞄準(zhǔn)兩次:只要對(duì)方在轉(zhuǎn)向或加減速(有加速度)你就必須更改瞄準(zhǔn)點(diǎn)
3機(jī)會(huì)只有一輪,不適合輪射:對(duì)方巡洋轉(zhuǎn)身只有5秒左右的時(shí)間可以打出最高傷害,這樣的時(shí)間內(nèi)完成兩次提前量計(jì)算比較困難。
4輪射傷害預(yù)期標(biāo)準(zhǔn)差較大。由前一節(jié)的知識(shí),我們知道一輪炮彈越少,相對(duì)不確定度就越大,比如大法一次四顆炮彈,你不指望能打多準(zhǔn)。
但是是不是總要齊射呢,肯定不是的。對(duì)于加減速的,在他的前進(jìn)路線打一條線通常是好的選擇,按住鼠標(biāo)拖一段,也不會(huì)太耗費(fèi)計(jì)算。
我們提到了ai和齊射是想用來(lái)決策戰(zhàn)列艦如何射巡洋和巡洋艦如何躲炮。通過(guò)經(jīng)驗(yàn),我們可以在對(duì)方未決策時(shí)由驗(yàn)估計(jì)給出一個(gè)對(duì)方的策略集合,當(dāng)對(duì)方做出一次應(yīng)對(duì)后,可以排除一些不符合實(shí)際的策略,可以迅速縮小對(duì)方可能到達(dá)范圍,使我們的攻擊更好的覆蓋對(duì)手最可能到達(dá)的位置。巡洋艦的工作就是反過(guò)來(lái),實(shí)際上兩個(gè)人就像在打賭一樣,賭對(duì)方猜不到自己的行動(dòng)。
實(shí)際上我們肯定不能在一局游戲甚至幾輪射擊里進(jìn)行一個(gè)猜疑鏈,比較劃算的做法還是事先計(jì)劃好一個(gè)策略用來(lái)分析和預(yù)測(cè),對(duì)于人類來(lái)說(shuō),明確這個(gè)策略是比較好的,總是憑感覺就不能驗(yàn)證自己的猜測(cè)然后改進(jìn)策略了。