最近在做服務器怪物AI部分,設想是將AI模塊做成接口,成為所有角色的一個組件成員,AI模塊里有所有怪物AI的功能接口,需要什么功能就從里面拿來處理,當然AI模塊里是有TYPE來做區分的,例如MONSTER,PLAYER,PET等等,在觸發各種事件的時候,比如戰斗狀態被攻擊后由角色類在處理相應被攻擊事件后發送一個事件給我們的AI模塊處理進,在AI模塊的處理中還可以依靠外部腳本文件來做額外的處理,從腳本相應的接口中處理一些戰斗過程。依次來設計,整個AI的事件處理還是一個有限狀態機,后來參考了ASCENT的代碼,發現是如此設計的,整個AI模塊獨立成為組建,處理所有公有AI邏輯。下面就是AI模塊與LUA腳本的交互處理了,這里好像還有點問題,在戰斗中需要腳本去處理一個OnCombatStart()接口,C++負責調用,我給他的兩個參數是兩個戰斗對象的指針,不知道LUA能否接收這兩個指針,好像要注冊等等,LUA沒用過,明天還得研究研究。