Unity3D中的AI架构模型

时间:2023-12-10 09:15:50

  我们都知道现在AI(由人工制造出来的系统所表现出来的模拟人类的智能活动)非常的火,可以说是家喻户晓。当然,在游戏中,AI也是到处可以找到的,对于AI,我们应该关注的问题是如何让游戏角色能够向人或动物那样“感知”、“思考”和“行动”,让游戏中的角色看上去具有真实的人或动物的反应。

  实际上,对于游戏中的AI角色,可以认为它们一直处于感知(SENSE)->思考(think)->行动(Act)的循环中。

  • 感知:是AI角色与游戏世界的接口,负责在游戏过程中不断感知周围的环境,读取游戏的状态和数据,为思考和决策收集信息。例如:周围是否有敌人靠近等等。
  • 思考:利用感知的结果选择行为,在多种可能性之间切换。例如:决定是战斗还是逃跑?逃跑东在哪里?等等。
  • 行动:发出命令、更新状态、寻路、播放背景音乐和动画、生命值增减等等。

  尽管每种游戏需要的AI技术都有所不同,但绝大多数现代游戏中对AI的需求都可以用三种基本能力来概括。如下:

  1. 运动:移动角色的能力。
  2. 决策:做出决策的能力。
  3. 战略:战略战术思考的能力。

Unity3D中的AI架构模型

  在这个模型中,将AI任务划分为三个层级,分别为运动层、决策层及战略层。运动与决策层包含的算法是针对单个角色的,战略层是针对小队乃至更大规模群体的。需要注意的是,这只是一种基本的AI架构模型。实际中,根据游戏的种类与需求,可能会有所细化或增删。例如,棋类游戏就只有战略层,因为这种游戏中的角色不需要自己做出决定,也不用考虑如何移动。而其他许多非棋类游戏中,就不包含战略层,可能反应迟钝,只需要每个角色做出简单的决定,并且依次行动,而不需要角色之间协调工作。下面来分别分析这三层的任务。

运动层

  在运动层中的主要任务一般是导航和寻路,它们决定了角色的移动路径,当然,具体的移动行为还需要动画层的配合才能完成。例如:我们在游戏中可能会遇到这种情况:在某游戏关卡出,当敌人(此处指电脑)看到你时,他需要召集队友,那么他要拉警报,这就需要他们先移动到最近的固定的警铃,当这个铃较远时,他需要避开障碍物和你才能到达,这就需要较复杂的导航与寻路算法。

  当然,有许多行为可以直接由动画层处理的。例如:如果某任务坐在餐桌旁边,这时如果他做出吃东西的决定,那么只需要播放吃东西的动画就可以啦,不再需要其他的AI算法。运动层包含的算法能够把上层做出的决定策略转化为运动。例如:如果某个AI角色的决策层做出攻击玩家的决策时,运动层会利用与移动相关的算法,时角色接近玩家的位置,来执行这个决策,然后播放攻击动画,以及处理角色或玩家的生命值等等。

决策层

  决策层的任务是决定角色在下一时间步该做什么。决策层的功能可以利用有限状态机或行为树等技术实现,也可以采用更加复杂的AI技术,如模糊状态机、神经网络等技术实现。例如:当角色看不到玩家时,就进行巡逻,否则就进行攻击,在攻击的决策中还可以带有扔手雷、加大火力压制等等附加决策。

战略层

  战略指的是一组角色的总体行为,这时AI算法并不是只控制单个角色,而是会影响到多个角色的行为。小组中的每个角色都可以有他们自己的决策层和运动算法,但总体上,它们的决策层会受到团队战略的影响。

  其实,即使游戏中只有运动层和决策层,也可以实现很复杂的功能。事实上,大部分基于行为的游戏也只是用到了这两层,但是,如果需要团队协作,那么好酒需要某些战略AI。