# 行为树 RTS 演示项目 这是一个展示`@esengine/ai`行为树系统在RTS游戏中应用的完整演示项目。 ## 项目概述 该演示项目展示了如何在Cocos Creator 3D环境中使用行为树系统创建智能的RTS单位AI。项目包含三种不同类型的单位,每种都有独特的行为模式和AI策略。 ## 单位类型 ### 1. 工人 (Worker) - **文件**: `worker-ai.btree`, `worker-ai.bt.json` - **特点**: 专注于资源收集、建造和修理 - **行为优先级**: 紧急情况 > 命令执行 > 空闲行为 - **主要功能**: - 资源收集和运输 - 建筑建造 - 结构修理 - 自动寻找附近资源 - 生命值过低时撤退 ### 2. 士兵 (Soldier) - **文件**: `soldier-ai.btree`, `soldier-ai.bt.json` - **特点**: 专注于战斗、防御和战术行动 - **行为优先级**: 战斗 > 命令执行 > 防御行为 - **主要功能**: - 近战和远程攻击 - 敌人检测和交战 - 战术移动和撤退 - 区域防御和巡逻 - 队形保持 ### 3. 侦察兵 (Scout) - **文件**: `scout-ai.btree`, `scout-ai.bt.json` - **特点**: 专注于探索、侦察和信息收集 - **行为优先级**: 生存 > 命令执行 > 自主侦察 - **主要功能**: - 区域探索和侦察 - 威胁检测和规避 - 隐蔽移动和撤退 - 情报收集和报告 - 自主探索未知区域 ## 技术特点 ### 行为树设计 - **选择器(Selector)**: 根据优先级选择行为分支 - **序列器(Sequence)**: 按顺序执行一系列行为 - **条件装饰器(Conditional Decorator)**: 基于条件执行子节点 - **事件动作(Event Action)**: 执行具体的游戏行为 - **等待动作(Wait Action)**: 添加时间延迟 ### 黑板系统 每个单位都有独立的黑板变量,用于存储和共享状态信息: - 单位属性(生命值、移动速度、攻击力等) - 状态标志(是否移动、是否有目标等) - 位置信息(当前位置、目标位置等) - 特殊能力(隐蔽、战斗模式等) ### 文件格式 #### .btree 文件(编辑器格式) - 包含完整的编辑器状态和元数据 - 包含节点位置、连接关系、属性配置 - 包含黑板变量定义和初始值 - 支持编辑器的撤销/重做、剪贴板等功能 #### .bt.json 文件(运行时格式) - 精简的运行时格式,只包含游戏所需的核心数据 - 优化的数据结构,适合快速加载和执行 - 移除了编辑器相关的元数据 ## 代码结构 ### 核心组件 - **RTSDemo.ts**: 主控制器,管理整个演示场景 - **UnitController.ts**: 单位控制器,管理单位的基本行为和状态 - **BehaviorTreeManager.ts**: 行为树管理器,集成`@esengine/ai`系统 - **RTSCameraController.ts**: RTS相机控制器 - **UIController.ts**: 用户界面控制器 ### 关键特性 - **纯Cocos Creator实现**: 不依赖其他框架,专注展示行为树功能 - **实时状态同步**: 单位状态自动同步到行为树黑板 - **命令系统**: 支持移动、攻击、收集、巡逻等RTS命令 - **可视化调试**: 实时显示单位状态和行为信息 ## 使用方法 ### 1. 在行为树编辑器中 1. 打开对应的`.btree`文件进行编辑 2. 修改节点逻辑、添加新行为或调整优先级 3. 导出为`.bt.json`文件供游戏运行时使用 ### 2. 在游戏中 1. 运行场景,观察不同单位的AI行为 2. 使用UI按钮发布命令,测试单位响应 3. 观察单位在不同情况下的行为切换 ### 3. 扩展开发 - 添加新的行为节点类型 - 创建更复杂的AI策略 - 集成更多游戏机制(资源系统、建筑系统等) ## 演示价值 这个项目完整展示了: 1. **行为树在RTS游戏中的实际应用** 2. **不同单位类型的AI差异化设计** 3. **复杂游戏逻辑的行为树实现方式** 4. **黑板系统在状态管理中的作用** 5. **行为树编辑器与游戏运行时的集成** ## 技术亮点 - **模块化设计**: 每个单位类型独立的行为树设计 - **优先级系统**: 清晰的行为优先级和决策逻辑 - **状态管理**: 完善的黑板变量系统 - **实时调试**: 支持运行时状态监控和调试 - **可扩展性**: 易于添加新的单位类型和行为 这个演示项目可以作为学习行为树系统的完整案例,也可以作为实际RTS游戏开发的起点。