王 慧,樊澤文,喬秀明
(北京信息科技大學 計算機學院,北京 100192)
游戲與智能體的結(jié)合是當今學術(shù)領域的重要創(chuàng)新,早期智能體在游戲中扮演的是非玩家控制的角色以及怪物,1950年香農(nóng)教授在象棋博弈中使用智能體后,游戲與智能體的結(jié)合已經(jīng)走到人們眼前。早期智能體的行為由設計者預先設定,無法產(chǎn)生動態(tài)變化,行為較為單一,對其進行智能學習后智能體可以打破傳統(tǒng)的預設模式,根據(jù)當前游戲環(huán)境狀態(tài)和自身狀態(tài)表現(xiàn)出一些自主行為。隨著不斷的學習,智能體自身的性能會不斷改善,能夠更好的在復雜多變的游戲?qū)?zhàn)環(huán)境下制定高效的作戰(zhàn)策略,并根據(jù)當前環(huán)境適當?shù)恼{(diào)整。
多數(shù)人通過網(wǎng)絡認識智能體,越來越多的智能體博弈游戲出現(xiàn),從棋類游戲到規(guī)則更為復雜的MOBA類游戲以及RPG游戲等。智能代理在游戲中的應用也越來越多,比如星際爭霸Ⅱ,可提取游戲各種信息并保存在字典中,將數(shù)據(jù)轉(zhuǎn)換為多維數(shù)組對象,支持將多模態(tài)信息輸出,也可以將智能體的輸出動作,映射到實時環(huán)境中。
智能體是機器學習研究中的一個新領域,其動機在于通過嘗試模擬和實現(xiàn)人類學習行為,建立起智能體的知識結(jié)構(gòu),并不斷地修改其結(jié)構(gòu),使其自身性能不斷改善。近年來,智能體在實時游戲中的應用越來越多,比如星際爭霸Ⅱ,可將多模態(tài)輸入數(shù)據(jù)表征輸入到環(huán)境代理組件,同時將環(huán)境代理組件的輸出動作,映射到實時環(huán)境中。
星際爭霸系列是由暴雪娛樂制作發(fā)行的即時戰(zhàn)略游戲,自1998年以來已經(jīng)發(fā)行三版,成為近二十年來最暢銷和最杰出的游戲之一。在游戲中,玩家需要控制神族、人族、蟲族三大種族之一的勢力,去完成具有未來科幻風格的軍事化戰(zhàn)役。玩家需要不斷開拓視野,收集資源并擴大己方優(yōu)勢,最終摧毀對方基地,以獲得全部勝利。關于對星際爭霸系列游戲的研究早在2010年就已經(jīng)開始,起初研究人員主要以構(gòu)建硬編碼智能體參與競技比賽,但是此類模型沒有學習能力,完全基于預設規(guī)則執(zhí)行動作,這種模型雖然可以擊敗星際爭霸內(nèi)置AI,但還遠未達到人類基本能力。直到2017年DeepMind公司聯(lián)合暴雪娛樂共同發(fā)布了星際爭霸Ⅱ人工智能研究環(huán)境,星際爭霸Ⅱ也推出了一年一度的天梯賽——StarCraft 2 AI Ladder,為更多的智能體研究人員提供了更好的測試環(huán)境和數(shù)據(jù)支持。
本文研究游戲環(huán)境信息交互過程,如圖1所示。首先,提取出游戲中的玩家信息和環(huán)境信息,將提取出來的數(shù)據(jù)信息轉(zhuǎn)換成多維數(shù)組的數(shù)據(jù)結(jié)構(gòu),并以字典格式保存;其次,將智能體決策出的動作執(zhí)行到環(huán)境,首先根據(jù)游戲需求設計動作,將其添加到動作集中;最后,將動作解析成智能體能夠處理的格式,使其能夠執(zhí)行到環(huán)境中。
圖1 游戲環(huán)境信息交互過程Fig.1 Game environment information interaction process
游戲地圖中包含了屏幕信息、玩家和游戲信息等多模態(tài)數(shù)據(jù),通過提取特征層來提取出來,并轉(zhuǎn)換成能夠輸入到智能體的數(shù)據(jù)表征。
將動作執(zhí)行到環(huán)境模塊,本文設計研究的動作均為即時戰(zhàn)略游戲中一些常見單位,士兵、戰(zhàn)斗機、坦克等的基礎動作,例如:攻擊、移動等。每個單位必要的基礎動作類型,包括攻擊、移動、停止、巡邏、原地防御以及啟用武器。
游戲環(huán)境提供的觀察量共包含16大類的數(shù)據(jù),例如:玩家信息、上次選擇的動作信息、得分信息等。環(huán)境推進過程中智能體的決策會利用到相關觀察量。本文將提取出游戲環(huán)境中封裝好的玩家和游戲信息,并將其轉(zhuǎn)換成多維數(shù)組的數(shù)據(jù)結(jié)構(gòu)。
觀察量信息及其參數(shù)已被封裝在文件中,主要包含游戲畫面信息、小地圖信息、玩家信息、可用動作集合等共12種,部分觀察量信息見表1。本文將通過觀察者模式反射,得到玩家和游戲信息,并自動更新。
表1 觀察量集合Tab.1 Set of observations
提取玩家和游戲信息,需要連接API接口,通過觀察者模式使所有依賴于此模式的對象都能得到自動更新,提取玩家和游戲信息時需要傳入智能體,或者長度不同的參數(shù)組合,并且匹配接口的格式。首先,匹配游戲環(huán)境中定義的觀察量規(guī)格;其次,將python數(shù)據(jù)與某些二進制文件進行交互,客戶端發(fā)送請求,獲取當前觀察數(shù)據(jù),使用觀察者模式將依賴于此模式的對象都得到通知并被自動更新;最后,將提取的信息存儲為字符串類型的觀察數(shù)據(jù)。
提取完成后,游戲的各種觀察數(shù)據(jù)將以字符串的形式保存在數(shù)組中。智能體的輸入,需要字典格式的數(shù)據(jù)類型,本文將通過轉(zhuǎn)換函數(shù)將游戲信息轉(zhuǎn)換為強化學習可以處理的數(shù)據(jù)結(jié)構(gòu)。智能體輸入數(shù)據(jù)時挑選所需要的數(shù)據(jù),編碼后即可輸入。
將觀察結(jié)果轉(zhuǎn)化為智能體可處理的結(jié)果。首先,需要創(chuàng)建一個字典,用來存儲各種類型的數(shù)據(jù),儲存的數(shù)據(jù)是從游戲環(huán)境提取的信息,包括地圖名稱、上次的操作、單選、創(chuàng)建隊列等;判斷特征尺寸是否存在于智能體接口迷你地圖特征以及屏幕特征中,則將觀察量和智能體的接口的參數(shù)進行指定軸的鏈接,通過指定的軸鏈接屏幕和小地圖數(shù)組特征,將數(shù)據(jù)以流的形式讀入,轉(zhuǎn)化成多維數(shù)組對象。智能體的輸入數(shù)據(jù)就可以從字典中挑選需要的數(shù)據(jù),編碼后作為智能體的輸入數(shù)據(jù)。
輸出數(shù)組包括動作結(jié)果、受到攻擊的張量、得分、得分類型、必要得分、玩家參數(shù)、單元向量、單選和多選、計算單元特征、匹配單位向量等數(shù)組。
游戲信息提取并完成轉(zhuǎn)化后,將其以多維數(shù)組格式存儲。表2為提取后的部分游戲信息,最終轉(zhuǎn)換結(jié)果為24組數(shù)據(jù)信息,可以直接從中抽取智能體輸入需要的數(shù)據(jù),編碼即可使用。
表2 玩家和游戲信息Tab.2 Player and game information
星際爭霸Ⅱ游戲中每個兵種都有自己獨特的動作類型,但每個兵種共有的基礎動作相同,包括攻擊、移動、停止、巡邏、原地防御5種,不同單位這5種動作的基本細節(jié)不同。每個單位的攻擊方式不同,移動速度不同,巡邏地點與范圍也有差異。本文設計兩種動作類型,一是簡單動作,只涉及到單位自身的動作,如移動;另一種類型是組合動作,涉及到多個單位,或者說有觸發(fā)的前提條件,如攻擊。
根據(jù)對星際爭霸Ⅱ的動作調(diào)查,玩家可以對游戲做出相應動作與控制,包括視野,選中單位等,使得玩家可以對兵種單位進行控制。玩家可以對地圖和單位做出下列操作:為動作原型選擇動作空間、移動攝像頭等。一個游戲中會包括許多基本動作,而基本動作組合后成為組合動作,組合動作所衍生的動作空間很大,需要使用組合動作函數(shù),每一個函數(shù)都帶有一定的參數(shù),共13個,這樣可以簡化游戲的動作空間。
執(zhí)行動作根據(jù)游戲需要設計動作類型,例如:攻擊、移動等,本實驗使用代理組件庫中提供的動作格式設計動作,并將其轉(zhuǎn)換成智能體可以處理的格式,最后根據(jù)動作實際執(zhí)行效果,人為驗證動作是否合理可用。
智能體將動作作用到環(huán)境。首先,分別取出一個觀測空間的維度和一個動作空間的維度,并取出智能體;其次,使用相關函數(shù)初始化,關聯(lián)動作空間和觀測空間。對智能體的所有環(huán)境初始化,取出其中的所有動作,對其進行訓練,直到達到最后一幀,將智能體動作傳送到環(huán)境中,完成動作映射。通過判斷動作是否可用,參數(shù)數(shù)量以及參數(shù)是否有效,決定動作是否執(zhí)行成功。
本文測試是基于銀河編輯器為模型人為添加動作,故無法保證每個動作的正確性和可行性,需要根據(jù)游戲邏輯返回不同函數(shù),根據(jù)實際游戲動作人為認證效果是否正確。為設計好的動作搭建測試環(huán)境,進行編碼測試,測試主要采用了前后端分離的方式,前端基于已有的銀河編輯器,在GUI界面進行游戲環(huán)境的設計,提供一個相對完善的游戲環(huán)境,玩家可以在指定區(qū)域內(nèi)自行放置單位,并且設置單位的生命值、移動速度、搭載的武器、射程范圍、單位所有動作等屬性;后端利用環(huán)境代理庫中的決策函數(shù),以游戲環(huán)境觀察量以及單位和單位所有動作為基礎,隨機決策出一個動作,作用于環(huán)境,人為觀察動作執(zhí)行過程與執(zhí)行結(jié)果,測試動作結(jié)果見表3。
表3 測試動作列表Tab.3 Test action list
本文詳細的描述了面向環(huán)境感知的實時游戲數(shù)據(jù)交互的全部實現(xiàn)過程。在環(huán)境代理庫中尋找到游戲環(huán)境信息的表示后,通過判斷游戲屏幕和小地圖特征圖層的信息,提取特征層、游戲信息并轉(zhuǎn)換為智能體的輸入數(shù)據(jù)格式,為智能體的訓練提供觀察量,最后使智能體成功執(zhí)行動作,更新游戲地圖。