AI感知:Stimulus 是观察,不是攻击目标

自动关联目录:AI感知:Stimulus 是观察,不是攻击目标

核心判断:FAIStimulus 只能证明某个 Sense 在某时刻观察到了什么。它不能直接证明目标仍存活、可达、可攻击,也不能替代仇恨、任务阵营和攻击槽位规则。

一、业务冲突:发现要灵敏,目标却不能反复抖动

敌人需要响应视野、声音、嘲讽和强制揭示,同时还要处理脱战半径、遮挡、玩家失败、隐身与换区。若把一次感知回调直接写入 TargetActor,短暂遮挡会频繁切换目标;若把旧目标永久保留,又会追逐已失效对象。

二、实际实现:UE Perception 事件驱动,但事实层被跳过

现有实现按角色配置 Sight 与 Hearing,利用 SightRadius/LoseSightRadius 的滞回减少边界抖动;OnTargetPerceptionUpdated 在成功感知时加入弱引用候选,在丢失时移除。声音、揭示和嘲讽统一通过 FAINoiseEvent 与 Tag 注入 Perception System,避免每只 AI 主动扫描全场。

但重新配置感知时会直接 ForgetAll,可能在参数热更新后制造整批“丢失再发现”;通用声音通道同时承载物理听觉和玩法命令,接收方必须靠 Tag 猜语义。候选列表只保存 Actor 引用,没有观察时间、来源、最后位置、目标代际和失效原因,Blackboard 最终拿到的是结论而不是可审计事实。

flowchart LR
    S[Sight/Hearing/Gameplay Signal] --> I[Stimulus Ingest]
    I --> F[Perception Fact Store]
    F --> E[阵营/存活/任务资格]
    E --> R[可达性与攻击范围]
    R --> A[Target Assignment]
    A --> B[Blackboard Target Handle]

三、值得保留:用事件更新候选,而不是 Tick 扫描世界

UE Perception 已负责监听器注册、Sense 调度和 Stimulus 生命周期,业务层只响应变化,这比每只 AI 每帧 Overlap 或 GetAllActorsOfClass 更合理。弱引用候选避免阻止对象销毁,LoseSightRadius 也提供了最基本的空间滞回。

四、结构性缺陷:把 Hearing 当事件总线会污染感知语义

听觉事件的 Strength、位置和 MaxRange 本应描述声音事实;用 Tag 表达“强制揭示”或“附近嘲讽”虽然接入快,却难以区分可遮挡声音、无视遮挡命令和阵营广播。重新配置后的 ForgetAll 还会丢掉尚未过期的记忆。若 Blackboard 只存 Actor 指针,异步路径结果返回时无法判断它对应目标的哪一次观察。

五、目标设计:先形成带代际的 Perception Fact

每次回调更新 Fact Store,而不是直接改攻击目标。Fact 保存 Actor 稳定身份与 Incarnation、Sense、观察时刻、位置、置信度和过期时间;玩法信号走独立 Typed Event,不伪装成声音。目标选择读取 Fact 快照,并在提交前重新检查存活、阵营、状态与可达性。

void Ingest(Stimulus s)
{
    TargetHandle h = Registry.Resolve(s.actor);
    if (!h.IsCurrent()) return;

    PerceptionFact& f = Facts.Upsert(h);
    f.observationRevision++;
    f.lastObservedAt = ServerClock::Now();
    f.lastKnownLocation = s.location;
    f.source = s.sense;
    f.confidence = s.success ? 1.0f : DecayFrom(f.confidence);
    f.expiresAt = Policy.Expiry(f);
    Scheduler.MarkTargetSelectionDirty(ownerId);
}

六、决策规则:观察、记忆、资格和目标分层

层回答的问题失效方式
Stimulus刚才看见或听见了什么Sense 自身过期
Perception Fact对该对象目前知道什么时间衰减、对象换代
Eligibility它能否成为玩法目标阵营、存活、任务和状态变化
Reachability当前能否接近或命中NavRevision、门和动态障碍变化
Assignment现在由谁追谁槽位、优先级、Lease 到期
Blackboard Handle当前行为树消费什么Assignment Revision 被覆盖

已有实践正确利用了 UE Perception 的事件模型;真正需要升级的是在 Perception 与 Blackboard 之间补一层事实存储,让一次观察不会被误当成长期有效的攻击承诺。