2017年6月27日 星期二

AI-RecastNavgation and Crowd avoidance system

在RTS遊戲開發的領域,Path find及local avoidance
一直是很重要的相關技術,而這兩個部份的位移處理
整合,也是令人頭痛的問題。

RecastNavgation是一套相當成熟的路徑搜尋函式庫,
作者Mikko Mononen曾在Crysis擔任lead AI programmer,
且這套函式庫廣泛被商業遊戲引擎中使用(Unreal及Unity)
,也支持動態計算導航網格。

一般的做法大部份都是使用RVO+RecastNavgation但這樣
會造成整合相當困難(RVO說要去這裡,Recast說要去這裡
,倒底聽誰的)。

另外RVO本身也支援靜態阻檔物(obstacle),但它是用一
直撞過去的方式,沒有路徑搜尋。筆者之前曾嘗試著利用
其相關資訊,動態計算出導航點,但在比較複雜的場景效
果不佳,所以就放棄了。

後來去抓最新的RecastNavgation,發現他早就支援了crowd
local avoidance的功能,而且也找到許多Unreal的開發者
早就從RVO移轉到Recast crowd system。

Unity的Path find system雖然也是以RecastNavgation為基
礎開發的,但目前卻還沒有支援Crowd,人家Unreal全部都是
C++,可能比較好支援…

話說回來,目前的專案需求是Server及Client要共用路徑搜尋
的功能,所以不能跟Unity有任何的關係,於是如果要支援
RecastNavgation及其Crowd系統,比較好的解決方案可能就是
自行設計RecastNavgation native c++ plugin

以下是初步整合的成果,此畫面目前是用Ogre來Render(之後
再整合到Unity),在走道可以通過的時候,Agent Sphere會
在那邊排隊等通過,但沒辦法走的時候就各自從旁邊繞過去了

Dream continues in...

沒有留言:

張貼留言