《貪吃蛇大作戰》,一場AI帶來的勝利?

  《貪吃蛇大作戰》,應該是最近的又一個現象級作品了。

  由於我所在的手游項目上個月剛剛過審,因此大概有一點耳聞:自從廣電總局發布新政以來,過審的大作不多,基本以休閑小遊戲為主。因此《貪吃蛇大作戰》的登頂,有時機好的因素在,檔期好啊!

  遊戲本身其實規則非常簡單,然而根據周圍人的反應來看,大家對《貪吃蛇大作戰》的沉迷程度比《球球大作戰》要高。個人分析原因主要是:在《球球大作戰》的遊戲初期,玩家只能吃系統生成的點,並且遊戲內永遠是大吃小;而《貪吃蛇大作戰》,一條剛出生的小蛇,也有可能直接吃掉大蛇,從而瞬間暴富。

  就是這種瞬間暴富的可能性,加大了《貪吃蛇大作戰》中對抗的激烈程度。同時,蛇死亡後在原地留下大量資源的設定,更是直接增加了互懟的可能性。因此《貪吃蛇大作戰》的對抗程度,遠比《球球大作戰》更頻繁、更刺激。

  然而在我中毒兩三天以後,才發現:

  這貨居然是個單機。

  其他玩家行為的一致性,加上斷網、鎖屏等情況下的運行情況,無疑證明了這一點。

  我說怎麼他們把多人即時PVP做得如此流暢,而《球球大作戰》即使是在<20ms延遲的情況下,也依然會讓人感覺到明顯的卡頓。

  我大概概括了一下《貪吃蛇大作戰》中蛇的AI和一些系統規則的基本實現思路,部分代碼用的是LUA:

1、基本數據初始化:

  a)設置固定的幾十個出生點(X1,Y1——Xn,Yn),隨機其中10個點(個數隨便寫的),用於遊戲開始時作為每條蛇的出生點;

  b)在地圖偏中心的位置,設置<10個坐標點,作為蛇死亡之後的復活點(經測試,iOS版本與安卓版本此處有差異,各有利弊,後面的備註1細說);

  c)設置一個資源控制器,用於進行地圖上資源生成的控制;

  d)設定蛇每吃6個小點,身體增加一個段;每吃1個大點(其他蛇的屍體),身體增加一個段;

  e)假設遊戲邏輯幀為20幀,每0.05秒為一幀;以蛇身的每個點的1/10為一個基本長度單位(1米),即每個大點為10米;

  f)假設整個地圖尺寸為10000*10000(或者32767*32767這種可能更利於程序運算的尺寸);

  g)假設從(0,0)看向(0,1)的角度為0°(0°就是360°),逆時針增加(劍網三的引擎用的是比較麻煩的弧度,一圈為2π,TT),用於進行一些角度計算,比如轉向角度;

2、遊戲開始,資源載入

  a)由資源控制器隨機生成1000個資源小點(1000這個數依然是我隨便寫的),每個點的坐標(X,Y),X和Y均進行random(1,10000或32768)隨機;

  b)在設置好的出生點中隨機10個點,生成長度為5段的蛇,蛇頭初始角度隨機;

3、資源控制

  資源控制器需要每隔一段時間(比如0.5s)進行一次場上所有資源的總和(小點+大點),同時進行一次小點資源的補充,默認每次5個(瞎拍的,按每條蛇每秒吃掉1個小點計算)。大點比較多時,小點的生成速度降低。

4、蛇開始運動,執行本身的AI(由於我最擅長的AI是有限狀態機而非行為樹,因此用xmind大概畫了一下)

5、死亡處理

  a)假設每條蛇死亡時,留下自己身體50%的資源作為屍體;(比如一個長度為100的蛇,死亡後會留下50個大點)

  b)蛇死亡時,將自己身體的每個段的坐標點進行記錄,放入一個table表中;

  c)將table表中的坐標進行處理,每隔一個坐標刪除一個,將t[1],t[3]....t[2n-1]的坐標刪除;

  d)將保留的坐標放入一個新table表,定義為tLEFT;

  e)在tLEFT的每個坐標點生成一個大屍體點;

——————————————————————————————————————

備註1:

  iOS版本中,每次復活的坐標點和初始角度都不一樣;而安卓版本中,每次復活的坐標點和初始角度(0°)都相同;

  iOS版本的好處是,隨機性可以帶來一定的變化,但壞處是,存在出生在地圖邊緣並且在玩家反應不及的情況下直接撞牆的可能性;而安卓版本的好處是,避免了出生就撞牆的可能,但是可能會讓玩家直接復活在其他蛇的包圍之中……

備註2:

  這裡會有兩種處理方式:

  1、10個蛇頭,每個蛇頭循環遍歷場上所有小點資源的坐標(當然可以採用將全場地分成若干個大區域塊的方式,將遍歷的範圍縮小,提高效率),判斷是否已吃掉;

  2、場地中所有的大、小點資源,每個都循環遍歷場上所有蛇頭的坐標,判斷是否已被吃掉;

  這兩種方式看上去每次遍歷的次數好像都是「蛇頭數*資源數」,我不確定哪一種的運行效率會更高。

備註3:

 轉彎角度隨機範圍為(30,330)而非(0,360),是為了避免180°調頭的情況,因為這看上去比較奇怪。


推薦閱讀:

米老鼠的524億美金豪賭:X戰警要回漫威電影宇宙?
新彈丸論破V3,這是一款神展開的瘋狂程度遠遠甩爆前作幾億條街的惡趣味遊戲
《戰地1》評測 可以玩一年的FPS
玩狼人殺的時候有過哪些意想不到的勝利?
對話《寂靜嶺》系列音樂人山岡晃:看好《大聖歸來》成為中國的《戰神》

TAG:游戏 | 人工智能 | 贪吃蛇大作战 |