ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

《游戏人工智能》学习笔记1——4 行为选择算法一览

2022-02-08 22:32:23  阅读:253  来源: 互联网

标签:状态 人工智能 一览 任务 列表 算法 行为 节点


思维导图

 

文字版

4 行为选择算法一览

AI模型:感知-思考-行动。

  • 实现NPC思考的算法有很多种,每种算法都有适用的场景。本章介绍几种业界最流行的行为选择(思考)算法

  • 注:思考,也是上面提到的行为选择算法,即决策算法

有限状态机 FSM,Finite-State Machine

  • 定义

    • 状态 State

      • 表示一个特定的行为或内部状态,同一时刻只有一个状态是激活的

    • 状态迁移 State Transition

      • 满足特定条件时切换激活状态

  • 可视化

    • 圆角方框表示状态

    • 箭头表示状态迁移

  • 代码类

    • 状态基类 FSMState

    • 状态迁移类 FSMTransition

    • 状态机管理类 FiniteStateMachine

  • 优缺点

    • 灵活

    • 状态数多时非常复杂

    • 无法做到有上下文时的行为重用

分层状态机 HFSM, Hierarchical Finite-State Machine

  • 定义

    • 将一个状态机划分为按层次组织的多个状态机

  • 优缺点

    • 一定程度上解决FSM缺点,例如有历史状态

    • 嵌套状态机,代码和递归负责度高

  • 细节

    • Artificial Intelligence for Games一书5.3.9节,作者 Ian Millington

行为树 Behavior Tree

  • 定义

    • 由一个根节点和许多行为组成树状结构,每个行为都是NPC要表现的一个独立动作。

  • 算法描述

    • 把根节点当做当前节点

    • 如果当前节点不为空

      • 检测当前节点的预设条件

      • 如果预设条件返回true

        • 将节点加入待驱动列表中

        • 把节点的子节点(有可能为空)作为当前节点

      • 否则

        • 把节点的右兄弟节点作为当前节点

    • 驱动待驱动列表中的所有行为节点

  • 优点

    • 简单直接,易于实现,且行为树本身无状态

    • 行为间的耦合度比FSM状态间耦合度小

    • 扩展性极强

      • 在行为树基础上实现其他的行为选择算法

      • 采用不同的行为选择算法

        • 固定/随机/依次选择子行为

        • 基于效用的类型选择器

        • 扩展预设条件等

  • 缺点

    • 每次从根节点开始,单次驱动的时间通常大于FSM

    • 无状态,需要留意涉及NPC记忆的情况

基于效用的系统

  • 定义

    • 对大量参考因素进行度量、权衡、组合、评估、排序、挑选,决定潜在动作的优先性(即优先级、评分、程度)

  • 应用

    • 《模拟人生》 The Sims

  • 适用

    • RPG

    • RTS 实时策略游戏

  • 优点

    • AI逻辑不仅仅是布尔的是否逻辑,更多是连续竖直表明希望进行这个动作的程度,例如多远、多饿、血量或子弹等等

    • 适应性

      • 优先值一直在变化

    • 不可预测性,好处是提高可信度

  • 缺点

    • 对应不可预测性,可控性较差。若游戏需要特定时刻让agent做出特定行为,你就必须用更脚本化的动作重写效用计算过程

    • 需要付出很高成本才能保证游戏中的agent表现得很聪明且具有强大的响应能力

      • 核心架构容易构造,新行为容易添加

      • 调节参数非常挑战

        • 行为并不孤立,往往联系紧密

        • 添加新行为影响其他行为

  • 细节

    • 本书第9章

    • Behavioral Mathematics for Game AI, 作者Mark

目标导向的行动规划 GOAP,Goal-Oriented Action Planning

  • 定义

    • 概念

      • 行为

      • 预设条件

      • 状态

    • 系统会用一些变量描述世界的初始状态,同时维护一些需要实现的目标集合。

    • GOAP通常会从事先确定的NPC想要实现的目标集合中选出一个目标列表(可以基于目标优先级或NPC当前状态来选择),然后通过规划系统决定行动序列,控制agent并间接影响世界状态,直到使规划目标中定义的事实都满足条件。

    • 具体:“逆向链式检索”,从想要实现的目标开始分析,先规划需要执行什么行动才能实现这个目标,然后得出刚才规划出的行动需要满足什么样的预设条件,以此类推直到起始状态。

      • 目标->行动+预设条件->...->初始状态

      • 我理解和“终局思维”有点像

      • 对应的,基于效用的系统实际上是一种“正向链式检索”:基于启发搜索、剪枝以及其他技巧。

  • 算法

    • 把目标加入待解决事实列表中

    • 遍历待解决事实列表中的每个事实

      • 将其从列表中移除

      • 查找可以导致该事实发生的行动

      • 如果查到的行动其预设条件满足

        • 将该行动加入到计划中

        • 回溯检测待解决事实列表,查到现在可以支持的行动(上一步相当于更新了可以支持的行动),并加入到计划中

      • 否则

        • 把该行动的预设条件加入到待解决事实列表中

  • 应用

    • FEAR,Just Cause 2和Deus Ex: Human Revolution

  • 优点

    • 简化开发流程,让设计师集中精力创建简单的组件

  • 缺点

    • 降低开发团队对AI行为的控制力与引导力

分层任务网络 HTN, Hierarchical Task Network

  • 定义

    • 概念

      • 初始游戏状态

      • 代表要解决问题的根任务(root task)

      • 根任务表示的是一种具有较高层次抽象等级的任务(高层任务/复合任务),这类任务会在规划过程中被分解为越来越小的任务,直到最后一个由不可再分的任务(基元任务)组成的计划,该计划可以用来直接解决最开始定义的问题。

    • 正向规划器

      • 与GOAP区别,GOAP是逆向规划器

      • GOAP从期望的游戏世界状态开始,逐步回溯,直到当前游戏世界状态

      • HTN从当前游戏世界状态开始,尝试规划出一个期望的解决方案

  • 算法

    • 把根复合任务加入到待分解列表中

    • 遍历待分解列表中的每个任务

      • 从待分解列表中移除该任务

      • 如果该任务是复合任务

        • 依次检查与该任务关联的所有实现方法,判断实现方法的预设条件是否在当前世界状态下被满足

        • 如果有实现方法满足条件,就把该方法的任务组加到待分解列表中

        • 如果没有,规划器会回溯到上一次任务的任务分解逻辑

      • 如果该任务是基元任务

        • 把任务的效果应用到当前世界状态上

        • 把任务加到最终计划列表中

  • 应用

    • 杀戮地带2 KillZone2

    • 变形金刚:赛伯坦的陨落

  • 优点

    • 设计师容易理解,方便与程序员合作

    • 模块化,基元任务可复用

  • 缺点

    • HTN的检索是基于图的,深度和图中元素数量级会影响搜索时间

    • 降低了对AI的控制力

总结

  • AI程序员有必要掌握各种(行为选择,决策)算法的最佳适用场景

    • 游戏类型

    • NPC的知识表示结构

    • 游戏的目标平台

    • 其他各种因素

  • 花时间认真思考游戏需求,一定可以构建出一套既能平衡开发时间与完成度,又能带给玩家最佳体验的AI系统。

XMind - Trial Version

标签:状态,人工智能,一览,任务,列表,算法,行为,节点
来源: https://blog.csdn.net/wangchao701123/article/details/122832483

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有