游戏开发学习笔记-NPC的AI开发
在游戏开发中,NPC(非玩家角色)的智能行为设计十分重要。不同的AI开发方式适用于不同复杂度和类型的NPC。本篇详细介绍主流的NPC AI开发方法,并配有树状图示例,帮助初学者轻松理解。
一、有限状态机(FSM,Finite State Machine)
1. 概念
有限状态机是一种把NPC行为分成几个“状态”的设计方式,比如“巡逻”、“攻击”、“逃跑”等。NPC任意时刻只会处于某一个状态,满足条件才会切换到其他状态。
2. 原理
- 状态:NPC所处的行为阶段。
- 切换条件:决定何时从一个状态跳转到另一个状态。
- 每个状态的具体行为:比如巡逻状态下,NPC会在场景中来回走动。
3. 树图示例
巡逻
└─ 发现敌人? 是 → 追击敌人
└─ 距离很近? 是 → 攻击敌人
└─ 血量很低? 是 → 逃跑4. 讲解
比如一个警卫巡逻,发现敌人就追击,靠近了就攻击,受伤严重就逃跑。每个行为就是一个“状态”,切换条件清晰简单,非常适合新手入门和简单AI。
二、决策树(Decision Tree)
1. 概念
决策树就像一系列嵌套的“如果……那么……”的判断题。NPC会沿着判断条件,一步步选择最终要做的事情。
2. 原理
- 每一层是一个判断问题。
- 满足条件就继续往下判断,直到找到适合当前情况的行为。
3. 树图示例
发现敌人?
├─ 是
│ └─ 距离近?
│ ├─ 是 → 攻击
│ └─ 否 → 追击
└─ 否 → 巡逻4. 讲解
比如NPC先问自己“看到敌人了吗?”如果看到,再问“敌人近吗?”,如果近就攻击,不近就追。如果没看到,就继续巡逻。适合逻辑不复杂的NPC。
三、行为树(Behavior Tree)
1. 概念
行为树是一种模块化的设计,把复杂行为拆解成一个个“小动作”,再像拼积木一样组合起来。每个“树枝”表示一个决策流程,叶子节点是具体动作。
2. 原理
- 从根节点出发,按顺序或优先级检查每个子节点。
- 组合复杂行为,比如“先做A,如果不行再做B”。
- 节点可以复用,易于扩展。
3. 树图示例
选择器
├─ 行为1:发现敌人?
│ └─ 是 → 顺序器
│ ├─ 面向敌人
│ ├─ 接近敌人
│ └─ 攻击敌人
├─ 行为2:血量低?
│ └─ 是 → 寻找掩体
└─ 行为3:巡逻4. 讲解
行为树就像一个智能化的流程表,先判断优先级高的事(比如有敌人就先攻击),否则做次要的事(比如巡逻)。树的结构让每个行为都能灵活组合,非常适合复杂NPC。
四、GOAP(目标导向动作规划,Goal-Oriented Action Planning)
1. 概念
GOAP不是提前写好所有流程,而是让NPC根据“目标”动态规划怎么做。比如目标是“活下来”,NPC会自动选择“找药包”“找掩体”等步骤。
2. 原理
- 给NPC设定多个目标,如“消灭敌人”“保持安全”。
- 每个动作有“前提条件”和“结果”。
- NPC根据当前情况,自动规划一系列动作达成目标。
3. 树图示例(目标:消灭敌人)
目标:消灭敌人
├─ 需要武器?
│ └─ 是 → 去找武器
├─ 有武器 → 靠近敌人
└─ 接近后 → 攻击敌人4. 讲解
比如NPC没有武器,就会先去找武器;有了武器后再去接近敌人,最后攻击。GOAP让NPC像“思考”一样,灵活应对不同情况,行为更智能。
五、黑板系统(Blackboard System)
1. 概念
黑板系统是一个信息共享平台,NPC的各个模块(比如感知、决策、行动)都可以在黑板上读写信息,实现协同。
2. 原理
- 黑板就像一个公告栏,大家都能看到。
- 感知模块发现敌人后,把信息写到黑板上。
- 行为模块读取这些信息,决定要做什么。
3. 树图示例
黑板
├─ 发现敌人 → 决策模块读取 → 切换到攻击状态
├─ 发现血包 → 决策模块读取 → 前往拾取
└─ 其他信息4. 讲解
黑板让NPC的不同部分可以互相沟通,比如“感知”发现敌人,“决策”模块就能知道要攻击。这种方式多用于复杂AI系统。
六、基于规则的系统(Rule-based System)
1. 概念
基于规则的系统,就是提前写好一堆“如果……那么……”的规则,NPC遇到情况就一条条检查,满足条件就执行相应行为。
2. 原理
- 规则库里存着各种条件和结果。
- NPC不断检查当前所有规则,执行最先匹配的行为。
3. 树图示例
规则库
├─ 如果血量低 → 寻找医疗包
├─ 如果敌人靠近 → 攻击
└─ 否则 → 巡逻4. 讲解
比如“如果血量低,去找药包;如果敌人靠近,先攻击”。适合简单或者中等复杂度的AI,但规则多了后管理会变复杂。
七、机器学习/深度学习方法
1. 概念
机器学习让NPC通过“学习”来变得更聪明,比如通过反复试错,自动学会最佳行为。
2. 原理
- 通过大量训练,AI模型掌握在不同情况下的最佳反应。
- 强化学习:NPC每做一次选择,都会得到奖励或惩罚,通过不断尝试,学会最优策略。
3. 树图示例(简化思路)
环境反馈
├─ 尝试动作A → 得到奖励 → 增强动作A
├─ 尝试动作B → 得到惩罚 → 减少动作B
└─ 反复迭代 → 学习到最佳行为4. 讲解
比如NPC在模拟环境里尝试“攻击”“逃跑”“躲避”,每次尝试后都通过奖励机制调整行为,最终学会如何做得最好。这种方法适合做高智能NPC,但开发和训练成本高。
八、基于大语言模型的生成式智能体架构(以斯坦福AI小人虚拟小镇为例)
1. 概念
生成式智能体(Generative Agent)是一种借助大语言模型(如GPT)作为“智能大脑”,结合记忆、检索、反思、计划等模块,模拟出高度拟人的行为和交互。其典型代表是斯坦福大学提出的“AI小人虚拟小镇”,在开源社区(如a16z重写版)得到了广泛应用。
传统AI方法如有限状态机、行为树、GOAP等,行为多为“脚本化”或“规则化”。生成式智能体则通过自然语言驱动行为,能够自我进化、动态适应环境,表现出类似人类的复杂行为。
2. 技术架构与整体思路
2.1 架构树状图
生成式智能体架构
├─ 记忆流(Memory Stream)
│ ├─ 观察(Observations)
│ ├─ 反思(Reflections)
│ └─ 计划(Plans)
├─ 检索机制(Retrieval)
│ ├─ 近因性
│ ├─ 重要性
│ └─ 相关性(向量数据库)
├─ 反思机制(Reflection)
│ └─ 抽象/推理(生成反思树)
├─ 计划与反应(Planning & Reaction)
│ ├─ 高层计划
│ └─ 递归细化
├─ 行为生成(Action Generation)
│ ├─ 环境互动
│ └─ 代理对话
├─ 用户交互
│ └─ 用户输入(自然语言)
├─ 外部支持系统
│ ├─ 游戏引擎、数据库
│ ├─ 向量数据库
│ ├─ 文字生成模型(LLM)
│ └─ 像素图生成等2.2 架构详细讲解
A. 记忆流(Memory Stream)
- 每个智能体都有自己的“记忆数据库”,记录着所有经历过的事件、对话、计划、反思等。
- 记忆以自然语言形式存储,包含时间戳和访问时间,既有“观测”也有“抽象反思”。
- 例如:AI小人“伊莎贝拉”会记得“今天早上在厨房遇到朋友做早餐”。
B. 检索机制(Retrieval)
- 智能体需要从大量记忆中检索出“当前最相关”的记忆,指导当下行为。
- 检索包括三大指标:
- 近因性:越新发生的事件,分数越高。
- 重要性:事件越重要,分数越高(如“分手”比“刷牙”重要)。
- 相关性:用向量数据库(如Pinecone)计算与当前情境的相似度。
- 例如,AI小人要决定是否去见某人,会回忆最近有关此人的经历和情感。
C. 反思机制(Reflection)
- 不只是被动记忆,还会主动“总结归纳”,形成“反思”。
- 反思是对多个相关记忆的抽象,比如“我和朋友的关系变得更亲密了”。
- 反思会形成“树状结构”,叶节点是具体事件,高层节点是抽象见解。
- 反思周期性发生,重要事件累积到阈值时触发。
D. 计划与反应(Planning & Reaction)
- 智能体会制定自己的“日程计划”,比如“早上做早餐、上午去公园、下午工作”。
- 计划可以递归细化成更小的行动步骤,并随时根据环境变化做出调整。
- 每当环境或其他智能体行为发生变化,计划会实时更新。
E. 行为生成(Action Generation)
- 智能体的每一步行为由大语言模型(如GPT)生成,行为描述为自然语言,并映射到具体动作。
- 智能体之间的对话、与环境的交互都通过自然语言描述和解释。
F. 用户交互
- 用户可以通过自然语言输入影响智能体(如指派任务、修改属性)。
- 用户也可以“化身”进入虚拟小镇,成为其中一员。
G. 外部支持系统
- 游戏引擎(Convex)、数据库、向量数据库(Pinecone)、文字生成模型(OpenAI)、像素图生成(Replicate/Fal.ai)等,构成整个技术栈的基础设施。
3. 与传统AI方法的对比
| 传统方法 | 特点 | 生成式智能体 |
|---|---|---|
| 有限状态机、行为树、GOAP等 | 规则/脚本驱动,行为固定,扩展性差 | 记忆驱动,行为高度拟人,动态自适应 |
| 规则系统 | 依赖开发者预设规则 | 通过大语言模型自动推理与规划 |
| 强化学习 | 需大量训练,适应性有限 | 通过记忆、环境、反思即时适应新情境 |
| 机器学习 | 难以解释、训练成本高 | LLM强提示+外逻辑架构,易于扩展 |
4. 生成式智能体的创新点
- 内逻辑与外逻辑结合:大语言模型负责“想”,外部系统负责“管”数据和操作。
- 记忆驱动行为:不再依赖死板脚本,行为由“记忆-检索-反思-计划”动态生成。
- 行为高度拟人:能模拟人类的长期记忆、情感变化、临场反应、社会互动。
- 自进化能力:环境或用户输入变化时,智能体能自动适应,无需修改代码。
5. 示例:AI小人的一天(树状图)
伊莎贝拉的一天
├─ 记忆流
│ ├─ 早上做早餐
│ ├─ 与朋友聊天
│ ├─ 计划去公园
│ └─ 下午工作
├─ 检索
│ ├─ 最近与朋友的对话
│ └─ 上次工作时的反思
├─ 反思
│ ├─ 今天与朋友关系更亲密
│ └─ 工作效率提升
├─ 计划
│ ├─ 上午:社交
│ └─ 下午:工作
├─ 行为
│ ├─ 与朋友互动
│ └─ 执行工作任务这些行为全自动生成,AI小人会根据记忆和环境调整自己的计划和反应。
6. 适用场景与未来趋势
- 虚拟世界/元宇宙:高度拟人NPC、虚拟居民。
- 游戏开发:复杂剧情与开放世界中的真实NPC行为。
- 社交/教育/陪伴:情感丰富、可自我进化的AI伙伴。
- 智能体系统:自动化办公、协作机器人等。
7. 相关资源
总结
斯坦福AI小人虚拟小镇项目开启了大语言模型驱动的AI智能体新时代。它打破了传统脚本和规则系统的限制,让AI像“人”一样,有记忆、会反思、能规划、会交流,真正实现了“虚拟居民”的可信模拟。这一架构的理解,对设计下一代AI应用极具参考价值。