最近在做服务器怪物AI部分,设想是将AI模块做成接口,成为所有角色的一个组件成员,AI模块里有所有怪物AI的功能接口,需要什么功能就从里面拿来处理,当然AI模块里是有TYPE来做区分的,例如MONSTER,PLAYER,PET等等,在触发各种事件的时候,比如战斗状态被攻击后由角色类在处理相应被攻击事件后发送一个事件给我们的AI模块处理进,在AI模块的处理中还可以依靠外部脚本文件来做额外的处理,从脚本相应的接口中处理一些战斗过程。依次来设计,整个AI的事件处理还是一个有限状态机,后来参考了ASCENT的代码,发现是如此设计的,整个AI模块独立成为组建,处理所有公有AI逻辑。下面就是AI模块与LUA脚本的交互处理了,这里好像还有点问题,在战斗中需要脚本去处理一个OnCombatStart()接口,C++负责调用,我给他的两个参数是两个战斗对象的指针,不知道LUA能否接收这两个指针,好像要注册等等,LUA没用过,明天还得研究研究。