游戲AI的架構(gòu)模型_第1頁(yè)
游戲AI的架構(gòu)模型_第2頁(yè)
游戲AI的架構(gòu)模型_第3頁(yè)
游戲AI的架構(gòu)模型_第4頁(yè)
游戲AI的架構(gòu)模型_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、游戲AI的架構(gòu)模型游戲AI的架構(gòu)模型運(yùn)動(dòng)層:AI的具體行為,比如移動(dòng)決策層:決定AI下一時(shí)間步該做什么戰(zhàn)略層:從集體層面對(duì)個(gè)體AI進(jìn)行控制除此之外,還要結(jié)合動(dòng)畫系統(tǒng),物理引擎,感知系統(tǒng)等,共同組成人工智能個(gè)體AI表21操控行為術(shù)語(yǔ)中英文對(duì)服衰英文術(shù)培中文術(shù)語(yǔ)H義Seek靠近使角色靠近目籌Fles離開(kāi)使用色離開(kāi)目標(biāo)Arrival抵達(dá)當(dāng)角色接近目標(biāo)時(shí)使它減速Plimuil追逐使捕貓者追逐貓物Erode逃避使獵物逃離捕貓者Wandtr瞳機(jī)徘制使角色隨機(jī)排翻PathFntlowil)g路也的使角色沿著某條削定路徑移動(dòng)(MkHtHtleAy加dcini:巴避開(kāi)障礙使角色避開(kāi)障礙物GroupBfh,廿欣1

2、組行為多知色成組的操控行為HqrUr雷達(dá)探測(cè)周隅相鄰南色位置Sc|Mrali<Mi分離與春中等居庫(kù)特適當(dāng)距離Al師m產(chǎn)nt隊(duì)列與群中鄰居保持朝向一致Cohiraioii聚集成群聚集在一起Seek是最常見(jiàn)的AI行為,最簡(jiǎn)單的實(shí)現(xiàn)是給AI添加一個(gè)修正力使之向目標(biāo)移動(dòng)6中清花圖教肓wwA,IHtj.|U4dUU中加tfFlee和Seek相反,通常我們都要設(shè)置一個(gè)Distance范圍判斷結(jié)束行為。用Vector3.sqrMagnitude向量平方長(zhǎng)度,計(jì)算會(huì)更快Arrival到達(dá)目標(biāo)減速至停止,可設(shè)置一個(gè)StopDistance,距離大于停止距離時(shí)給一個(gè)Force移向目標(biāo)Pursuit追逐會(huì)預(yù)測(cè)

3、Target的未來(lái)位置,比如預(yù)測(cè)t時(shí)間內(nèi)Target不會(huì)轉(zhuǎn)向,AI將計(jì)算未來(lái)位置朝之移動(dòng)。另外還可以用點(diǎn)乘計(jì)算夾角,判斷雙方是不是面對(duì)面Evade逃避。與Pursuit反向Wander隨機(jī)徘徊。設(shè)置一個(gè)圓周半徑,每幀給Target附加隨機(jī)位移,比AI只按照預(yù)設(shè)好的路線移動(dòng)更加真實(shí)FollowPath路徑跟隨。設(shè)置radius路點(diǎn)半經(jīng),讓AI在路徑間切換更加真實(shí)CollisionAvoidance避開(kāi)障礙。向前射線檢測(cè)障礙物的包圍圈,產(chǎn)生一個(gè)排斥力。集體AI后中清花圖教肓組行為:分離:避免局部擁擠隊(duì)列:朝向附近同伴的平均朝向聚集:向附近同伴的平均位置移動(dòng)Radar檢測(cè)附近的AI角色(數(shù)學(xué)/Tri

4、gger)Separation分離。搜索領(lǐng)域內(nèi)的其他鄰居,計(jì)算兩者間的向量并單位化,得到排斥力方向,排斥力大小與距離成反比Alignment隊(duì)列。將AI的朝向糾正為和鄰居一致,平均朝向減去當(dāng)前朝向就是操控朝向Cohesion聚集。集體AI往往需要一個(gè)集體狀態(tài)機(jī),負(fù)責(zé)判斷團(tuán)隊(duì)整體狀態(tài)和動(dòng)作各個(gè)角色則需要完成動(dòng)作的多層狀態(tài)機(jī)設(shè)置,比如這層行動(dòng)路線,下層具體行為,下層角度速度細(xì)節(jié)AIDirector導(dǎo)演系統(tǒng)控制整局游戲流程更多實(shí)例暫略A*尋路A*(A-Star)算法是一種靜態(tài)路網(wǎng)中求解最短路最有效的直接搜索方法,也是許多其他問(wèn)題的常用啟發(fā)式算法。注意是最有效的直接搜索算法,之后涌現(xiàn)了很多預(yù)處理算法(

5、如ALT,CH,HL等等),在線查詢效率是A*算法的數(shù)千甚至上萬(wàn)倍。歐幾里得/歐拉距離:多維空間兩點(diǎn)間的距離,即直線距離曼哈頓距離:估計(jì)到目標(biāo)格子之間的水平和垂直方格的數(shù)量和,即不走斜路地圖,目標(biāo)估計(jì),代價(jià),節(jié)點(diǎn)導(dǎo)航圖:將地圖用圖表示1、基于單元的導(dǎo)航圖將地圖劃分為多邊形單元組成的規(guī)則網(wǎng)格。易于動(dòng)態(tài)更新,但時(shí)間空間消耗都大2、創(chuàng)建可見(jiàn)點(diǎn)導(dǎo)航圖先手工放置一些路徑點(diǎn),然后若路徑點(diǎn)之間可視,就能以邊連接??梢栽O(shè)置一些特殊點(diǎn),適(3中清熱圖教肓©中清ze圖教肓碑立,I0*gIU-4idtD庸tft合簡(jiǎn)單的尋路3、創(chuàng)建導(dǎo)航網(wǎng)格NavMesh將可行走區(qū)域劃分為凸多邊形??梢允嵌喾N多邊形的組合,讓

6、網(wǎng)格劃分更加合理采用視線確定”方法,向前跳到視線最遠(yuǎn)途經(jīng)點(diǎn),對(duì)路徑進(jìn)行后處理,得到更平滑的路徑效率高,空間小以基于單元的導(dǎo)航圖為例,執(zhí)行A*算法g(n):起始節(jié)點(diǎn)到當(dāng)前節(jié)點(diǎn)n的代價(jià)h(n):當(dāng)前節(jié)點(diǎn)n到目標(biāo)節(jié)點(diǎn)的估計(jì)代價(jià)f(n尸g(n)+h(n)從初始狀態(tài)經(jīng)由狀態(tài)n到目標(biāo)狀態(tài)的代價(jià)估計(jì)open表:待考察的結(jié)點(diǎn)的優(yōu)先級(jí)隊(duì)列,代價(jià)從低到高(可以不排序,只找最小值)closed表:已考查的結(jié)點(diǎn)列表開(kāi)始時(shí),Clos"表為空,而Open表僅包括起始節(jié)點(diǎn)由每次迭代中,A*算法將Opn表中具有最小代價(jià)值(即f值最小)的節(jié)點(diǎn)取出進(jìn)行檢直,如果這個(gè)節(jié)點(diǎn)不是目標(biāo)節(jié)點(diǎn),那么考慮該節(jié)點(diǎn)的所有8個(gè)相鄰節(jié)點(diǎn)口對(duì)

7、于誨個(gè)相鄰節(jié)點(diǎn)按下列規(guī)則處理:(I)如果它既不在。p«n表中,電不在Clewed表中,則將它加入Oppn表中;(2)如果它已經(jīng)在Open表中.并且新的路徑具有更低的代價(jià)值,則更新它的信息:(3)如果它已經(jīng)在口必人表中,那么檢查新的路徑是否具有更低的代價(jià)值如果是,那么將它從Clmed表中移出.加入到Open表中,否則忽略口,第一步:取起始結(jié)點(diǎn),將其8個(gè)鄰接點(diǎn)加入Open,并將各鄰接點(diǎn)的父節(jié)點(diǎn)設(shè)置為起始節(jié)點(diǎn),起始點(diǎn)加入Close第二步:計(jì)算open表中結(jié)點(diǎn)的代價(jià)f=g+h,計(jì)算規(guī)則是:g:取父節(jié)點(diǎn)g值,根據(jù)n點(diǎn)和父節(jié)點(diǎn)的連接方式計(jì)算。如果是直角連接g+,對(duì)角連接g+=1.414h:采用歐

8、幾里得距離/曼哈頓距離不考慮障礙物根據(jù)f大小來(lái)確定open表中下一個(gè)要被檢查的節(jié)點(diǎn)第三步:取f最小結(jié)點(diǎn),檢查8個(gè)鄰接點(diǎn),障礙物點(diǎn)無(wú)視。e中清花圖教肓.IlQ*gIU*。工由Etfr-計(jì)算各鄰接點(diǎn)通過(guò)當(dāng)前結(jié)點(diǎn)得到的新 規(guī)則同上g值)計(jì)算新結(jié)點(diǎn)加入open表已經(jīng)在open表的,若新g值比原值大,不需更新。若小于原值,則更新g,f,父節(jié)點(diǎn),而不用更新h已經(jīng)在closed表的,按上圖文字處理第四步:對(duì)于具有相等的最小代價(jià)值f的結(jié)點(diǎn),可任選一個(gè)計(jì)算。循環(huán)直到終點(diǎn)其他1 .對(duì)于已經(jīng)計(jì)算的(存在于open或closed表中)節(jié)點(diǎn),無(wú)需再次計(jì)算,因?yàn)檫x擇那些節(jié)點(diǎn)只會(huì)繞遠(yuǎn)2 .障礙物節(jié)點(diǎn)加入closed表,對(duì)于

9、被open或closed表包圍的節(jié)點(diǎn))也加入closed表中和Dijkstra算法的區(qū)別:Dijkstra是BFS,不會(huì)去預(yù)估到終點(diǎn)的距離,因此在有多個(gè)權(quán)值相等的路徑時(shí)會(huì)搜索很多不必后中清花圖教肓要的結(jié)點(diǎn)。而且沒(méi)有考慮障礙物A*是按照啟發(fā)函數(shù),向著目標(biāo)搜。很適合尋路Dijkstra會(huì)求出所有點(diǎn)的最短路徑,得到理論上的最優(yōu)解,而A*則只會(huì)找需要計(jì)算的點(diǎn)。結(jié)果是A*更快,但是不一定是最優(yōu)解Unity尋路AI使用NavMeshAgent組件如果要配合物理引擎使用,則AI需要有kinematic的剛體)表示剛體由nav控制和Animator配合使用的話)最好不要用rootmotion將地面勾選Navi

10、gationStatic)再打開(kāi)Navigation視圖,點(diǎn)擊bake即可看到藍(lán)色可達(dá)區(qū)域NavigationArea可以設(shè)置object為不同Area,會(huì)用不同顏色表示可以在NavMeshAgent中修改其可以行走的AreaOffMeshLink添加跳躍點(diǎn)(手動(dòng)路徑)默認(rèn)的NaveMeshAgent組件上面是勾選了AutoTraverseOffMeshLink(自動(dòng)通過(guò)OffMeshLink)選項(xiàng)的。這樣的意思是人物只要到了OffMeshLink的開(kāi)始點(diǎn),就會(huì)自動(dòng)的移動(dòng)至ijOffMeshLink的結(jié)束點(diǎn)。NavmeshObstacleenable時(shí)不可通行,false時(shí)可通行。此情況下物體

11、不會(huì)暫停尋路還有很多用法,這里就暫不詳述了AI感知事件AI往往要感知視覺(jué)、聽(tīng)覺(jué)等信息來(lái)決策下一步的行為,其中又包括位置信息,對(duì)象屬性信息,自身信息等1、輪詢(主動(dòng)查詢信息)輪詢類似編程中的switch-case,是AI周期性地查詢所需要的信息,輪詢非常常見(jiàn),容易維護(hù),但有效信息率低,花費(fèi)性能較多輪詢中心(沒(méi)有必要每個(gè)AI都進(jìn)行一遍查詢,而是集中處理需要查詢的信息)2、事件驅(qū)動(dòng)(被動(dòng)得知信息)事件是一種高效的消息傳遞機(jī)制,由事件分發(fā)者主動(dòng)通知每個(gè)感興趣的AI,這樣就使AI準(zhǔn)時(shí)獲得有效信息可以做一個(gè)中心檢測(cè)系統(tǒng)(事件管理器),記錄每個(gè)AI感興趣的事件,并通知他們,還方便了調(diào)試3、Trigger觸發(fā)

12、器觸發(fā)器其實(shí)和事件比較接近,相比之下,觸發(fā)器是事件的本源,比如監(jiān)聽(tīng)聲音的聲音觸發(fā)器,檢測(cè)觀察物的視覺(jué)觸發(fā)器,等待時(shí)間的時(shí)間觸發(fā)器Trigger常用一個(gè)半徑計(jì)算檢測(cè)的范圍,Sensor感知器則定義了枚舉類型和變量,保存了事件管理器視覺(jué)感知:圓錐形探測(cè)聽(tīng)覺(jué)感知:衰減范圍。而感知器也有對(duì)應(yīng)的感知閾值觸覺(jué)感知:碰撞器記憶感知:記憶List+Time留存時(shí)間FSM有限狀態(tài)機(jī)finite-statemachine是表示有限個(gè)狀態(tài)以及在這些狀態(tài)之間的轉(zhuǎn)移和動(dòng)作等行為的數(shù)學(xué)模型。最簡(jiǎn)單的用enum+switch即可實(shí)現(xiàn)在Unity中,我們可以用Animator或其他FSM框架實(shí)現(xiàn)可視化狀態(tài)機(jī)但是對(duì)于一些復(fù)雜的AI,用FSM圖十分繁瑣,效率低且容易出錯(cuò),對(duì)一般的AI來(lái)說(shuō),F(xiàn)SM就足夠了BehaviorTree行為樹行為樹是由行為節(jié)點(diǎn)組成的樹狀結(jié)構(gòu)對(duì)于FSM,每個(gè)節(jié)點(diǎn)表示一個(gè)狀態(tài),而對(duì)于BT,每個(gè)節(jié)點(diǎn)表示一個(gè)行為。行為樹層次清晰,易于模塊化,封裝性好,可重e中清花圖教肓用,是一種效果理想的AI編輯器在BT中,節(jié)點(diǎn)是有層次(Hierarchical)的,子節(jié)點(diǎn)由其父節(jié)點(diǎn)來(lái)控制。每個(gè)節(jié)點(diǎn)的執(zhí)行都有一個(gè)結(jié)果(成功Success,失敗Failure或運(yùn)行Running),該節(jié)點(diǎn)的執(zhí)行結(jié)果都由其父節(jié)點(diǎn)來(lái)管理,從而決定接下來(lái)做什么,父節(jié)點(diǎn)的類型決定了不同的控制

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論