遊戲AI:AI的遊戲還是遊戲的未來
2019年08月19日15:02

  當下,人工智能(Artificial Intelligence)這一詞彙在科技領域中的提及頻率日益增長,而在遊戲領域,AI一直是電子遊戲的基石。本次‘真經閣’特邀筆者——應用研究工程師Jim將對以往遊戲AI領域的書籍及資料進行彙總,帶領讀者回溯遊戲AI的簡史;並進一步結合個人理解,解析AI與遊戲這兩個領域的緊密聯繫與它們之間在未來可能碰撞出的火花。

  1974年,一個名叫史蒂夫·喬布斯的年輕人來到了雅達利(Atari)公司位於洛思加圖斯的總部,拿著一塊他朋友沃茲尼亞克做的電路板,手舞足蹈的比劃,試圖讓對方相信這個自製版的雅達利經典之作Pong是他做出來的,如果不給他一份工作就不會離開,後面他順利的加入了這家當時矽谷最酷的公司,並和沃茲尼亞克一起參與研發了一款叫《Breakout》的遊戲的原型,它們和《太空侵略者(Space Invader)》、《食鬼(Pac-Man)》等遊戲一起,成為了後面雅達利推出的傳奇主機Atari 2600上的經典遊戲[1]。

  誰能想到,僅僅十年後,1984年,電子遊戲業的先驅雅達利,已經迅速的在一場被稱為“雅達利崩潰”的遊戲業大蕭條中被出售,而喬布斯創辦的蘋果公司在通過Apple II確立了在個人計算機市場的領先地位之後,又推出了第一款的Mac電腦,憑藉一體化設計和圖形化用戶界面設計再度轟動市場;2007年,第一款的iPhone的推出重新定義了智能手機,並將傳統的遊戲市場從遊戲主機和PC向移動設備拓展;2011年,成為新一代青年偶像和創業者教父的喬布斯去世,留下了一家全球市值最高的科技公司,與此同時,雅達利在多次的轉賣之後徹底消失在大眾的視野里。

  但是幾十年前那些在簡陋的電路板上的天才創造很快又以一種大家沒有預想到的形式回到風口浪尖上,2013,倫敦,一家叫Deepmind的創業公司提出了用一種叫深度強化學習的方法來模擬人類玩雅達利2600上的經典遊戲,包括《Pong》、《Breakout》等等,在不依賴人類數據的前提下超越了人類玩家的水平[4]。在被Google收購之後,Deepmind在2016年又推出了圍棋AI程序AlphaGo,接連擊敗人類世界冠軍,在1997年國際象棋世界冠軍卡斯帕羅夫輸給IBM的深藍之後,不到20年的時間,圍棋也相繼宣告失守,以Deepmind、OpenAI等為代表的一系列人工智能公司將21世紀初由大數據和深度學習方法引領的又一輪人工智能浪潮推向巔峰。

  電子遊戲作為計算機產業的派生產物,在這幾十年里獲益於前沿技術的推動,迅速的成長為每年市場份額過千億美金的龐大產業,而同時遊戲也給計算機技術的前沿研究提供了大量的實驗場景和驅動力,出現了一個良性循環的狀態。

  在這些技術的支持下,現在的遊戲產品與比幾十年前比,有更精美的畫面,有更真實的音效,可以有更多天南海北互不相識的人一起玩,甚至開始有了AR、VR這些在人機交互方式上的創新,無一不讓玩家感到驚喜。

  但從另外一個角度看,遊戲的核心玩法似乎並沒有更多的改變,主要的遊戲品類,在20甚至30年前就已經出現了。新遊戲的設計和玩法的創新還是高度依賴有經驗的遊戲研發人員,大型遊戲的研發所需要承擔的風險和代價越來越大,一方面來自於在玩法創新上的思路枯竭,另一方面還來自於要填充的海量內容,大量的真實3D場景、角色設計、劇情甚至到每一幀的角色動畫的仔細打磨。畢竟,無論是主打PVE還是PVP的遊戲,都需要有大量內容的填充,才能使得遊戲更為充實,才能滿足日益挑剔的玩家需要,在競爭激烈的市場中奪得一席之地。但是目前的人工智能技術雖然可以在StarCraft這樣複雜的遊戲中擊敗人類的職業選手,但是對遊戲的玩法本身帶來的幫助似乎有限,更別提創造出新的玩法或者遊戲了。

  但是業界在不停的嚐試,試圖通過人工智能技術去理解玩家在遊戲中的行為,優化玩家的遊戲體驗以及加速遊戲的研發進程,在這個系列文章裡面,我們會嚐試從自己的角度來闡述如何應用人工智能技術來優化遊戲體驗和提升遊戲的研發效率,雖然很多的思路和嚐試還不成熟,但是希望拋磚引玉,可以和所有有誌於人工智能技術,應用新技術改進遊戲研發的人一起討論和進步。

  為了可以更透徹的說明AI技術和遊戲研發應用之間的關聯和區別,下面嚐試分別從AI研究方向和遊戲研發應用兩個角度來看遊戲AI這個問題,以及解釋我們的整體思路。

  AI的遊戲

  從人工智能研究者的視角出發,遊戲是一個非常優秀的研究環境,因為遊戲通常是人類世界中某一類或幾類問題的抽像和簡化,而且具備實驗成本低(與現實世界的實驗比)、可重複性高等優點,通常遊戲的核心玩法都需要展現出相當程度的智能行為,無論是下圍棋、打德州、組隊五黑打《英雄聯盟》還是自己玩連連看、俄羅斯方塊,都需要有深入的思考或者敏捷的反應,從不同角度和程度上展現出人類的智能行為。因此,人工智能研究者都著眼於設計出一個可以在公認複雜的遊戲中取勝的方法,這是進行創新和展示技術實力的最為直接的方式,譬如深藍之於國際象棋,或者AlphaGo之於圍棋。

  而著眼的問題也越來越複雜,從象棋到圍棋,再到《Dota》或者《StarCraft》這樣的實時戰略遊戲。

  在早期的遊戲AI相關工作中,最為常見的的方法如樹搜索(Tree Search)及其變體的為主的規劃類方法。在類似象棋或者圍棋這樣的棋類遊戲中,博弈樹(Game Tree)是一種常用的遊戲建模形式,在博弈樹上以找到最優解法為目的進行搜索就是最直接的實現AI的方式。但是在給定計算資源的前提下,搜索的效果總是和原始問題的複雜度成反比。從幾個常見棋類遊戲的複雜度上可以看到,單純的搜索很難取得好的效果。因此搜索+極小極大算法剪枝,或者啟髮式的搜索,再加上強大的計算能力,在較為簡單的棋類遊戲上可以取得比較好的結果,譬如戰勝卡斯帕羅夫的IBM深藍,就是通過在針對國際象棋場景特製芯片上進行alpha-beta剪枝+暴力搜索實現的。

  但這樣的方法,在面對更為複雜的遊戲,如圍棋,其遊戲複雜度比象棋相比是指數級的增長,完全依靠搜索不是一個理想的思路。

  20世紀90年代,當時的圍棋AI第一人,曾經六奪國際圍棋AI冠軍的程序“手談”的作者,中山大學陳誌行教授,在半自傳作品《電腦圍棋小洞天》中就提到當時(2000年)圍棋AI的一些局限性[2]:

  •對全局局勢的判斷:受計算能力的限製,在圍棋中難以基於博弈樹搜索給出對當前局勢的精確判斷;

  •局部死活的計算方法:局部棋的死活,也不能完全基於定式庫+搜索的方法,應該多考慮一些基於直覺判斷的方法作為補充;

  •如何突破定式:象棋AI程序可以通過自身的思考(搜索)突破一些已有的定式,創造出新的合理的走法,但是圍棋AI卻做不到,在對戰人類棋手時的缺陷非常明顯。

  在現在看來,以陳教授為代表的一系列圍棋AI先行者所考慮的問題是非常有前瞻性的,純粹以搜索+人為規則為基礎的方法是沒有辦法解決非常複雜的問題的,陳教授在“手談”的一個改進版本“烏鷺”中,便引入了模式識別的思想來改進對局部死活的判斷,即將局部旗子的形式作為圖型編碼輸入,把需要下一步需要關注的走位作為輸出,存在模式庫中,作為對純搜索的補充。這裏的模式識別的方法雖然和人工智能中模式識別(Pattern Recognition)相去甚遠,但是其“憑經驗直接看出關鍵走位/一塊棋死活”的主要思想和後續基於機器學習方法在圍棋AI上做出突破可以說是非常一致的,只是受製於當時計算機硬件和軟件的發展水平,相關的思路和嚐試並沒有獲得很好的結果。

  在不到10年後,研究者將樹搜索進一步拓展,引入了蒙特卡洛方法(Monte Carlo Method)和馬爾可夫決策過程的概念(Markov Decision Process),提出了蒙特卡洛樹搜索方法(Monte Carlo Tree Search,MCTS),基於MCTS的圍棋AI從2008年開始戰勝業餘人類棋手,在2013年前後達到了可以與職業棋手在讓4-5子的前提下進行對弈的水平[5]。

  而在這10年間,得益於互聯網時代的到來,不同領域的數據獲取的成本都急劇的下降,海量數據成為了機器學習領域快速前進的助推劑,尤其是以深度學習為代表的複雜人工神經網絡方法,在機器視覺、自然語言處理、推薦系統等領域都取得了不錯的成果並形成了成熟的工業解決方案。這些可以從海量的人類標註數據中學習複雜規律的機器學習方法,正是十多年前圍棋AI所夢寐以求的最後一塊缺失的拚圖。

  2015年,Deepmind的圍棋AI程序AlphaGo橫空出世,首次在無讓子的對局中擊敗人類職業棋手,2016年1月,Deepmind在Nature上發表相關論文“Mastering the game of Go with deep neural networks and tree search”[6],而後不久的2016年3月,AlphaGo在五番棋比賽中以4:1擊敗人類世界冠軍李世乭,引發了新一輪的人工智能狂潮。

  在這個版本的AlphaGo Lee中,從曆史對局中提取了3000萬樣本數據進行初始的監督學習(Supervised Learning)策略模型訓練,使得AI可以根據一個給定的盤面判別下一步的走法,並在此之上,採用了強化學習(Reinforcement Learning)的思想對AI的走子能力和局面判斷能力進行進一步的提升,基於這種方法強化的MCTS終於在面對人類職業棋手上取得了突破性進展,在不同的線下和線上比賽擊敗所有前來挑戰人類高段職業棋手,並於2017年初以3:0再度擊敗人類世界冠軍柯潔。

  在2017年底,進化版的AlphaGo Zero在不依賴任何人類數據的情況下,依賴深度強化學習和自我對弈的方法,21天訓練超越之前所有版本的AlphaGo程序,徹底明確了AI在圍棋領域的霸主地位[7]。

  同時,深度強化學習繼續在更多的遊戲場景上取得突破,從《Dota2》的OpenAI Five到《StarCraft2》的AlphaStar,都取得了媲美職業玩家的表現。不依賴人類標註數據,在虛擬環境中自我探索進行學習達到並超過頂級人類選手的表現,使得深度強化學習方法成為人工智能研究最為火熱的前沿,並被視為通往通用人工智能(Artificial General Intelligence)的一條可能的道路。

  另外一個重要的方向,是與博弈論(Game Theory)有關的,在諸如德州撲克、麻將、鬥地主等許多牌類遊戲中,一局的信息並不是對決策者完全可見的,在AI進行計算的時候,需要對對手的狀態和策略進行某種程度的猜測,這使得問題的複雜度進一步提高了,也沒有辦法直接用樹搜索的辦法來處理。

  博弈論方法的引入,為在不確定性問題的處理上提供了理想的技術工具,譬如基於反事實遺憾最小化(Counter Factual Regret Minimization)方法實現的德州AI,通過尋找博弈中的納什均衡點,在1對1,以及最近在多人德州撲克遊戲上擊敗了人類職業玩家。同時,博弈論和多智能體(Multi-agent)相結合,在如同機器人足球,線上多人遊戲的場景中,探索不同智能體間合作和對抗的策略,也給AI的研究方向帶來了許多創新的想法,而且對於解決現實世界中的問題都是非常必要的,因為真實環境中AI面對的絕大多數問題,都是信息不完全而且存在多方合作或對抗的情況。

  從上述的曆程,我們可以看到,針對遊戲相關的研究一直處於人工智能研究的最前沿,從基於規則、暴力搜索走向基於數據驅動的機器學習方法,從依賴人類曆史數據走向人類設定規則、自我探索,從個體走向群體,從抽像走向真實,在這個過程中,遊戲作為人類世界的簡化和抽像,給AI研究提供了環境和方向,並激勵AI研究者探索新的未知。在AI技術發展如日中天的現在,作為遊戲從業者,是不是應該從另外一個角度考慮,這些AI技術,又給遊戲自身的發展,帶來了什麼呢?

  遊戲的未來

  從雅達利上的Pong開始,AI就一直是遊戲中的重要組成部分,充當玩家的虛擬對手、探險路上提供食宿的村民、鼠標一點指揮千軍萬馬井然有序奔向敵軍、又或者是一花一草栩栩如生的虛擬世界,遊戲世界中的許多驚喜,背後都有AI技術的支持,而正是這些技術的存在,使得遊戲變的更有趣或者體驗更順暢。

  《AI for Game Developers》是針對遊戲研發者的遊戲AI介紹經典教材[8],這本出版於2004年的書從在不同環境中的移動、追逐、閃避等實際場景出發,介紹了許多實際遊戲AI開發的技巧,但是書的前半主體部分介紹的都是“確定性”的,依賴於規則或者狀態機的AI實現方法,最後的部分才略微對貝葉斯方法、神經網絡和遺傳算法這些“非確定性”的方法有了一些介紹,而且作者也在書中提到,雖然這些“非確定性”的方法可以給遊戲的可玩性和自由度上帶來更多的空間,但是遊戲業者在成書的年代(2004年)對這些方法保持距離的原因包括:難以理解,難以控製和測試、開發資源有限等,但是作者相信情況正在好轉,遊戲業者在未來會更多的接受這些“非確定性”的方法。

  15年過去了,現在的情況,真的有所好轉麼?

  目前市面上無論主機、手機、單機還是網遊,絕大多數的商業化遊戲產品裡面所使用的AI遊戲技術,依然如同15年前一樣,以規則驅動、狀態機等確定性的方法為主,原因是什麼呢?是業界保守還是這些先進的AI技術有問題?

  2018年有一本介紹遊戲AI的教科書《Artificial Intelligence and Games》(知乎專欄讀書筆記系列文章分享[3]),作者就提出了一個有趣的觀點:目前的遊戲產品的設計源自於人工智能技術還不是非常發達的時代,導致遊戲設計時候對強人工智能的依賴度不大,如果希望有一個人工智能技術扮演主要角色的遊戲產品,最好從頭開始圍繞著人工智能技術出發進行重新的設計[9]。這個觀點有一定合理的地方,AI技術和遊戲研發的磨合的確經曆了漫長而痛苦的過程,但是其實經過這麼多年的發展,一個變革時代已經悄悄來臨,從我們的角度出發,認為有兩個角度是值得關注的:

  •遊戲研發效果和效率的提升

  •遊戲創新的未來

  先說第一點,遊戲研發效果和效率的提升。電子遊戲經過幾十年的發展,在遊戲玩法和表現形式上極大豐富,再也不是一群小夥伴擠在紅白機邊上看著簡陋的畫面玩的熱火朝天的年代了,無論是單機遊戲還是網遊,都需要大量的內容去填充遊戲世界。這裏的內容,包括了遊戲劇情、人物行為、玩法設計、靜態場景、動畫生成等等,而且每個部分都相互關聯,只有更豐富更精細的內容才能讓遊戲產品更吸引玩家,而對於遊戲研發者而言,這就意味著需要更多的人力。

  Rockstar在2018年底發佈的《Red Dead Redemption2》是年度最為熱門的遊戲,遊戲發佈半年內賣出將近2400萬份,多家遊戲媒體都給出滿分評分,可謂市場口碑雙贏之作。但是在同時,一篇揭示Rockstar加班文化的文章“Inside Rockstar Games‘Culture Of Crunch”[10]也在網上引起熱議,文章開篇就舉了一個例子,在遊戲開發的最後一年,公司的高層決定要在過場動畫上下加入黑邊,來模擬老式電影畫面的風格,以求更好的符合遊戲西部牛仔風格的主題。相信所有體驗過遊戲的玩家都覺得這是一個絕妙的創意,但是一個這樣的需求,會導致遊戲研發人員的工時大幅增加,為了保證添加黑邊之後,動畫鏡頭依然是對準了正確的地方,所有做好的動畫都要重做。

  類似這樣的事情,無論是《Red Dead Redemption2》項目組、Rockstar,還是在其它千千萬萬的遊戲公司,都反複的發生,所有的遊戲研發人員,為了構建出一個更完美的產品,不斷的推翻重來,在反複的爭吵、妥協和焦慮中努力推動進度向前,許多從業者甚至認為,在現有的研發機製下,這種加班文化是遊戲研發的必要之惡,是創造出藝術品一般遊戲的必經之路。

  如同前面提到的,為了在遊戲內填充大量的內容,需要大量有經驗的遊戲研發研發人員,無論是遊戲的策劃、程序還是美術,這種對人力的強烈依賴,都導致了遊戲業這種加班文化的出現。而如何將人類的經驗積累並實現自動化,這正是人工智能技術的拿手好戲。因此,我們認為,通過AI技術,實現遊戲研發效果和效率的提升,並不是一件不可能的任務,尤其是在遊戲的智能體控製和程序化內容生成兩個方面,已經有了一些較為成熟的嚐試。

  智能體控製,指的是遊戲中的玩家和非玩家角色的控製,這裏的角色控製,廣義上包括角色的劇本、台詞等,而狹義則指角色的遊戲行為(gameplay),傳統遊戲AI的做法是通過規則驅動的思路來實現,即設計出角色在不同情況下的行為邏輯,再通過角色控製的接口,配合動畫實現具體角色行為。

  隨著遊戲的複雜程度不同,這種規則驅動的方式,從簡單的條件判斷到狀態機,再到有複雜層次結構和控製邏輯的行為樹,已經能在遊戲內呈現豐富的角色行為,但是基於規則的方法畢竟有其局限性,和手談在20多年前面臨的困境一樣,如何突破規則的限製?如何創造出合理的行為?以機器學習為代表的人工智能技術,毫無疑問的可以做到這一點,無論是基於玩家的數據還是自我探索,數據驅動的方法肯定能產生出更創新更高強的行為模式,這一點,已經在AI研究者的探索中得到了充分的驗證。

  在我們的角度出發,首先是要解決不同類型遊戲產品對應的建模問題,由於不同遊戲的玩法迥異,其對應的建模形式也會有所差異,如同前述研究中採用不同領域的方法結合機器學習對問題進行建模,在有大量玩家數據的環境下選用監督學習,在缺乏玩家數據的環境下選用強化學習,利用博弈論方法處理信息不完全或者智能體間對抗的問題等等。其次,要在已經非常成熟的遊戲業立足,一定需要與傳統的開發流程和工具進行比較,因此需要考慮新AI技術的性價比、可解釋性和可控製性。

  非常不幸的是,這正是目前一些AI方法的短處,由於模型本身的複雜程度較高,導致了其難於調整和控製,相應的開發和測試成本也會比較高,因此除了算法的選擇和優化,我們還需要考慮更多的工程問題,如大規模分佈式訓練、模型能力評估、自動化調參、模型壓縮和推理優化等。

  程序化內容生成,是遊戲開發中非常常見的部分,指的是通過程序來自動化生成遊戲的內容(關卡、美術資源等)。一個比較常見的例子就是以Diablo為代表的基於龍與地下城規則演變出的動作RPG遊戲,為了提高遊戲的可玩性和重玩度,這類遊戲一般都包括了可以重複進行探索的關卡,關卡中包含確定的和隨機的迷宮、怪物和獎勵,玩家為了獲得稀有的獎勵反複進行遊戲,而每一次的遊戲體驗都會由於這些隨機因素而產生一定的差異,提高了反複遊戲的趣味性。

  但是這樣的遊戲設定給遊戲研發者帶來了沉重的工作負擔,程序化內容生成正是為解決這樣問題而生的,基於開發者設計的生成規則,結合一定的隨機化因素,就可以自動的生成具體的遊戲元素,譬如地圖上怪物的分佈,數量基於給定範圍的一個隨機分佈,分佈位置則在劃分好的地圖格子上進行局部隨機,在保證合理性的同時保留了合理性。這個部分,在人類數據和機器學習方法的幫助下,我們可以有效的理解用戶行為,結合隨機化生成合理的關卡設計。

  而在美術方面,遊戲美術製作需要大量人力的工作,進行原畫設計、3D建模、動畫設計等,同樣的,從幾十年前到現在,遊戲美術製作工具也出現了日新月異的變化,從以往的完全依賴人力,到了可以基於工具快速生成環境、地形甚至人物形象的方法,在研究方面,近期大火的對抗生成網絡(GAN)和計算機圖形學的結合在這方面有非常多的應用,我們可以看到在人物建模、動畫設計方面取得的一些非常有意思的進展。

  除了AI技術在提升遊戲研發效果和效率之外,第二點我們關注的,還是AI技術和遊戲玩法,尤其是遊戲設計方面的結合。但是這個部分需要更多的遊戲研發人員加入到工作中來,只有從產品和技術兩方面同時的思考和推動才能實現在遊戲產品玩法和形態上的突破,實現通過AI技術改變遊戲行業運作模式,開創更美好的未來的宏願。

  結語

  接下來,關於遊戲AI這一系列的文章會分為應用技術、平台技術兩大方向分別介紹團隊在最近一年多的時間里做的一些嚐試和思考,中間有收穫也有經驗教訓,有非常多不成熟的地方,但是希望通過這些文章的分享認識更多誌同道合的人,一起投入到這個有挑戰也有巨大機遇的工作中來。這個工作,需要學術研究界和遊戲工業界兩方面的同時投入,希望能夠通過我們自己,還有許許多多人的努力,將遊戲AI從AI間的遊戲變成遊戲的未來。

  來源:騰訊遊戲學院

關注我們Facebook專頁
    相關新聞
      更多瀏覽