joywayer
|
ecdb0040cb
|
feat(editor): 敌人 AI 配方脚手架向导;AssignModules 改名并失效缓存
- AiRecipeSO 新增 protected InvalidateGraph(),子类装配模块后调用以丢弃缓存图,
避免改动要等到下次进 Play 才生效的静默陈旧图问题。
- PerceptionRecipeSO.SetModulesForTests 改名为 AssignModules(向导也要用它装配模块,
旧名字具有误导性),并在装配后调用 InvalidateGraph。
- 新增 EnemyAiRecipeWizard:按 AssetFolderSpec 定名定路径创建感知型 AI 配方资产
(Assets/_Game/Data/Enemies/{EnemyID}/ENM_{EnemyID}_Ai.asset),已存在则选中不覆盖。
- PerceptionRecipeSoTests 同步改名调用点,并新增测试钉住"装配后缓存必须失效"契约。
|
2026-07-29 15:28:25 +08:00 |
|
joywayer
|
426fa3601d
|
fix(enemy): EnemyAiBrain 配置守卫不随重新启用蒸发,注册表消重
|
2026-07-29 15:23:49 +08:00 |
|
joywayer
|
57cbaacf2c
|
feat(enemy): EnemyAiBrain 支持配方资产/AiScript id 二选一解析
|
2026-07-29 14:56:54 +08:00 |
|
 joywayerandClaude Opus 5
|
04f644969b
|
fix(ai): AiRecipeSO.OnEnable 改 protected virtual,防子类静默遮蔽
留作 private 时,子类另写一个 OnEnable 会遮蔽它(Unity 只调最派生的),
PlayModeResetHook 注册从此不发生且零报错——关闭域重载下即表现为
"改了配方进 Play 仍跑旧图"。T13 的 PerceptionRecipeSO 是第一个子类,
在它出现前先堵住。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-07-29 14:36:22 +08:00 |
|
joywayer
|
6d8db95046
|
feat(ai): IAiDefinition + AiRecipeSO 配方基类(含关闭域重载的缓存重置)
|
2026-07-29 14:32:45 +08:00 |
|
joywayer
|
894ae99984
|
test(ai): 补测经 AiStateFragments 的跨模块状态撞名,State() 补引导注释
|
2026-07-29 12:11:07 +08:00 |
|
joywayer
|
80fdc36762
|
feat(ai): BrainBuilder.DeclareState——重复声明状态即报错,防模块间同名静默覆盖
State() 仍保持宽松(有则取),用于给已声明的态挂边;DeclareState() 只用于
首次声明行为,重复声明同名状态会抛异常。AiStateFragments 的四个建态原语
(Locomotion/Ability/AbilityOnce/Terminal)改用 DeclareState。同时给
IEngagementModule/IDeathModule/IUnawareModule 补充不变量说明。
|
2026-07-29 12:01:19 +08:00 |
|
joywayer
|
fd238b71f1
|
refactor(ai): AiSignal 8→1,删除零发送方零消费方的死枚举
|
2026-07-29 11:14:29 +08:00 |
|
joywayer
|
e76d6bc118
|
feat(ai): BrainBuilder.RequireState——未声明状态挂边时构建期报错
|
2026-07-29 11:08:23 +08:00 |
|
joywayer
|
297f9d2968
|
feat(enemy): IEnemyLocomotion 增加 Pursue 寻路逼近原语(RunSpeed)
|
2026-07-24 12:23:43 +08:00 |
|
joywayer
|
702df35efd
|
feat(enemy): ICombatant 增加 HasEligibleAttack/UseBestAttack + EnemyBase 构建选择器
|
2026-07-24 12:20:54 +08:00 |
|
 joywayerandClaude Opus 4.8
|
1ab0521061
|
refactor(ai): IAiContext.Mover→Locomotion,删除 IMover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-10 12:14:53 +08:00 |
|
 joywayerandClaude Opus 4.8
|
0a7312e9bc
|
feat(ai): 新增 IEnemyLocomotion 接口与 LocomotionMode/PatrolStrategy 枚举
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-10 11:55:41 +08:00 |
|
 joywayerandClaude Opus 4.8
|
6c27993e09
|
feat(ai): 敌人感知↔状态模型——待机/警觉/追击/巡逻 + 可复用感知状态机
感知门面 EnemyBase.InChaseZone(追逐/aggro)/InVisionZone(视野/los,缺省回退aggro),纯查询;
转换逻辑归 AI 层: 新增可复用 PerceptionStateMachine(统一规则,HasAlert/视野缺省自动降级);
规则: 未发现进视野→警觉, 进追逐→追击(委托能力), 追击脱离视野→巡逻(永不回警觉,再进视野再警觉).
EnemyStatsSO.HasAlertState 勾选项; ContactChaseAbility 改纯执行器(退出由AI中断); E001 用可复用件.
PlayMode 验证四态转换全通过.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-09 15:10:39 +08:00 |
|
 joywayerandClaude Opus 4.8
|
4ce798ea6e
|
refactor(ai): E001 AI 重写为纯决策层,符合设计并委托能力模块
依据小怪设计文档重构 E001 状态机 Idle_Disguise→Skill_Start→Skill_Loop→Skill_End→Move_Patrol:
追击移动/接触伤害全部委托 e001_chase(ContactChaseAbility),AI 不再裸 MoveTo。
新增 ISensor.DetectsPlayer(视线OR近身,对齐设计)、IMover.UseChase/PatrolSpeed、
IEnemyActor.SetPhase(AI 声明阶段、EnemyBase 播动画)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-03 16:51:47 +08:00 |
|
 joywayerandClaude Opus 4.8
|
63e241af92
|
fix(ai): AiRuntime 自转换设为no-op(根治死亡双发Died再入) + EnemyBase.OnSpawn复位brain.enabled + 测试
Switch 对 target==当前态直接 no-op(不重跑Exit/Enter),循环改为 if(Switch(t))return true;
OnSpawn 复用时恢复被 QuotaManager 裁剪禁用的 brain。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-03 16:26:28 +08:00 |
|
joywayer
|
683a2d9ffb
|
feat(ai): AiDefinitionRegistry——反射按id提供共享AiGraph(关域重载重置)
|
2026-07-03 14:55:42 +08:00 |
|
joywayer
|
11e4c9f1ea
|
refactor(ai): 终审收尾——删死字段/事件转换刷新IsSuspended + 局部事件与双实例独立性测试
|
2026-07-03 14:33:23 +08:00 |
|
joywayer
|
d01df7b5f0
|
feat(ai): AiRuntime 事件转换(push,不受门限制)+trace触发原因+池复用测试
|
2026-07-03 14:23:28 +08:00 |
|
joywayer
|
5ad26b16e8
|
perf(ai): AiRuntime 热路径去装箱/弱表一次注册 + 补 OnExit/Entry OnEnter 测试
|
2026-07-03 14:20:19 +08:00 |
|
joywayer
|
cdd1053bec
|
feat(ai): AiRuntime 条件转换+IsControllable让位门+状态计时+trace+Reset
|
2026-07-03 14:13:36 +08:00 |
|
joywayer
|
0253fd15ca
|
refactor(ai): BrainGraph Task4 审查修复——删死字段/Global空目标校验/AiState只读转换
|
2026-07-03 14:09:43 +08:00 |
|
joywayer
|
6f9fa8c4b8
|
feat(ai): BrainGraph AiGraph + BrainBuilder(fluent, 显式标签, 目标校验)
|
2026-07-03 14:04:51 +08:00 |
|
joywayer
|
3d6cef1f41
|
feat(ai): BrainGraph Transition/AiState/TransitionRecord 数据结构
|
2026-07-03 14:00:27 +08:00 |
|
joywayer
|
7281c5cf6e
|
feat(ai): BrainGraph 能力接口(ISensor/IMover/ICombatant/IActorVitals)+IAiContext
|
2026-07-03 13:58:52 +08:00 |
|
joywayer
|
db5bd019f8
|
feat(ai): BrainGraph 核心程序集 + AiSignal + Blackboard(可自省)
|
2026-07-03 13:56:11 +08:00 |
|