首页
/ ET框架行为机技术解析:构建高灵活性游戏AI系统

ET框架行为机技术解析:构建高灵活性游戏AI系统

2026-04-05 09:12:55作者:管翌锬

一、问题引入:如何突破游戏AI开发的效率瓶颈?

在开放世界游戏开发中,你是否遇到过这些困境:NPC行为逻辑频繁变更导致代码重构、不同怪物AI难以复用、非技术策划无法参与配置?传统AI开发模式往往将逻辑硬编码在代码中,导致迭代效率低下。ET框架提供的行为机(Behavior Machine)解决方案,通过"条件判断+行为执行"的解耦设计,让AI开发从代码驱动转变为配置驱动,彻底解决这些痛点。

二、核心原理:行为机如何实现AI逻辑的灵活编排?

2.1 行为机的工作模型:事件响应式系统

行为机的核心思想类似于餐厅的点餐系统:厨师(AI系统)会按照菜单(节点优先级)依次检查食材是否可用(条件判断),一旦找到可制作的菜品(满足条件的节点)就立即开始烹饪(执行行为)。这种模型具有三个显著优势:

  • 无状态依赖:每个行为节点独立判断条件,无需关心上一行为状态
  • 动态优先级:通过节点顺序定义行为优先级,无需复杂的状态转换规则
  • 天然支持中断:基于协程的取消机制,实现行为的无缝切换

2.2 核心组件与工作流程

行为机系统由三个核心部分组成:

行为机核心
├── 节点管理器(NodeManager):维护节点列表与优先级
├── 条件检查器(ConditionChecker):定期验证节点条件
└── 行为执行器(ActionExecutor):处理协程执行与取消

工作流程可概括为四步循环:

  1. 检查阶段:按优先级顺序评估所有节点条件
  2. 选择阶段:选取首个满足条件的节点
  3. 执行阶段:启动新节点协程并取消当前行为
  4. 等待阶段:间隔指定时间后重复检查

Unity外部工具配置界面

图:Unity外部工具配置界面,可类比行为机的节点配置面板

三、实践指南:从零构建MMO怪物AI系统

3.1 环境准备与核心API

首先通过Git获取ET框架源码:

git clone https://gitcode.com/GitHub_Trending/et/ET

行为机开发涉及的核心API包括:

  • AINode:所有行为节点的基类,包含Check()和Run()方法
  • ETCancelToken:协程取消令牌,用于行为中断
  • AIComponent:挂载在实体上的AI控制器组件

3.2 自定义行为节点开发

创建一个巡逻节点的步骤:

步骤1:定义节点类

public class PatrolNode : AINode
{
    [SerializeField] private float radius = 10f;  // 巡逻半径
    [SerializeField] private float waitTime = 2f; // 停留时间
    
    // 条件检查:永远返回true,表示随时可执行
    public override bool Check(Unit unit) => true;
    
    // 行为执行:巡逻逻辑实现
    public override async ETVoid Run(Unit unit, ETCancelToken cancelToken)
    {
        while (!cancelToken.IsCanceled)
        {
            // 生成随机目标点
            Vector3 target = GetRandomPoint(unit.Position, radius);
            // 移动到目标点(支持取消)
            await unit.MoveToAsync(target, cancelToken);
            // 等待指定时间(支持取消)
            await TimerComponent.Instance.Wait(waitTime * 1000, cancelToken);
        }
    }
}

步骤2:创建配置资产 在Unity编辑器中创建ScriptableObject资产存储节点配置:

[CreateAssetMenu(fileName = "MonsterAI", menuName = "ET/AI配置")]
public class AIConfig : ScriptableObject
{
    public List<NodeConfig> Nodes = new List<NodeConfig>();
}

步骤3:配置节点优先级 在配置文件中按优先级顺序添加节点:

  1. 战斗节点(最高优先级)
  2. 追击节点
  3. 巡逻节点(最低优先级)

3.3 实体集成与测试

将AI组件添加到怪物实体:

public class MonsterAI : Entity
{
    private AIComponent aiComponent;
    
    public override void Awake()
    {
        aiComponent = AddComponent<AIComponent>();
        // 加载配置并启动行为机
        aiComponent.Init(Resources.Load<AIConfig>("AI/MonsterConfig"));
    }
}

四、场景拓展:行为机在不同游戏类型中的应用

4.1 角色类型适配建议

游戏角色类型 推荐节点组合 设计要点
MMO小怪 巡逻+追击+返回 简单条件判断,资源消耗优先
Boss战 阶段切换+技能释放+仇恨管理 状态记忆,复杂条件组合
NPC商贩 对话+商品展示+路径移动 事件触发型节点
开放世界动物 觅食+逃避+社交行为 环境感知节点

4.2 高级应用:节点组合与状态共享

对于复杂AI行为,可采用"组合节点"模式:

战斗节点
├── 近战攻击节点
├── 远程技能节点
└── 防御姿态节点

通过共享黑板(Blackboard)实现节点间数据交换:

// 黑板数据共享示例
public class Blackboard
{
    public float DistanceToPlayer { get; set; }
    public bool HasTarget { get; set; }
    public Vector3 HomePosition { get; set; }
}

五、常见问题排查与性能优化

5.1 典型问题解决方案

问题1:行为切换时出现卡顿

  • 原因:协程取消不及时导致资源未释放
  • 解决方案:在Run方法中确保所有await调用都传入cancelToken

问题2:高优先级节点无法抢占

  • 原因:检查间隔过长或条件判断错误
  • 解决方案:缩短检查间隔至200-500ms,添加条件调试日志

问题3:AI逻辑消耗CPU过高

  • 原因:节点条件检查包含复杂计算
  • 解决方案:缓存计算结果,使用空间分区减少检测范围

5.2 性能优化策略

  1. 节点分级:将检查频率分为高频(200ms)、中频(1s)、低频(5s)
  2. 距离剔除:远距离实体降低AI更新频率
  3. 视距裁剪:对玩家视野外实体暂停部分AI逻辑
  4. 对象池化:复用频繁创建的行为节点实例

六、总结与未来展望

ET框架的行为机系统通过将AI逻辑分解为独立的"条件-行为"单元,大幅降低了游戏AI的开发复杂度。其核心价值在于:

  • 开发效率:非技术人员可通过配置文件调整AI行为
  • 运行时灵活性:支持动态修改节点优先级和参数
  • 代码复用:节点可在不同实体间复用,减少重复开发

未来版本计划引入可视化流程图编辑和AI行为调试工具,进一步降低使用门槛。通过ET框架的行为机系统,开发者可以将更多精力投入到游戏体验设计而非技术实现上,真正实现"用配置定义行为,用代码实现内核"的现代游戏开发理念。

官方文档:Book/6.1AI框架.md AI功能源码:Scripts/

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
27
13
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
643
4.19 K
Dora-SSRDora-SSR
Dora SSR 是一款跨平台的游戏引擎,提供前沿或是具有探索性的游戏开发功能。它内置了Web IDE,提供了可以轻轻松松通过浏览器访问的快捷游戏开发环境,特别适合于在新兴市场如国产游戏掌机和其它移动电子设备上直接进行游戏开发和编程学习。
C++
57
7
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
69
21
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.52 K
871
flutter_flutterflutter_flutter
暂无简介
Dart
887
211
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
12
1
giteagitea
喝着茶写代码!最易用的自托管一站式代码托管平台,包含Git托管,代码审查,团队协作,软件包和CI/CD。
Go
24
0
pytorchpytorch
Ascend Extension for PyTorch
Python
480
580
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
1.28 K
105