對Virtools遊戲引擎AI pack的一些經驗. Graphdata, simplifing graphdata...
這幾天因為需要重新使用模型,大的模型,因此把之前做的遊戲重新起頭開始弄,這是一個需要耐心的過程,因為隨著『加工』的繼續,垃圾也慢慢多起來,下面對AI的生成部分著重講一下:
下面是做這個的過程中的總結,先發一個圖形上來,本來想發youtube可惜自己的電腦不允許一邊做遊戲一遍shot video:(
首先看圖片:
在看下面的內容之前,先說一下用virtools的習慣!
- 乾淨的腳本,整個過程中需要時刻主意,腳本是否clean,因為隨著遊戲的進度加快,內容增加,最後是很臃腫的,後面會說明為何很重要。 具體怎麼個乾淨法,比如刪除一個不需要的東西的時候,保證是full dependency的,如果full之後有東西被意外的搞掉了,那麼參考下面。
- save version,時間長了愛好者就知道這是多麼的重要了!
- 工作區不要經常的換,因為未來要做AI的話,virtools的AI pack有些死板,換工作區可能出現程序『死記硬背』以前的路徑,造成辛苦生成的結果無法保存!
- 時刻做好優化,redering的optimize從幾個方面考慮,第一,是世界坐標系種的物體盡量縮小(在不影響美感的前提下)這個動 作做的越早,以後就後悔的可能性越小。第二,對動畫效果,越晚添加越好,比如我要一朵花發出particle system的效果,那麼最後添加。我看過實施的render參數,96%的系統資源用於對動畫的處理上。靜態模型則優化的很好!第三,任何一步操作在腦 袋裡面都要留下軌跡,未來出現什麼bug,苦惱的時候要能回憶起來是否做了可能危害遊戲的操作。第四,優化的時候是否有衝突,則需要debug看看紅線到 哪裡有報錯,通常virtools容錯是很好的。
好了,下面把做AI的過程簡單說一下,主要說主意事項,適合對AI愛好的。
1.AAAAAAIIIIII的重要性就不說了。(附:主角在遊戲種也是一種AI,這個要記住。)
2.AI的生成中固定好攝像頭,即把視角確定好。這樣便於一旦發現有異常就可以中途終止了重新修改,節省時間。
3.對需要做AIbot的視角設置為120度要好於180度。
4.中途發現怪有穿牆或者走出floor的情況,恭喜你可以終止了。肯定哪裡的bounding box有問題的。
5.一個正常的Path生成過程為:creating dense->no grahphdata found->怪物走完所有的->屏幕出現藍色和紅色的網格路徑- >simplifing graphdata(這個要具體按照set personal parameters和Create Graph Data)中的節點距離來優化,所以不要設置太大,一 般來說一個人是20個大小,那麼節點距離設置為50-40是比較好的。在此標準過程中任何異常都可以 終止了,因為只要違背 這個過程的,比如到simplifing...不動了,那就是程序死循環了,或者creating dense無限期的在那creat那也是這個道理。所以說 AI PACK是不太user friendly的。
6.生成AI路徑的時候選擇節省CPU,最小CPU消耗。生成出來之後,在設置為最大CPU消耗。好處就是快速得到結果。
7.跟floor差不多高的任何物體,都需要把高度設置為floor height=0.在同一個平面,不然最後發現路徑是不規則,而且斷點很多,或者肉眼感覺可以走過去的地方,怪走不過去!
8.像上面圖形中的,中間的道路設置要相對寬一些,道路和兩邊的maze之間的交界處不要有突起的小塊,做到肉眼看起來光滑,因為AI PACK是根據人的習慣來定義的。像兩邊都有需要跑的路的時候,把種子放在中間。當然更負責的方法,可以定義這個路徑是一個ladder 或者一個dooooor或者一個path,當然那樣增加了腳本的複雜。
9.AI的大小是自己設置的,而不是肉眼看到的大小。它實質上是一個虛擬體的bounding box在那裡跑。而且高度是有微小變化的,這就是為什麼同一個路型跑兩次路徑得到有些微差別的原因。
10.所有的物體,只要有阻擋的,需要定義為fixed obstacle,而且這個動作是做AI之前就需要完成的然後物體都要設置好IC, 看是否設置IC只需要到LEVEL中查看對應的ID後面是否有一個灰色的差。X
11.AI的搜索方式是有規律可循的,按照一個起點,半徑範圍內擴大,有點像一個蜜蜂發現花了之後,在原地發一個信號,剩 下的那些空閒的兄弟們就過來幫忙。
12.生成AI通常要比較長的時間,這段時間要想好,如果不成功的話可以做哪些修改。
13.生成AI路徑的時候keyboard controller不要link上。
14.AIBOT的跑路的速度需要跟人的身材接近。不然就在那裡跳舞,或者打顫,呵呵。
15.一個較為正確的方法,當得到finished的消息之後,做如下動作:importdata--array setup--save version。不然很可能路徑倒不 進去。
16.牆壁之前的坡度不要太大。
17.紅線和蘭線的區別我大概感覺可能是紅線多半處於連接處,就如一個有優先的use case 一樣。優化的時候一般系統不做處理,如果紅線太多,說明模型等等有問題。
18.AI的unlimited controller種要設置好AI_WALK,AI_RUN的參數,不設置的話AI是得不到走路的動作分配的。動畫不播放。
19.好吧,今天把路徑生成了10多遍總結了這些條條框框。
最後要說的是,做AI就要有死了重來的精神!不要放棄。
object copy不會使系統用的資源減少,但是可以使程序美觀。
模型的貼圖之前就優化好,如果一個鳥表面就花去幾M的『完美』貼圖的話,做到一半的時候愛好者們等著哭吧。
對電腦比較弱的玩家來說,源文件大小控制在40M之內,才可能達到fps比較完美的結果。除非做很好的優化。強調一下,virtools不能做所有的事情,需要更好的render效果的話,那就是專業級的遊戲,需要有獨立sdk開發cg的能力。
留言列表