项目笔记N-206
总览
- 更新
- 内容块
- 24
- 阅读
- 约 1 分钟
- 路径
- 项目笔记 / CS / 2026.7.7 / AI 模组
本项目没有引入 BehaviorTree.CPP、Unreal Behavior Tree、GOAP 等第三方 AI 框架,也没有用 XML/JSON 配一棵可视化行为树。它采用的是“行为树思想 + 有限状态机 + 优先级选择器 + 导航图”的 C++ 直接实现。
目前采用在每一帧都进行行为逻辑判断
- 1.我现在知道什么?
- 2.我现在最应该做什么?
- 3.我该怎么把这个决定变成动作?
- •情报层:
updateTeamIntel()
- •战术层:
buildRoundPlan()、updateTeamTacticalPlan()
- •决策层:
selectBotIntent()
- •执行层:
executeBotIntent()、followObjective()、engageEnemy()
- •运动层:
findPath()、steerToTarget()、moveToTarget()
- •武器层:
weapon::WeaponSimulator::tryFire()
- •Selector:选择器,从上到下尝试子节点,谁能处理就执行谁。适合表达“优先级”。
- •Sequence:顺序节点,多个条件和动作依次通过才算成功。适合表达“先判断、再执行”。
- •Condition:条件节点,例如“我能看到敌人吗?”
- •Action:动作节点,例如“开火”“下包”“移动到掩体”。
- •Blackboard:黑板,所有节点共享的状态数据,例如敌人位置、目标点、当前意图。
调用链
感知 -> 团队计划 -> 个人决策 -> 执行动作 -> 修正世界状态
Game::update(...)
repairBombInvariant("pre_update")
updateBots(dt)
updateTeamIntel()
updateTeamTacticalPlan()
for each bot:
死亡/冻结/回合结束快速处理
updateBotMemoryAndStuck()
findVisibleEnemy()
selectBotIntent()
executeBotIntent()
repairBombInvariant("post_bots")