標籤:

行為樹對於遊戲的意義

對大部分的端游、手游來說,AI算是整個遊戲邏輯中復用情況最多,變動情況也很多的一個模塊。在AI各模塊耦合度較高、粒度較大的情況下,往往一個變動都牽扯到大量的修改,也很容易出現大量的重複代碼。而行為樹的出現,提供給了廣大遊戲開發者一個「方格本」,讓AI開發者比較方便的搭建出一整套可復用、好擴展維護的AI框架出來。

我覺得行為樹給遊戲的AI模塊帶來的不只是耦合低的好處,耦合低在所有的方案裡面都不是終極目標。我遇到過很多人,用某一種設計方案的時候,僅僅只是出於解耦的目的,為什麼要解耦,大多不清楚,只記得書上所解耦好。解耦,應該是為了應對不久的將來,可預見性的頻繁修改而做。正因為即將會遇到不可控的大量的修改需求,我們才需要提前做好準備,防止後期的擴展開發牽一髮動全身,利用抽象來管控住"變化"。行為樹最大的意義在於,通過依賴注入、組件抽象,將大量不可控的「變化」給封裝了起來,將大量的重複工作交給遊戲的artist去構建,從而解放了程序員,從而讓程序員做更有價值、更有意義的工作。

如果沒有可視化的編輯工具,如果沒有artist能接手AI編輯,那麼行為樹的效果將大打折扣。因為行為樹將耦合降低之後,如果沒有可視化的編輯器調試工具,那麼後人維護擴展這個模塊的效率是很低的。比較明顯的一點就是,調試BUG的時候,需要整個流程,各個可能會激活的節點都斷好點,不然無法弄清整個流程。變成一段我最不希望看到的,只有調試才能知道結果的代碼。所以這個成本需要設計人員仔細斟酌,如果要採用沒有編輯器的行為樹,應該怎麼簡化,怎麼控制,且要想清楚對自己的遊戲來說劃不划算。

從業這幾年來,面過的人中,大多都知道或者用過行為樹。但當我詢問行為樹或者準確的說行為樹的這種解決問題的思想,還能用在哪些地方的時候,大多答不上來,幾乎都局限於做遊戲AI。其實「行為樹」(引號標註此處不特指行為樹,而是行為樹背後所包含的設計思想)對遊戲的很多其他模塊,都有借鑒的地方。遊戲中復用情況較多、修改變化頻繁的模塊,都可以用上「行為樹」。比如我們的新手引導模塊,MMORPG的任務模塊等,都可以用到「行為樹」,來幫我們管控變化,加速模塊的構建與迭代。

所以,行為樹對於遊戲而言,並不在於解耦,也不局限於AI。當我們理解其設計思想,認知其成本之後,就能做到對症下藥,不被猛葯加重了病情。

推薦閱讀:

換個角度去看棋牌遊戲
兩個平均年齡十一歲的小男孩,做了兩款遊戲
像素鳥跳跳跳!(什麼鬼 ×
遊戲開發與程序設計知識總結06——常見軟體架構模式

TAG:遊戲開發 |