從0開始搭建一個戰棋遊戲的AI(初級教程)
戰棋類遊戲一直以高策略性著稱,其中不乏經典之作如「三國志英傑傳」、「三國曹操傳」、「炎龍騎士團」、「金庸群俠傳」等等。
今天,我們就如何一步步從0開始實現一個簡單的戰棋類遊戲AI,概述一下此類遊戲AI的設計思路和演算法。(什麼?AI是啥?——人工智慧,通俗來說就是電腦的自動策略。)

戰棋類遊戲的關卡設計思想
經典戰棋類遊戲一般來說AI都比較簡單,豐富高可玩性的關卡和極限挑戰難度,還是要靠關卡設計來做:比如什麼時候敵方出援軍、敵方某個據點什麼時候出兵之類的驅動整個戰局變化的。
這個由於是關卡設計者(一般是遊戲策劃)考慮的範疇,我們今天不討論這個。光討論一個NPC,每回合在正常情況下應該如何決策。
模型分解
我們分析幾款經典的戰棋類遊戲
1、曹操傳
分敵我回合,每回合自由選擇角色先後行動順序。每回合一個角色可以做兩件事——(移動+行為)其中行為又可以細分為攻擊、技能、休息、使用物品(可以給自己或身邊的人使用)2、炎龍騎士團
也分敵我回合,每回合玩家自由選擇角色先後行動順序。還是一樣,決策=移動+行為
行為細分為攻擊、休息、魔法、物品(可以給自己或身邊的人使用)和曹操傳不一樣的地方是移動後不可以使用魔法(必須本回合停留原地才可以使用魔法)無敵我回合,每回合按照角色的身法決定先後行動順序。
決策=移動+行為行為細分為攻擊、用毒、解毒、醫療、物品、等待、休息……其中等待可以將行動延後
……
不難發現,大部分戰棋類遊戲都遵循這個規則:單個回合內角色決策 = 移動 + 行動。
AI框架設計思路
我們本文並不想針對某個特定的遊戲模式來做設計,而是想教大家一個簡單的通用AI如何搭建——
因為大家構思和想做的遊戲系統設定各異,(比如上面幾款遊戲,就分別有自己的各項特殊規則)在此種情況下,我們其實可以搭建一個通用的計算模型,來「海納百川」,實現一個與具體遊戲業務邏輯無關的AI框架。
我們不妨先把技術的東東放一邊,以一個玩家的角度來重現,每一個回合我們人類是如何思考的呢?
「我走到這裡,下回合對方是不是可以走過來打到我?」
「我這一擊剛好可以把對方秒殺,這樣對方就不能反擊我了!」「我移動速度比對方快,我先跑回去補給完,然後再回來打」「調整一下陣型!用防禦力高的人在這個關卡上卡位,弓箭手在後方射。」
總之,決策基準就是如何行動對自己是最有利的。
數學模型
我們可以給每一個行為決策,算出一個「得分」來,最後負分是有害、正分是有利。最終AI的結果就是選擇得分最高的行為。
初級AI的本質是一個貪心演算法
貪心演算法(又稱貪婪演算法)是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的局部最優解。
貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無後效性,即某個狀態以前的過程不會影響以後的狀態,只與當前狀態有關。
通俗來說,貪心演算法就是只看眼前,不看之後的情況。
所以如果我們只看眼前一步,那麼問題就變得很簡單:我如何下這一步棋獲得當前的最高收益?
搭建框架
這樣我們只需要將所有的行為結果都有一個評估的分數,然後遍歷所有的行為可能,取得分最高的評估結果來決策即可。
1、分數評估體系搭建
如何來做這個分數評估體系?——不同的遊戲可以有各自的設定:舉個例子,比如如果某次行動擊中3個敵人,每個人評估扣血100,那麼總共算得300分。比如某次給隊友加血,預估恢復技能能加150血,就算得150分……
所以某次行動的得分應該是本次行動所有影響的結果分數之和。(也可以根據具體需要,調整一些加權係數,後文說明)對自己有利則加分,對自己有害則減分(同理,對敵人有利減分,有害加分)
2、如何遍歷?
很簡單,戰棋類遊戲無非移動+行動,把所有可能走的點全部走一遍,走到了那兒後把所有可能的行動全部做一遍。如果有些行動設計到施展位置,把所有的施展位置全部算一遍即可。
這裡如果效率太低,可以盡情對搜索演算法剪枝,此處不贅述。
3、擴展和調優
有了以上兩步,AI應該就可以跑起來了。我們接下來可以根據具體咱們遊戲的設定來調優,讓AI更加聰明。
拿剛才的例子,比如擊中的3個敵人里有一個可以導致死亡(HP=0),那麼額外再加200分(得分就是500了)。比如加血的隊友血越少得分越高(優先給瀕死的隊友加血),那麼當AI可以選擇兩個隊友加血的時候,自然就會選擇那個更加瀕死的角色。
這裡的設計就跟具體每個遊戲相關,甚至更加複雜的話,還可以考慮地形、站位、AOE覆蓋範圍、加BUFF/DEBUFF、使用道具等各種情況。
這裡還可以賦予不同的角色不同的使命,也只需要在最終的得分上體現即可(比如一個偏輸出的攻擊者,比一個偏防禦的防禦者在「減少敵方HP」的得分上有額外加權)
總之基於這個分數,可以做出一切有想像力的AI來,此處仁者見仁。
結語
我們基於這個思路開發了《金庸群俠傳X》和《江湖X》以及即將發布的《江湖X:漢家江湖》,基本AI是可用的(雖然由於遊戲屬性有點複雜,AI也經常被玩家吐槽)。
最後祝大家開發愉快,有問題可以與我交流。
推薦閱讀:
※旅行的意義:解謎獨立遊戲中的旅途人生
※Virginia:無聲的黑色偵探劇
※黃磊深夜食堂遭遇差評風波,還不如這款由三個90後製作的日系美食經營遊戲
※聊一聊《江湖X》以及它的未來3
※indienova選出的2017十大獨立遊戲
TAG:独立游戏 |




