我們都知道現在AI(由人工制造出來的系統所表現出來的模擬人類的智能活動)非常的火,可以說是家喻戶曉。當然,在游戲中,AI也是到處可以找到的,對於AI,我們應該關注的問題是如何讓游戲角色能夠向人或動物那樣“感知”、“思考”和“行動”,讓游戲中的角色看上去具有真實的人或動物的反應。
實際上,對於游戲中的AI角色,可以認為它們一直處於感知(SENSE)->思考(think)->行動(Act)的循環中。
- 感知:是AI角色與游戲世界的接口,負責在游戲過程中不斷感知周圍的環境,讀取游戲的狀態和數據,為思考和決策收集信息。例如:周圍是否有敵人靠近等等。
- 思考:利用感知的結果選擇行為,在多種可能性之間切換。例如:決定是戰斗還是逃跑?逃跑東在哪里?等等。
- 行動:發出命令、更新狀態、尋路、播放背景音樂和動畫、生命值增減等等。
盡管每種游戲需要的AI技術都有所不同,但絕大多數現代游戲中對AI的需求都可以用三種基本能力來概括。如下:
- 運動:移動角色的能力。
- 決策:做出決策的能力。
- 戰略:戰略戰術思考的能力。
在這個模型中,將AI任務划分為三個層級,分別為運動層、決策層及戰略層。運動與決策層包含的算法是針對單個角色的,戰略層是針對小隊乃至更大規模群體的。需要注意的是,這只是一種基本的AI架構模型。實際中,根據游戲的種類與需求,可能會有所細化或增刪。例如,棋類游戲就只有戰略層,因為這種游戲中的角色不需要自己做出決定,也不用考慮如何移動。而其他許多非棋類游戲中,就不包含戰略層,可能反應遲鈍,只需要每個角色做出簡單的決定,並且依次行動,而不需要角色之間協調工作。下面來分別分析這三層的任務。
運動層
在運動層中的主要任務一般是導航和尋路,它們決定了角色的移動路徑,當然,具體的移動行為還需要動畫層的配合才能完成。例如:我們在游戲中可能會遇到這種情況:在某游戲關卡出,當敵人(此處指電腦)看到你時,他需要召集隊友,那么他要拉警報,這就需要他們先移動到最近的固定的警鈴,當這個鈴較遠時,他需要避開障礙物和你才能到達,這就需要較復雜的導航與尋路算法。
當然,有許多行為可以直接由動畫層處理的。例如:如果某任務坐在餐桌旁邊,這時如果他做出吃東西的決定,那么只需要播放吃東西的動畫就可以啦,不再需要其他的AI算法。運動層包含的算法能夠把上層做出的決定策略轉化為運動。例如:如果某個AI角色的決策層做出攻擊玩家的決策時,運動層會利用與移動相關的算法,時角色接近玩家的位置,來執行這個決策,然后播放攻擊動畫,以及處理角色或玩家的生命值等等。
決策層
決策層的任務是決定角色在下一時間步該做什么。決策層的功能可以利用有限狀態機或行為樹等技術實現,也可以采用更加復雜的AI技術,如模糊狀態機、神經網絡等技術實現。例如:當角色看不到玩家時,就進行巡邏,否則就進行攻擊,在攻擊的決策中還可以帶有扔手雷、加大火力壓制等等附加決策。
戰略層
戰略指的是一組角色的總體行為,這時AI算法並不是只控制單個角色,而是會影響到多個角色的行為。小組中的每個角色都可以有他們自己的決策層和運動算法,但總體上,它們的決策層會受到團隊戰略的影響。
其實,即使游戲中只有運動層和決策層,也可以實現很復雜的功能。事實上,大部分基於行為的游戲也只是用到了這兩層,但是,如果需要團隊協作,那么好酒需要某些戰略AI。
本文屬於原創,轉發須注明:https://i.cnblogs.com/EditPosts.aspx?postid=6637769&update=1
參考:unity 3d人工智能編程精粹