為什么要研究游戲 AI 呢?
作者 | 葉鑫來源 | DatawhaleAI作為時下計算機算法的超級巨星,在例如CV、NLP、語音、機器人等諸多領(lǐng)域都有廣泛的應(yīng)用。而在游戲領(lǐng)域,AI的應(yīng)用往往被認為只是把游戲角色擬人化,算法的第一印象也通常是強化學習。但實際當中,AI在游戲中的應(yīng)用卻不止于此。本文就來介紹一下游戲領(lǐng)域的AI應(yīng)用與算法。
自 AI 的想法誕生以來,游戲一直為 AI 的研究過程提供助力。游戲不僅提出有趣且復(fù)雜的問題來供AI解決————例如去精通一個游戲;它們也為(人類,甚至機器)用戶能夠體驗到的創(chuàng)意以及表達提供了一個畫布。因此可以說,游戲是罕見的,是科學(解決問題)與藝術(shù)相碰撞并相互作用的領(lǐng)域,而這些因素也讓游戲?qū)τ贏I的研究來說成為一個獨特并且優(yōu)秀的環(huán)境。然而不僅是AI在游戲中提升,游戲也在AI研究中得到了發(fā)展。——《Artificial Intelligence and Games》
01 從游戲環(huán)節(jié)看AI應(yīng)用
在游戲領(lǐng)域中,AI的應(yīng)用其實并不僅僅是人們印象中的玩家型戰(zhàn)斗AI。傳統(tǒng)意義上的游戲制作融入了AI的方法之后在各個環(huán)節(jié)都催生了相應(yīng)的應(yīng)用與算法。如果我們將一款游戲拆開來看他的各個環(huán)節(jié),這些AI的應(yīng)用就變得直觀起來。
1.1 游戲畫面
在游戲制作的環(huán)節(jié)里,開發(fā)者需要制作相應(yīng)角色的動畫模型,來滿足使用者在游戲內(nèi)視覺上的需求,在傳統(tǒng)的游戲制作上,通常需要一名專門游戲原畫師來制作相應(yīng)的內(nèi)容,但是聚焦到游戲內(nèi)角色們的表情與動作這些細節(jié)上時,動畫的設(shè)計通常變得吃力不討好起來,應(yīng)用視覺AI可以將人們的動作投影到角色身上,生成相應(yīng)的動作表情;而在環(huán)境的設(shè)計中,AI也可以起到相似的效果,通過輸入現(xiàn)實的圖片來得到相應(yīng)的游戲畫面。在這個問題上,CV中的機器學習方法例如姿態(tài)識別,表情識別,GAN等起到了關(guān)鍵性的作用。下面幾個例子帶你一窺AI是如何創(chuàng)造游戲畫面的。
1.2 玩家型AI
該類型應(yīng)該是最被大眾所熟知的游戲AI類型,2017年AlphaGo擊敗世界圍棋冠軍李世石,2019年OpenAI Five擊敗DOTA2世界冠軍OG證明了AI在游戲上的表現(xiàn)可以超越人類。而此類AI問題本質(zhì)上可以看成是路徑規(guī)劃問題,即根據(jù)當前的游戲狀態(tài)生成相應(yīng)的動作序列。典型的以強化學習、深度強化學習為代表的游戲AI目前在國內(nèi)的游戲工業(yè)界已被大量研究,在某些游戲類型例如棋牌類、回合制策略游戲中,蒙特卡洛搜索樹(行為樹)、演化算法、A*等在線學習算法也具有一定優(yōu)勢。
1.3 游戲內(nèi)容
在這一方面的AI應(yīng)用常常不為人所知,通常被稱為Procedural Content Generation(PCG)。在游戲內(nèi)容(地圖)的產(chǎn)出上,以魔獸爭霸3為例,一方面依賴于游戲本體制作時開發(fā)者制作的地圖;另一方面依賴于社區(qū)玩家的自定義地圖,而社區(qū)玩家內(nèi)容又更是由玩家數(shù)量所決定,豐富且可行的游戲內(nèi)容是吸引玩家入坑的重要保障。利用AI去生成可行的游戲內(nèi)容是非常值得研究的方向。目前該方向的主流算法包括演化算法、GAN等。
1.4 游戲初始化平衡
目前在卡牌類游戲中,為了初始化得到的卡牌或是環(huán)境相對平衡,在PVE游戲中體現(xiàn)為玩家可以戰(zhàn)勝Bot,PVP游戲例如爐石傳說、自走棋,防止出現(xiàn)雙方卡牌差距過大導(dǎo)致輸?shù)?,可以利用AI來設(shè)計發(fā)牌的策略。該方向的主要算法為演化算法。
1.5 游戲測試
在游戲制作完成后,開發(fā)者們需要測試游戲內(nèi)存在的bug,這毫無疑問是重要的,如果一款游戲存在大量的bug,對該游戲的評價和收益都會造成巨大的影響。而測試游戲需要大量的時間,在這一方面,測試專用的agent可以被設(shè)計來面對這一挑戰(zhàn),目前這一塊的算法主要為蒙特卡洛搜索樹、強化學習、深度強化學習等。
1.6 用戶畫像
在游戲的運營過程中,玩家在游戲內(nèi)的行為會產(chǎn)生豐富且復(fù)雜的數(shù)據(jù),這些數(shù)據(jù)內(nèi)折射了玩家的行為,分析并合理利用這些數(shù)據(jù)可以提煉出有價值的信息,這些信息可以用作促進游戲更新更多玩家喜歡的內(nèi)容,預(yù)測玩家的行為和喜好,檢測作弊外掛等。這一種游戲中的數(shù)據(jù)分析問題被稱為用戶畫像問題,利用合理的機器學習算法可以極大提升玩家的游戲體驗。
02 AI應(yīng)用在游戲中的詳細分類
【硬核預(yù)警】下面將參考開篇提到的的《Artificial Intelligence and Games》,對游戲領(lǐng)域的AI從應(yīng)用和方法兩方面做匯總介紹,在方法部分會涉及大量AI技術(shù)。
- 利用AI玩游戲
- 利用AI為玩家建模
- 利用AI生成游戲內(nèi)容
2.1 利用AI玩游戲
在游戲中建立bot。
依據(jù)數(shù)據(jù)和預(yù)算產(chǎn)生不同水平的agent,可以與玩家共同匹配或作為PVE的NPC等提高玩家體驗水平,由此引申的功能可以有動態(tài)難度調(diào)節(jié),游戲自動平衡。
在投入運行前,可以通過投入大量的有測試行為的agent進入游戲,根據(jù)其行動期間的log異常來得到一些bug,或是通過bot間的對戰(zhàn),依據(jù)一定的判定方法來得到版本數(shù)值平衡性分析。
在游戲投入運行得到一定的玩家數(shù)據(jù)前,可以使用agent的行動來得到仿真的玩家數(shù)據(jù),例如陣型識別,勝率預(yù)測等數(shù)據(jù)。
根據(jù)共同演化的方法,一系列基礎(chǔ)的agent可以通過參數(shù)演化或者agent間對抗性的方法來催生性能更好的agent。
尋路規(guī)劃可以被視為AI動作序列輸出的一種特例。在某些游戲例如馬里奧中,尋路算法本身就構(gòu)成了AI player。
- Planning-based:最佳優(yōu)先搜索(例如 ),蒙特卡洛樹搜索,演化規(guī)劃
- 基于模型的強化學習
- 靜態(tài)類方法:狀態(tài)機,行為樹,基于效用(啟發(fā)式)函數(shù)的AI方法
- planning-based:STRIPS(符號化表示規(guī)劃)
- 強化學習:需要高度表格化表示。
- 深度強化學習:基于游戲圖像,不需要標記數(shù)據(jù),但需要有游戲?qū)崟r的獎勵設(shè)置。
- 演化算法:通過演化算法來更新神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和權(quán)重來達到最優(yōu)化。
- 模仿學習:根據(jù)玩家的數(shù)據(jù)來學習游戲的策略,基于游戲圖像,需要玩家數(shù)據(jù)。
- 逆強化學習:根據(jù)策略來學習游戲中的獎勵分布。
2.2 利用AI生成游戲內(nèi)容
就是PCG(Procedural content generation),利用AI的方法去協(xié)助設(shè)計游戲系統(tǒng),前置要求是需要比較好的數(shù)據(jù)(包括數(shù)據(jù)的質(zhì)量,數(shù)據(jù)的代表方式,數(shù)據(jù)的數(shù)量)和有代表性的評估方法(包括美學,可玩性,新奇性)。具體的應(yīng)用方法需要進一步查閱資料。
使用領(lǐng)域規(guī)則根據(jù)隨機初始狀態(tài)生成大量不規(guī)則圖形,可用于熱量、雨水、液體流動、壓力爆炸等環(huán)境系統(tǒng)建模,也可以生成洞窟等小型地圖,但無法保證可控性。
定義一系列文法規(guī)則來生成內(nèi)容。
相較于機器學習的方法,搜索方法可以大大減少所需求的數(shù)據(jù)量,關(guān)鍵問題有例如需要確定較好的內(nèi)容表示形式,需要有一種較好的評估手段。有以下幾種分類:
- EA類算法:遺傳算法,演化策略,演化編程
- EA like 算法:粒子群演算法,差分進化算法
- content representation
- 評估方法
-
直接評估是通過某種函數(shù)去約束評估生成的內(nèi)容,包括Theory-driven和Data-driven,區(qū)別在于評估函數(shù)是基于理論還是經(jīng)驗?zāi)P偷摹?
-
基于仿真是利用bot AI去進行游戲來評估游戲的內(nèi)容。包括靜態(tài)評估和動態(tài)評估,區(qū)別是評估函數(shù)是否會隨著時間改變。
-
互動評估屬于實時評估,通過人類玩家的體驗進行評價。包括隱式評估-通過玩家玩游戲產(chǎn)生的數(shù)據(jù)來分析內(nèi)容好壞,以及顯式評估- 玩家直接評分
PCG研究的一個新方向是在現(xiàn)有內(nèi)容上訓練生成器,以便能夠產(chǎn)生更多相同類型和風格的內(nèi)容。這是受最近的深度神經(jīng)網(wǎng)絡(luò)研究結(jié)果的啟發(fā),其中生成式對抗網(wǎng)絡(luò)和變異自動編碼器等網(wǎng)絡(luò)架構(gòu)在學習生成臥室、貓或人臉等圖像方面取得了很好的效果,同時也受到了早期研究結(jié)果的啟發(fā),其中較簡單的學習機制如馬爾科夫鏈和較復(fù)雜的架構(gòu)如遞歸神經(jīng)網(wǎng)絡(luò)都在一些語料庫的訓練后學習生成文本和音樂。
- 神經(jīng)網(wǎng)絡(luò),包括GAN,AutoEncoder和NeuroEvolution等等。
-
概率模型,包括決策樹等
大致的PCGML數(shù)據(jù)代表方式與訓練方法總結(jié)如下:e.將游戲生成內(nèi)容與玩家體驗結(jié)合(EDPCG,Expierience-driven PCG),它包括了三個核心方面: 情緒激發(fā)、情緒檢測和情緒表達。1.數(shù)據(jù)representation:
- Sqquences: 利用順序的向量來作為輸入(輸出)數(shù)據(jù)
- Grid: 使用2D的網(wǎng)格結(jié)構(gòu)來作為輸入(輸出)數(shù)據(jù)
- Graph:使用原始圖像作為輸入(輸出)數(shù)據(jù)
2.PCGML訓練方法:
- Backpropagation: 利用反向傳播作為訓練NN的方法來
- Evolution: 使用演化計算方法來訓練NN或是直接生成結(jié)果
- Frequency Count:使用統(tǒng)計學與馬爾科夫鏈變種來計算概率
- Expectation Maximization: 利用EA算法來訓練無監(jiān)督學習模型
- Matrix Factorization:矩陣因子化是一種數(shù)學方法來將輸入的矩陣分解到更低維度的方法
- 情緒激發(fā): 游戲為激發(fā)情感提供了出色的背景構(gòu)件,因為刺激是變化的,來自不同的來源,如圖像、聲音、故事等等。
- 情緒檢測: 游戲用戶(玩家)通常更愿意提供更多的多模態(tài)性質(zhì)的輸入(通過傳感器),只要這將導(dǎo)致體驗的增強。從某種意義上說,玩家是情感計算和多模態(tài)交互研究的最佳用戶。
- 情緒表達: 用戶在游戲中自愿經(jīng)歷一系列的體驗:這些體驗從非常積極的到非常消極的都有。同時,游戲中的情感體驗是受玩家影響的! 因此,玩家習慣于并在很大程度上對基于情感的表達持開放態(tài)度!
2.3 利用AI為玩家建模
利用游戲產(chǎn)生的數(shù)據(jù)來為玩家建立體驗或行為模型(包括其消費預(yù)測,游戲性行為預(yù)測,體驗感預(yù)測)或是進一步利用該數(shù)據(jù)來更新與描述游戲(例如平衡性分析,游戲流派,提供給Agent更多的訓練數(shù)據(jù))
b.理解玩家在游戲中的行為。AI輔助分析游戲行為,例如發(fā)掘一些新的游戲玩法;可以根據(jù)異常數(shù)據(jù)來判定外掛等作弊系統(tǒng);形成可觀的游戲數(shù)據(jù)來支持新的游戲AI迭代;輔助設(shè)計更具有公平性的匹配系統(tǒng);預(yù)測玩家的行為;對玩家社交群體分類;分析玩家的性格。
-
Experience: 玩家在游戲過程中的感受,包括:一系列(合成的)感受、認知、行為狀態(tài),或是其他的用戶狀態(tài),情緒和認知等
-
Behavior:玩家在游戲過程中的行為。
-
model-based(理論驅(qū)動):從一些列玩家心理學、認知學的研究中得到一些玩家對應(yīng)游戲的模型,來自上而下的設(shè)計游戲
-
model-free(數(shù)據(jù)驅(qū)動):不利用之前的學科研究來對玩家進行自下而上的建模,其中包括可視化,例如熱力圖來衡量玩家的活動頻率。
玩家建模包括尋找一個函數(shù),將玩家的一組可測量的屬性映射到特定的玩家狀態(tài)。按照監(jiān)督學習的方法,這是通過機器學習或自動調(diào)整模型的參數(shù)來實現(xiàn)的,以適應(yīng)包含一組輸入樣本的數(shù)據(jù)集,每個樣本與目標輸出配對。輸入樣本對應(yīng)于可測量的屬性(或特征)列表,而目標輸出對應(yīng)于我們有興趣學習預(yù)測的每個輸入樣本的玩家狀態(tài)的注釋。如前所述,注釋可以從行為特征,如關(guān)卡或玩家原型的完成時間,到玩家經(jīng)驗的估計,如玩家的挫折感等。
很多時候,我們面臨的數(shù)據(jù)集是沒有關(guān)于玩家行為或經(jīng)驗狀態(tài)的目標輸出。在這種情況下,玩家的建模必須依靠無監(jiān)督學習。無監(jiān)督學習的重點是通過發(fā)現(xiàn)輸入的關(guān)聯(lián),在沒有獲得目標輸出的情況下,將模型與觀察結(jié)果相匹配。輸入通常被視為一組隨機變量,通過觀察輸入向量之間的關(guān)聯(lián)來建立模型。應(yīng)用于玩家建模的無監(jiān)督學習包括聚類和關(guān)聯(lián)挖掘等任務(wù)。





