深度強化學習的人工智慧在遊戲中的運用:遊戲AI入門及AI優化指南

2020-12-10 GameRes遊資網

文/淚的天堂

前言:

現如今,所有電子遊戲都離不開AI的運用,對於遊戲策劃而言AI是什麼,AI又是如何運作,可以說是面試時的加分項,本文在這裡不探討理論的AI(採用深度強化學習的智能AI,如騰訊AI Lab、網易伏羲AI等),旨在分享現遊戲領域廣泛運用的AI,給新人策劃針對遊戲AI、遊戲腳本有一個初步的了解。

(本文接下來不包括AI底層代碼,AI工具開發等程序向內容,該部分在網絡上已經有很多教程大家可以去學習,個人認為策劃對於底層AI的具體實現是不需要了解的,而對於AI製作與優化是需要學習的。)

本文的具體結構

一、AI的應用場景

人工智慧開發是遊戲研發中最具挑戰性的任務之一[1],那麼遊戲中AI的具體使用場景在哪裡呢?

英雄聯盟裡怪物戰鬥AI、場景AI(作用於野怪刷新)、人機挑戰中機器人戰鬥AI

除了大家熟知的LOL,3A大作裡AI一般運用到哪裡呢?

巫師3中的NPC AI,怪物AI等AI運用基本可以囊括現有AI的運用場景

從上面舉的兩個例子,已經可以看出現在製作遊戲離不開AI。

二、AI通過什麼方式進行設計?

現有遊戲AI基本通過下面兩個方式進行實現:行為樹(Behavior Tree)與有限狀態機(Finite State Machines),那麼下面我們就對於這兩個實現方式進行探討。

2.1 什麼是有限狀態機

「狀態機」是一種表示狀態並控制狀態切換的設計模式,常常用於設計某種東西的多個狀態。而有限狀態機是指遊戲內的條件邏輯封裝到各個狀態類裡。例如一個人有站立狀態,跑動狀態,走路狀態,蹲下狀態,開火狀態等[2],當一個事件發生,將會觸發一個動作,或者執行一次狀態的遷移。

但卻有兩個缺陷:

1. 各個狀態類之間互相依賴很嚴重,耦合度很高。

2. 結構不靈活,可擴展性不高,難以腳本化/可視化。

下圖是遊戲中怪物入戰的有限狀態機,如果我們想對攻擊敵人/追擊敵人狀態進行修改,是需要程序給我進行狀態類中內容修改的。

那如果我們可以把本來的巡邏、追擊敵人、攻擊敵人等狀態先進行更細分的封裝,是不是更好呢?那你就可以見到狀態機如下圖一樣的混亂,後期的維護基本很難進行。

結合前面兩種情況,我們又可以發現,使用有限狀態機,策劃不能充分參與其中,只能由程式設計師來完成,這會增加程式設計師的工作量。

綜上所述:在遊戲開發中使用狀態機顯然不失為一種選擇,首先它的概念並不複雜,其次它的實現也十分簡單而直接,所以當一個簡單的npc所需AI,使用狀態機是完全可行的。

但它的缺點卻也十分明顯,例如難以復用,因為它往往需要根據具體的情況來做出反應,當然當狀態機的模型複雜到一定的程度之後,也會帶來實現和維護上的困難。

而現在行為樹比有限狀態的幾個優勢:

1. 行為樹提供了強大的靈活性,很容易更改行為樹的結構,也易於後期的維護與擴展;

2. 在程序開發了元件後,邏輯層面全部交給了策劃,減少程式設計師工作量的同時,讓策劃也可以進行AI問題的初步排查。

正好彌補了我們上面所說的狀態機的缺點,那麼接下來我們就著重介紹行為樹吧。

2.2 行為樹

行為樹就是一棵節點層次分明的樹,控制著AI物體的一系列決定。從樹延伸出的葉子節點,執行控制AI物體的指令。各種工具節點組成樹的分支,來控制AI指令的走向以形成一系列的指令,這樣來滿足遊戲需要。

它可以是一棵很高的樹,可以具有完成特定功能的子樹,開發者可以創建行為庫並把它們適當地連接起來以達到非常真實的AI行為。開發過程是高度可迭代的,你可以先排出一個基礎的行為樹,然後創建新的分支來處理各種達到目標的可選方案,這些分支按照它們的優先級排列,這樣AI在一個特定的行為失敗可以回溯到另一個策略,這是行為樹巨大優勢所在。[3]

現在的很多項目就是Lua做邏輯開發,下圖分享一下項目中使用的Lua版本行為樹。

Lua行為樹執行上圖狀態機的相同AI功能:

如果對於上圖,一個簡單的行為樹看不懂的話,可以閱讀行為樹的工作原理:

在例子中,行為樹的優點是邏輯直觀、一目了然,策劃可以藉助工具直接配置,不需要程序介入。而缺點則是樹分支數量龐大,每次遍歷尋找合適節點的過程消耗高。

三、如何優化AI中的設計

如果僅僅只是講述前面兩點事實,這篇文章就沒有什麼意義,接下來分享一些自己對於AI方面的經驗,也希望在你優化AI的時候,這一部分能夠起到幫助。

3.1 NPC AI

在RPG遊戲發展的過程中,NPC擺脫了原本傻站原地,無腦發放任務的基本模式,融入了各種各樣的AI來豐富行為,《巫師3》中,白天開業的商人,巡邏街道的衛兵;《刺客信條》中,圍成一團的群眾,穿梭街道的小孩;《如龍0》中讓玩家印象深刻的勒索哥等等,這些遊戲中NPC AI的加入讓整個遊戲世界更加的真實,也讓玩家的沉浸感有著質的提升。

拿《逆水寒》NPC來舉例:

1.天氣影響:下雨時,NPC會自己打傘,或奔跑到屋簷下避雨,天氣放晴又會自動收起雨傘。

2. 互動:撞擊NPC可以觸發奇遇,與NPC好感度不同所進行交流的內容不同。

3. 行為:NPC有自己的活動路線,他們有自己的生活區域。

其實在NPC中還有很多其他的內容,更多的天氣感應、更多種類的職業配置,工作任務配置等等,都是讓遊戲內場景顯得更鮮活的方式,在AI中實現NPC具體的功能很簡單,這裡我們分析一下在AI拿到相應的行為前,是如何判定的。

NPC行為類型可以為兩類:

1.外部互動(玩家進行碰撞NPC等)

2.系統變化(天氣、時間等的變化引發NPC行為變化)

而一個NPC的智能行為過程主要分為三步:

1.事件觸發檢測

2.觸發響應得到候選的可執行行為

3.決斷出最終行為並通知AI

事件觸發

外部互動行為本身就是一個事件,所以當客戶端上傳外部事件消息時,直接處理就行了。系統變化是一個值變化事件,例如天氣值從原來的1(晴天)變為現在的4(小雨),這時系統特徵變化事件被觸發。

觸發響應

1.優先級高的行為觸發時,將打斷當前正在執行的低優先級行為。

2.優先級相同的行為觸發時,根據設定的行為類型優先級進行判定,如躲雨被撞擊,觸發外部互動。

3.當前幀在觸發過程中產生的新的觸發,會在下一幀執行,防止循環觸發。

行為決斷

通過觸發響應,得到了對應的候選可執行行為,此時我們就需要根據當前狀態得到最終執行的行為:

1.排除與當前正在執行的行為互斥的行為(行為互斥機制)。

2.優先挑選可持續的行為。

3.進行行為的更新。

在這樣一套流程下來後,AI就可以拿到NPC相應的Action,而具體需要觸發喊話,還是打傘,躲雨等動作,簡單的寫出行為子圖即可。

3.2 機器人AI

機器人AI,在這裡不是指傳統Robot的AI,而是指遊戲中各種活動需要,而生成的玩家鏡像機器人的AI。

在製作機器人AI,首先要知道機器人AI設計的主要目標:

◆ 模擬玩家進行對戰,用於PVP破冰和體驗提升。

◆ 新手過渡,讓玩家體驗活動時,培養成就感,避免尚未熟悉遊戲導致的挫折流失。

◆ 陪伴玩家,用強度合理的AI來陪伴玩家參與活動,減少玩家單人參與的有損體驗。

那麼機器人AI所需要參考的具體內容是哪些呢?

如果按照功能點維度,遊戲中運用到的機器人戰術一般分為三種:

◆ 單體戰術AI——AI的戰鬥細節

◆ 事件響應AI——AI對於事件的響應

◆ 協同戰術AI——AI能夠互相配合

而機器人本身一般需要涵蓋以下特性:

◆ 流暢性——技能釋放與銜接,追擊與逃跑等戰鬥效果。

◆ 擬真度——符合常識的PK反饋,讓玩家沒有違和感。

◆ 環境適應——機器人能夠適應遊戲內不同情境/活動的需要(機器人的廣度)。

◆ 難度可調——機器人的難度(戰鬥能力)可調(機器人的深度)。

那麼你具體的優化方向就可以往三種戰術、四種特性上擴展,以《英雄聯盟》與《逆水寒》為例:

《英雄聯盟》[4]

單人戰術:瀕死逃亡,當電腦在較低血量會逃走。

事件響應:尾刀響應,玩家殘血時,電腦會感知到,並使用全圖技能進行攻擊;推塔響應:玩家推完一塔後,二塔電腦玩家都會響應前來防守;換線響應,上路機器人來中路補線的時候,原本中單機器人會前往上路。

協同戰術:Gank行為:電腦幫助其他線玩家進行多打少局部戰鬥。

在上面的三種戰術的具體實行中,單人戰術大多僅需簡單的配置,而像事件響應與協同戰術需要更豐富的底層機制去支撐,一個協同戰術就需要:Group機制(可以通過發送Message來控制)、目標選擇機制、追擊與逃跑機制等的支撐。

《逆水寒》

雖然逆水寒機器人是深度學習AI進行控制,但其表現仍然可以用在很多先用的MOMORPG之中。

逆水寒機器人中一些出彩的機器人AI

以上就是機器人AI部分的分享,具體機器人AI的Lua行為樹該怎麼寫,這個反而應該是很簡單的存在,並且所需篇幅較長,這裡就不再拓展。

3.3 怪物AI

怪物AI整體的含義很寬泛,這裡不做過多的設計方面的分享,有太多的關卡/戰鬥策劃有自己的真知灼見,這裡就不獻醜,只在AI邏輯中進行一個分享。

前提:一個分為簡單、困難兩個難度的BOSS,擁有普通攻擊1、技能2,50%血量觸發的技能3,困難模式30%血量才有的技能4,撰寫簡單的Lua行為樹。(你可以思考一下打開的行為樹邏輯方式,甚至自己寫一些具體幾個節點的框架)

下圖,是上述BOSS AI子圖中的一部分,這裡為了方便閱讀並理解其中邏輯含義省去了很多重複的邏輯元件運用(castSkillAll應該為一張子圖,這裡就簡單合併為一個元件)。

一個簡單的BOSS AI子圖

在上圖中,需要注意以下幾點對你撰寫AI子圖會邏輯清晰以及方便很多:

1.returnBattle,在我們平時撰寫AI中,我們總會把線遷回到一開始,完成一個閉環,讓整個怪物AI循環起來,這樣做法沒有錯,但是循環再複雜BOSS本身會造成難以閱讀、修改等成本,讓程序直接創建一個回到戰鬥的元件,整個流程圖線性鋪開,十分利於閱讀。

2.putNewAction,有的怪物AI會把不同血量怪物掌握的不同技能再寫一遍,這樣的作法十分冗餘,也讓AI邏輯不利於閱讀,利用插入優先行為的形式,在技能達到觸發條件時,插入到怪物的技能列表裡,讓整個怪物邏輯更加清晰。

3.SkillFlag,起到的是保護作用,設置這樣一個參數,是為了當新技能不會被重複加入,第一次加入技能後,該參數自動變化,後面不會再插入該技能。

當然,在怪物 AI的子圖中還有很多小細節需要注意,但篇幅有限,僅先展開到這裡。

四、深度強化學習的人工智慧在遊戲中的運用。

這一部分僅僅作為簡單的分享,本人也並沒有製作深度強化學習人工智慧的能力,在與該類AI合作的過程中,能夠知道現在這類理論AI在遊戲中能運用到什麼水平。

4.1 深度學習的應用場景

深度學習機器人需學習、調整3個月左右(參照簡單RPG角色,時間受角色信息、樣本數量、場地因素等等多方面限制),能夠達到單人優秀玩家的水平。

如果想見識AI能達到的水平,可以參考逆水寒的流派挑戰

至於簡單的多人合作也可以做到,但是複雜場景中理論AI的運用會受到很高的局限性。

所以AI在遊戲中以Lua行為樹的形式存在應該還要很久,當然你也可以採用理論AI配合腳本AI的形式,所有玩法形式都由腳本控制,載入戰鬥狀態時調用理論AI即可。

PS:本文只是淺度分析了一下遊戲中的AI,具體AI的設計還是需要你自己接手項目,頻繁練習後方能有更深的感觸,這裡也只做拋磚引玉,歡迎堅持閱讀到這裡的朋友們在下方評論交流~

相關焦點

  • 深度強化學習從入門到大師:以刺蝟索尼克遊戲為例講解PPO(第六部分)
    嘗試更改環境,調整超參,嘗試是學習的最佳途徑也是最大樂趣。 花點時間來想想我們從第一節課到現在取得的所有成就:從簡單的文本遊戲(OpenAI taxi-v2)到像毀滅戰士、索尼克這些複雜的遊戲,我們採用越來越強大的模型結構。這真是極好的! 下一回,我們將學習深度強化學習中最有趣的的新內容之一——好奇心驅動的學習。 想要繼續查看該篇文章相關連結和參考文獻?
  • 百度推出AI入門必修課系列 7日打卡拿下強化學習
    遊戲規則很簡單,玩家在遊戲時只需保持小鳥的飛行狀態,並時刻躲避障礙物防止撞到即可。這個似乎「有些傻瓜」的遊戲卻讓全球玩家欲罷不能,甚至不少玩家為此「爆肝」還難以通關,簡直憋屈到火冒三丈。然而掌握了技術流的玩家成功藉助AI實現「反虐」,開闢了N種分分鐘通關路徑。這裡用到的正是強化學習技術——機器具備自動糾偏學習進步的能力!
  • AI又對遊戲下手了,用強化學習通關超級馬裡奧兄弟
    如今,隨著深度強化學習的發展,越來越多的遊戲已經被AI徵服。今天,我們將以超級馬裡奧為例子,展示如何用深度強化學習試著通關遊戲。/相信了解強化學習的各位一定聽說過近端策略優化PPO算法吧。https://aistudio.baidu.com/aistudio/projectdetail/1434950如在使用過程中有問題,可加入官方QQ群進行交流:778260830。
  • 對弈類遊戲的人工智慧設計(2):性能優化
    上一篇《對弈類遊戲的人工智慧設計(1):評估函數+博弈樹算法》著重講述了評估函數+博弈樹, 本文著重講述學習算法, 以及性能優化問題。
  • 這是一份超全機器學習&深度學習資源清單(105個AI站點),請收藏!
    ,主流的都涵蓋到,是深度學習從業者不錯的一個導航,歡迎使用!): 一個涵蓋人工智慧、機器學習和深度學習相關領域的自由、開放平臺專知(http://www.zhuanzhi.ai/):專業可信的人工智慧知識分發,包含5000+AI主題,薈萃、鏈路等資料PaperWeekly (http://www.paperweekly.site): 一個推薦、解讀、討論和報導人工智慧前沿論文成果的學術平臺
  • 入門者的機器學習/深度學習自學指南
    尤其是深度學習的自學指南。深度學習4.1 深度學習基礎Andrew Ng. Neural networks and deep learning. deeplearning.ai, 2017.Andrew Ng.
  • 這是一份超全機器學習&深度學習網站資源清單(105個AI站點),請收藏!
    ,是深度學習從業者不錯的一個導航,歡迎使用!): 一個涵蓋人工智慧、機器學習和深度學習相關領域的自由、開放平臺專知(http://www.zhuanzhi.ai/):專業可信的人工智慧知識分發,包含5000+AI主題,薈萃、鏈路等資料PaperWeekly (http://www.paperweekly.site): 一個推薦、解讀、討論和報導人工智慧前沿論文成果的學術平臺
  • 直播回顧| Attain.ai 創始人李玉喜:強化學習遇見組合優化
    組合優化是應用數學、計算機科學、運籌學等領域的重要問題,在調度、資源分配、物流、城市規劃、電路設計、製藥等領域應用廣泛。強化學習與組合優化結合,能產生什麼新機會?本次『運籌OR帷幄』社群線上直播,我們有幸邀請到了人工智慧公司attain.ai.創始人,加拿大阿爾伯塔大學計算機系博士李玉喜先生,結合具體場景,為我們講解強化學習在組合優化中的應用。
  • 深度 | 致研究者:2018 AI研究趨勢
    :還在遊戲領域強化學習是令我最興奮、也最懷疑的領域之一——強化學習可以在自我博弈、不知道任何規則的情況下學習複雜的遊戲,並在圍棋、象棋和牌類等遊戲中取勝。但是同時,我們幾乎看不到強化學習在真實世界中的應用,最多也只是一些 3D 玩具人物在人造環境當中攀爬或是移動機器手臂。這也就是為什麼我認為明年強化學習還會繼續發展。我認為,明年將會有兩個重大突破:是的,我非常確定,Dota 和 星際爭霸 2 的人類冠軍將被 OpenAI 和 DeepMind 機器人所擊敗。
  • 《AI少女》怎麼玩?新手快速入門教學指南
    對於一些萌新玩家在剛進入遊戲後不知道要幹什麼,小編這裡給大家帶來了「黑色玫瑰的夜」提供的ai少女新手快速入門教學指南,希望對萌新小夥伴們入門有幫助。對於一些萌新玩家在剛進入遊戲後不知道要幹什麼,小編這裡給大家帶來了「黑色玫瑰的夜」提供的ai少女新手快速入門教學指南,希望對萌新小夥伴們入門有幫助。
  • AI學習路線,詳細整理,由淺入深
    前言:人工智慧是個很大的理論體系,下面的學習路線,是在網上整理的一些資料,內容涵蓋AI入門基礎知識、數據分析、數據挖掘、機器學習、深度學習、強大學習這些理論知識。整個專題共包括五門課程:01.神經網絡和深度學習;02.改善深層神經網絡-超參數調試、正則化以及優化;03.結構化機器學習項目;04.卷積神經網絡;05.序列模型。
  • 除了深度學習 你還應該關注這 6 大 AI 領域
    因為深度學習最近在語音識別、圖像識別等領域取得的突破,很多人都把人工智慧與深度學習混為一談。但深度學習只是AI的一方面,實際上還有其他一些AI的分支也正在取得進展,並且這些技術分支在很多領域都有極大的應用潛力。投資人Nathan Benaich系統地闡述了AI的6個值得關注的領域以及其潛在應用於相關的公司和研究人員,是分析和跟蹤AI的一篇很好的介紹文章。
  • 深度強化學習算法與應用研究現狀綜述
    深度強化學習主要被用來處理感知-決策問題,已經成為人工智慧領域重要的研究分支。
  • 知乎 | 機器/深度學習入門建議
    機器學習實戰:cuijiahua.com/blog/ml/參考書籍:《統計學習方法》李航吳恩達機器學習筆記:http://www.ai-start.com/ml2014/1.吳恩達深度學習網易雲課堂(中字)傳送門:深度學習工程師微專業 - 一線人工智慧大師吳恩達親研-網易雲課堂 - 網易雲課堂(https://mooc.study.163.com/smartSpec/detail/1001319001.htm)簡介:這應該是最好的入門教程了神經網絡和深度學習改善深層神經網絡:超參數調試、正則化以及優化
  • 【深度強化學習】專業解讀「深度強化學習「:從AlphaGo到AlphaGoZero
    2013年,DeepMind團隊發表了一篇關於深度強化學習應用於Atari視頻遊戲的重量級論文,首次在複雜高維的狀態空間下使用深度強化學習學會了遊戲策略。該文章中提出的深度強化學習框架被稱為深度Q網絡(DeepQ Network:DQN)。2015年,DeepMind團隊進一步完善了DQN算法,並將研究成果發表在Nature上。
  • Facebook開源多款AI工具,支持遊戲、翻譯
    翻譯 | 林椿眄編輯 | 阿司匹林出品 | AI科技大本營近日,Facebook 在年度開發者大會 F8 上宣布開源多款 AI 工具,除了 PyTorch、Caffe 等深度學習框架之外框架&工具PyTorchPyTorch 是一個開源的深度學習框架
  • 打開人工智慧黑箱:看最新16篇可解釋深度學習文章,帶您了解增強AI透明性
    而可解釋性AI在關於人類的很多應用方面是必需的,如醫療診斷、教育學習、政府決策等等。最近,關於深度學習的可解釋性,學者們做了大量的研究工作,專知整理關於深度學習可解釋性的最新一些文章,希望能給讀者提供一些參考和幫助。
  • 這裡有一份最新的AI學習資源匯總,你收藏了嗎
    Bekeyley CS188 2019 (https://inst.eecs.berkeley.edu/~cs188/fa19/):這門課由伯克利在2019年開設,以《人工智慧:一種現代方法》為教材,講了搜索,強化學習,機器學習等模型,屬於比較綜合全面的一門課程,裡面的Project比較有意思,通過設計相應的ai算法,來完成不同的吃豆人遊戲。
  • 深度強化學習-深度Q網絡(DQN)介紹
    強化學習為Agent定義了環境,來實現某些動作以最大化獎勵(這些動作根據policy採取)。對Agent的優化行為的基礎由Bellman方程定義,這是一種廣泛用於求解實際優化問題的方法。為了解決Bellman優化問題,我們使用了一種動態編程的方法。
  • 深度學習入門Fast.ai 2.0上線!自帶中文字幕,所有筆記、資源全部免費!
    新版本完全對Fast.ai V1進行了重置,構建了全新的深度學習框架。更輕快、更靈活、更容易使用。而且,對中國用戶最友好的是,全部課程視頻都有簡體中文字幕。2.0更新了哪些課程新上線的Fast.ai 2.0是測試版,目前公開的課程分為兩大部分:深度學習任務速成,和更加細緻全面的深度學習基礎。