浅谈层次化的AI架构
原文地址:http://www.aisharing.com/archives/86/comment-page-1
記得在以前的一篇文章中談到了一種類似于雙緩沖的AI結(jié)構(gòu),最近在整理一些東西的時候,發(fā)現(xiàn)這樣的AI結(jié)構(gòu)具有一定的通用性,而且層與層之間耦合度相對較低,作為一種層次化的AI架構(gòu),非常值得一談。
在我的腦海中,AI一般分為兩個部分,一個是決策(Decision)部分,一個是行為(Behavior)部分,決策部分負責做什么,行為部分負責怎么做。在一些國外的公司里,AI程序員也大致分為這兩種(不過,一些國內(nèi)的企業(yè)可能就分的沒有這么細,一般都是統(tǒng)稱為AI程序員,或者有的分的更粗,將一些游戲中的其他游戲邏輯部分一起涵蓋,統(tǒng)稱為游戲性(Gameplay,GPP)程序員)。正因為這樣,所以我們一般希望,在AI架構(gòu)上,這兩個部分的耦合度是相對較低的,這樣也便于任務的分工。所謂層次化的AI架構(gòu)(Layered AI Architeture)也就基于了這樣的理念。看下面這個圖:
在這樣一個層次化的AI框圖中,我們定義了“請求(Request)”這樣一個概念,請求可以看作是AI決策的結(jié)果,或者稱之為一個命令,比如,在射擊游戲中,請求可能就定義為,射擊,移動,逃跑等等,在動作游戲中,請求就會定義成攻擊,格擋,跳躍等等。當行為層收到上層的請求后,就會設(shè)法去處理該請求的內(nèi)容,還是以射擊游戲為例,當行為層收到射擊的指令,就會從射擊的動畫列表中選擇某個射擊動畫,然后轉(zhuǎn)向目標,播放動畫等等工作來處理射擊的請求。所以請求相當于就成了決策層和行為層之間的接口。這樣,對于決策層和行為層的輸入和輸出就很明確了:
- 決策層:輸入(游戲世界信息),輸出(請求)
- 行為層:輸入(請求),輸出(修改游戲世界的相關(guān)信息)
由于有請求層作為中間接口層,所以決策和行為部分就很自然的分開了,而且有清晰的輸入和輸出,AI團隊中的人員的工作職責也就很明確了,做為決策層的AI程序員,就只需要關(guān)心如何產(chǎn)生請求,而行為層的AI程序員,只需要關(guān)心如何處理請求,一旦定義好完備的請求內(nèi)容,不管在代碼還是在工作上都不會產(chǎn)生很大的粘連度了。
另外值得注意的是,這邊的請求層用到了類似雙緩沖的結(jié)構(gòu),分成后端和前端,換個詞的話,可以說成當前在處理的請求(前端),和下一個要處理的請求(后端),具體的分析可以參考我以前的文章《在AI結(jié)構(gòu)中用雙緩沖》,這里就不多做介紹了。
這樣的層次化結(jié)構(gòu)在AI中有很強的通用性,因為這是用最高的層面來總覽AI的架構(gòu),而像其他諸如行為樹(Behavior Tree),分層狀態(tài)機(HFSM)等都可以看成是在決策或者行為層中的具體實現(xiàn)方式。所以不管AI代碼是如何實現(xiàn),大部分都可以歸到這種層次化的結(jié)構(gòu)中,因此,我想,我們在設(shè)計AI結(jié)構(gòu)之初,就可以用這樣的方式來思考和架構(gòu)整個框架,分割決策和行為,定義請求,然后再針對每一層來選擇具體的實現(xiàn)方法。
————————————————————————
作者:Finney
Blog:AI分享站(http://www.aisharing.com/)
Email:finneytang@gmail.com
本文歡迎轉(zhuǎn)載和引用,請保留本說明并注明出處
————————————————————————
總結(jié)
以上是生活随笔為你收集整理的浅谈层次化的AI架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SPJ方法
- 下一篇: 第18月第25天 github下载单个文