游戏AI引擎的三层体系结构分析

来源:互联网 发布:c语言布尔值 编辑:程序博客网 时间:2024/05/02 01:50

1.综述

由于具有相似的应用环境,游戏程序可以采用与机器人的三层软件体系结构相似的体系结构。在机器人学中,机器人的软件体系结构必须决定如何将反映式控制与基于模型的思考模式相结合。反应式控制是传感器驱动的,适合于实时地制定低层次决策,而思考式控制适用于依赖于在进行决策时不能感受到的信息的全局控制策略。混合体系结构将反应与事先思考相互结合。

最流行的混合体系结构是三层体系结构,它由一个反应层、一个执行层和一个思考层组成。反应层为机器人提供低层次的控制,具有紧密的传感器行动循环。执行层接受思考层发出的指令,序列化后传送给反应层,起着反应层与思考层之间的粘合剂的作用。思考层利用规划生成复杂问题的全局解。

相应于机器人的三层体系结构,整个游戏引擎中实现的接口可以划分为低层接口,中层接口和高层接口三层。除了像在机器人软件体系中,区分不同控制和决策层次的作用外,三层接口的引擎结构可以带来如下好处:

首先,起到了抽象与封装程序接口的作用。上层接口对下层接口的调用对于用户来说是透明的。

其次,促进项目组内承担不同开发任务的开发者明确分工和协同工作。图像与音效等的底层实现、人工智能算法的实现、动画数据的整合、高层游戏逻辑的编写等等,每一项工作都明确的位于一个唯一的层次中。这在常常包含上百人的大型项目中,对于开发工作的组织和管理都是非常必要的,因为不仅设计者、美术工作者、程序员等需要明确分工,程序员内部更是如此。

游戏AI引擎是游戏引擎的一个子模块,它的层次设计与游戏引擎的层次设计是完全平行的。

 

2.低层接口

低层接口主要提供基本的3D渲染,物理计算,角色的运动控制和角色动画系统,这其中与人工智能密切相关的是角色的运动控制和角色动画系统。

低层接口的运动控制,是最基本的操作,它仅是对角色的位置和朝向的控制,与角色的属性没有关系。而与角色的属性相关的运动,如速度,加速度的实现,甚至是一些高层的运动行为的实现,是中层接口实现的任务。而这个实现正是通过对低层接口的调用来实现的。

角色动画控制提供对角色序列的调用与混合,完成逼真可信的角色动画。同样底层接口的动画控制是对单个动画序列的操纵,不应包含任何逻辑上的动画序列的组织,那是中层接口的任务。

 

3.中层接口

中层接口通过利用底层接口提供的运动与动画控制功能,实现角色更高层次行为的接口功能。例如用户可以通过中层接口的调用来控制角色从一个地点行走到另一个地点,而行走过程中的角色动画,正是调用底层接口实现的,而其实现对于底层接口的用户,是透明的。

 

4.高层接口

可以规定只有高层接口包含人工智能算法的实现,即AI程序员智能调用高层以上的接口。例如一个高层接口的调用,可以控制角色向敌人攻击,而攻击过程中的行动战术等,正是通过具体的人工智能算法,调用中层接口提供的功能来实现的。

高层接口可以提供给关卡设计师,来完成游戏实际内容的创建。这些接口往往包含较少的程序逻辑控制,可以供非程序员的设计人员使用,这通常需要实现某种简单的,或接近自然语言的脚本语言,甚至像WAR3一样提供图形化的工具来方便这一工作。

 

5.总结

因此,具体到实现一个士兵:

底层接口可以看作游戏引擎提供的基本功能,比如在某一位置绘制一个士兵的几何体,播放士兵行走动画,播放士兵行走时的脚步等。

而中层接口就相对抽象,它可以表示让士兵以某一速度从一个位置向另一个位置行走,那么这个方法在每一帧都需要被调用,用以通过士兵的速度,与上一帧位置,计算出士兵当前帧位置,从而可以根据士兵当前位置,用底层的绘制方法绘制出士兵的几何体,当然你也可以在方法中调用底层的诸如动画播放,声音播放的功能。

而高层接口则更抽象,它可以加入一些智能化甚至情感化的东西,比如有一个胆小士兵的行走,在这个方法中,士兵的速度会受到其性格的影响而逐渐减慢(智能算法),而在方法中同时还会调用中层接口的士兵行走,这样就会表现出一个胆小士兵可能的行走轨迹。当然,你也可以设计更多类型的士兵行走方式,这些方法提供给AI设计师,使其可以通过修改几个调用就可以创造出复杂多变的战争环境。

Enjoy!!