● ● ● SCP-FOUNDATION // AI DESIGN SPEC · 污染变异体 · 行为与表现规格 · ACCESS GRANTED

Foundation · Abyss Protocol — Enemy AI Design Reference

敌人 AI · 行为与表现规格

面向游戏设计参考的敌人 AI 规格:行为(感知 / 状态机 / 攻击 / 受击 / 死亡)与表现(命中反馈 VFX / 发声 Audio)。术语采用中文 · English 双标,落点对齐实现。架构与类对类地图见 系统设计总览 · 怪物AI

对象 污染变异体 · 原型 Basic / Brute / Stalker 更新 2026-06-12 实现 Source/CoopSurvival/AI · Components · DevelopmentUnits.md
00

原型与威胁定位

Archetype & Threat Role

污染变异体是收容失效的副产物(完整 SCP):真菌感染源自 L2 菌丝母体、蔓延上层。设计定位为基准威胁单位(baseline / tutorial threat)——验证「武器可解 · 命中施加污染 · 掉落普通材料」三条核心。一切权威逻辑 服务器权威 · server-authoritative,客户端仅做表现。

原型 Archetypes

Basic 均衡冲锋型(移速 400)· Brute 重型高韧、感知迟钝(300、听觉短)· Stalker 潜行型、听觉敏锐(150、听程远)。原型差异 = 数据分化(EnemyDefinitions.csv 一行一原型),同一行为内核 + 不同参数,不分叉资产。

无血条 No Health Bar

刻意取消血量 UI(写实压迫感,设计拍板)。玩家通过姿态 / 受击踉跄 / 命中反馈强度读取状态,即诊断式反馈(diegetic feedback)而非数值条。

威胁哲学 Threat Design

敌人是潜行 · 声学 · 走位(移动站位)遭遇谜题(encounter puzzle),而非射击场上的固定靶。绕背、压低噪音足迹、控制交战距离 = 主解法。

掉落 Loot

普通材料(变异组织 / 污染残留,占位中);关键样本 / 路线 / 结局变量绝不进掉落表。尸体可搜刮(搜刮揭示 · search-to-reveal),可选地面散落。

✅ 核心链路 A–G 已 PIE ✅ 数据驱动 Data-A ✅ 尸体搜刮 Enemy-F 🔶 听觉 / 步态 / 巡逻 / 发声 / 血效 待 PIE

01

感知系统

Perception — Sight · Hearing · Aggro

基于 UE AIPerception多感官感知(multi-sense perception):视觉 + 听觉两路独立刺激(stimulus),外加「受创即仇恨」旁路。声学足迹(acoustic footprint)是玩家可操纵的核心隐匿变量。

视觉 VISUAL视觉感知 Sight

视野锥 · sight cone / FOV(半角 ~60°)+ 视线检测 · line-of-sight, LoS,仅对玩家 Pawn。参数:SightRadius 1200 / LoseSightRadius 1400(迟滞)/ SightMaxAge 失察时效。命中即进追击。正面有盲区可绕背 flanking、转角可破 LoS。

听觉 AUDIO听觉感知 Hearing

全向。判定式:可闻 ⇔ 距离 ≤ HearingRange × 噪音响度(loudness)。Basic 1500 / Brute 1200 / Stalker 2800。触发调查(investigate)而非直接追击。

噪音模型 Noise Model

玩家 UCSNoiseEmitterComponent噪音事件 · noise event,响度按运动态:潜行 0.2 / 步行 0.5 / 疾跑 1.0 / 静止 0枪声 2.5ReportGunshotNoise)。响度直接缩放听觉半径 = 隐匿杠杆(stealth lever)。

仇恨 Aggro

受创即强制仇恨强制锁定 · force-aggro):背袭 / 视野外受击也立即锁定攻击者并进追击——无「无敌帧式无视」。

设计意图:隐匿 = 蹲行 + 不开枪压低声学足迹 · acoustic footprint声诱(noise lure)= 在他处制造噪音事件,诱敌脱离 → 开窗口。Stalker 听程远,是声学对抗的高压目标。

🔶 听觉 + 调查 Enemy-H 待 PIE · 调试可视化 cs.ai.DrawPerceptionDebug 1(视野锥 / 听觉半径 / 调查点)

02

AI 状态机

Finite State Machine — 5 States

大脑 ACSEnemyAIController = 有限状态机(FSM;状态多后迁 行为树 / 状态树 · Behavior Tree / StateTree)。完整战斗循环:巡逻 → 调查 → 追击 → 穷追 → 脱战返回。

IDLE巡逻 / 游荡Patrol / Wander
INVESTIGATE调查Investigate
CHASE追击Chase(全速 + 咆哮)
PURSUE穷追 / 搜索Pursuit → LKP
RETURN脱战返回Leash / Reset

状态规格 State Specs

Idle · 巡逻 / 游荡(Patrol/Wander)

以出生点 驻地锚点 · home anchorHomeLocation)为圆心、WanderRadius 600 内取可达随机点(navmesh reachable point),WanderSpeedFraction 0.2 悠闲移动,到点驻留 WanderPauseSeconds 3s 再取下一点。

Investigating · 调查(Investigate)

噪音事件 / 视线丢失触发:InvestigateSpeedFraction 0.5 谨慎趋近 → 到点原地搜视 InvestigateHoldSeconds 3s;途中获视 → 升级追击;总超时 InvestigateMaxSeconds 8s 无果 → 回 Idle。

Chasing · 追击(Chase)

获视即触发锁定预警 · aggro telegraph:先转正朝向 + 嘶吼(可读前摇)→ 停顿后全速直取。ChaseUpdateInterval 0.25s 刷新目标点。

Pursuing · 穷追 / 搜索(Pursuit)

追击中丢失视线 → 保持仇恨 + 全速冲最后已知位置 · Last Known Position, LKP,持续 PursuitGraceSeconds 3s 的宽限期(grace period);窗口内复获视 → 回追击;到点 / 超时 → 降级调查。

Returning · 脱战返回(Leash / Reset)

追击中自身离驻地 > LeashRadius 2500(牵引半径 · leash / tether radius)→ 放弃、有目的性返回(ReturnSpeedFraction 0.6)。返程默认不被动重警戒(避免 leash 边界抖动);但玩家进 ReturnReaggroRadius 600 被获视、或对其造成伤害(force-aggro)仍打断重战(re-aggro)。到点 → Idle。效果:玩家可经拉开距离 / 破 LoS / 脱离牵引半径实现脱战(disengage / lose aggro),非无限追杀。

🔶 巡逻 + 脱战 Patrol-A 待 PIE 🔶 穷追宽限 AI-Chase-Config 待 PIE · 依赖场景 NavMeshBoundsVolume(导航网格)。

未实现 / 缺口:渐进察觉 · progressive detection / awareness meter(当前获视/可闻=二值即时反应,无察觉条累积);Stalker 潜伏-突袭(ambush)行为(暂按游荡近似);群体 AI · crowd / squad 分离避让(RVO)/ 呼救包夹 / 遭遇导演 · spawn director / encounter director(当前关卡手摆)。
03

运动与姿态

Locomotion & Stance

速度驱动(speed-scaled)的单一混合空间 · BlendSpace,叠一个姿态布尔(stance flag)在「平静 / 攻击性」两套移动姿态间混合。步态由参数分化,不为每原型分叉动画集。

步态 = 原型身份 Gait

移速绑定 EnemyId、恒定不变:Stalker 150 潜行步 / Brute 300 重型慢跑 / Basic 400 冲刺。单关节奏差异 = 混编不同原型。

姿态 = 状态布尔 Stance

追击 bIsAggressive=true(攻击性 Offensive);调查 / 待机 =false(平静 Normal)。状态机切换处统一设置并复制驱动动画混合。姿态是游戏状态布尔,非行为模型。

动画 ANIM足步匹配 Foot Sync

BlendSpace 启用 axis_to_scale=Speed,采样点按各动作天然脚速(authored foot speed)摆放,运行速度落上去自动对齐步频 → 消除滑步 · foot sliding实测天然速率:平静走≈50 / 攻击走≈72 / 攻击跑≈267 cm/s;平静态速度应控在 ~1.5× 基准内,超出会被 retime 放大致漂浮。

🔶 步态多样化 + 姿态 Locomotion-B 待 PIE(AnimGraph 的 Blend Poses by bool 待手动接)

已知遗留:攻击动作自带脚滑 · foot sliding(in-place 动作但脚水平位移 ~20cm 已烤入),解法 = 运行时足部 IK / 足锁 · Foot IK / Foot Lock,留作独立单元;进攻击距离的冲刺残速已用 StopMovementImmediately 强制停止消除。
04

近战攻击

Melee Attack

趋近至射程内发起近战。命中判定(hit detection)由动画的激活帧 · active / hit frameAnimNotify 精确触发,非按键瞬时;单次攻击一击一判(去重)。

攻击流程 Attack Loop

进射程(AttackRange ~180)→ 强制停步定身 + 转正朝向 → 随机选段播放。命中帧由 UCSAnimNotify_EnemyMeleeHit 卡帧(无 notify 的变体走 AttackHitTimeFraction 0.45 兜底定时器),bHitAppliedThisAttack 保证一击一判攻击节奏 · cadence / cooldown ~1.6s。

命中结算 On-Hit

伤害先过玩家减伤 · damage mitigationMitigateDamage)再扣血,并对玩家施加增益/减益(apply debuff,Buff_Bleed_Light 等)——即「命中施加污染」落点。

动画 ANIM攻击变体 Variation

Atk01–03 攻击变体(attack variation)每次随机选段,服务器选定下发各端保持一致,避免单一挥击循环。

音频 AUDIO攻击吼 Attack Vocal

🔶 新 每次攻击附攻击吼(接攻击动作多播,各端可闻)。详见 §08 发声

✅ 近战攻击 Enemy-C 已 PIE ✅ 攻击多样化 Enemy-G 🔶 攻击吼 Audio-A 待 PIE

未实现:远程 / 特殊攻击(current melee-only);单次攻击的攻击预警 · attack telegraph / wind-up(除「发现」嘶吼外,挥击前无独立可读前摇)。
05

受击反馈与硬直

Hit Reaction & Hitstun

受击反应(hit reaction)按方向 × 部位 × 力度选择动画,并进入短硬直 · hitstun /踉跄 · stagger。高频伤害经节流(throttle)避免反复锁定。

反应选择 Reaction Select

命中方向(前/后/左/右,按攻击者相对朝向)× 命中部位(头 / 身)× 力度(伤害 ≥ HeavyHitDamageThreshold 25 = 重击)。头部命中优先专用动画;缺段逐级退化至正面身体反应。

弱点 Weak Point

命中头/颈(命中盒 · hitbox 骨名含 head/neck,或按命中点高度近似)套弱点倍率 · weak-point / headshot multiplier:Basic ×2.0 / Brute ×1.5 / Stalker ×2.5(数据驱动,GetIncomingDamageMultiplier)。

硬直 / 节流 Hitstun

受击短硬直 MaxStaggerSeconds 0.5s(期间停止趋近,防滑步);两次受击反应最小间隔 HitReactMinInterval 0.3s(去抖 · debounce / throttle)——连续射击不形成锁链(stun-lock)。自身挥击中不打断(动画槽互斥)。

视觉/音频命中反馈 Hit Feedback

每次有效命中均触发血溅 + 痛吟(受硬直节流约束,连射每发都出)。VFX 见 §07,痛吟见 §08

✅ 受击反应 Enemy-E 已 PIE ✅ 逐骨命中 / 数据驱动弱点倍率

06

死亡与战利品

Death & Loot

血量归零触发死亡处理(death handling):播死亡动画 · death montage 停末帧。尸体为可搜刮容器(lootable corpse,搜完揭示),可选地面散落。

动画 ANIM死亡表现 Death

单节点死亡动画整体接管、播一次停末帧,尸体保持倒地不回融 idle。布偶物理 · ragdoll 与地面散落均试过后回退,当前为稳定 death montage。)

尸体搜刮 Loot Search

搜刮揭示 · search-to-reveal(塔科夫式):靠近显交互,搜 CorpseSearchSeconds 2.5s 完成后才揭示内容,复用容器 / 网格搜刮 UI。有掉落物的尸体常驻、空尸体 60s 后回收。

掉落表 Loot Table

LootTableId 掷骰;DropScatterChance(每原型可配,默认 0)概率额外散落到地面为可拾取世界物品。

任务挂钩 Quest Hook

EncounterGroupId 的死亡 → NotifyKill 推进击杀计数 · kill-count objective,收容关卡据此聚合「清场」。

🔶 新 死亡哀嚎(death vocal):死亡时发拖长哀嚎并停止巡逻环境音(host 在 HandleDeath、客户端在 OnRep_IsDead 各发一次、去重)。详见 §08

✅ 死亡 + 尸体搜刮 Enemy-F 已 PIE ⬜ 死亡血液 / gore VFX 未做(命中血已做)

07

命中表现 · VFX

Hit Feedback — Visual

纯表现层UCSEnemyFeedbackComponent,挂敌人 · 不复制 · 专用服务器跳过)。每次有效命中由受击多播在各端触发。

🔶 优化 Feedback-B(2026-06-12):修正「血溅滞留头顶」+「表现单一」两项缺陷。

附着修正 Attachment Fix

根因:旧实现于世界命中点生成、无附着(world-space spawn, no attach)——敌人移动后血溅滞留原位,多打上半身即呈「飘于头顶」。修复:血溅骨骼附着 · bone attachmentSpawnSystemAttached + KeepWorldPosition 保留命中点)→ 自命中肢体喷出并跟随骨骼;无有效骨骼回退世界点。

视觉 VFX程序化变体 Variation

随机化(randomization):内置 NS_ShadedBlood_1..5 五套命中特效 · impact VFX,每次命中随机选取,沿命中方向喷溅。

伤害缩放 Damage-scaled

喷溅规模按伤害线性映射(轻伤小、重伤大);头部命中额外 ×1.4HeadshotBloodScale),强化弱点反馈读性。

命中闪白 Hit Flash

命中闪白 · hit flash(叠加材质 M_HitFlash_Overlay,峰值后 ~0.12s 衰减)当前默认关闭,待调优后启用。无血条(写实);伤害数字 · damage numbers 留作 CVar cs.combat.ShowDamageNumbers 后置。

🔶 Feedback-B 编译通过 · 待 PIE · 可调参数(组件属性,即时生效):变体集合 / BloodVFXScale / 伤害缩放区间 / HeadshotBloodScale

08

发声系统 · Audio

Vocalization System

新组件 UCSEnemyVocalComponent(挂敌人 · 纯表现 · 不复制 · 专用服务器跳过),数据源 ZombiesVoiceSFX(Moan ×11 / Roar ×19)。采用单声道发声(single-voice)仲裁:事件音抢占(barge-in)、环境音让位。发声骨骼附着 · bone-attached(head)随体移动,启用 3D 空间化 / 衰减 · spatialization / attenuation随机音高 · pitch randomization ±10%。

🔶 新单元 Enemy-Audio-A(2026-06-12)——补齐先前缺失的敌人发声层(巡逻 / 警觉 / 攻击 / 受击 / 死亡)。
触发 Trigger表现 Cue实现 / 声库 Implementation
巡逻 · 平静
ambient idle
稀疏低吟(6–12s/次)状态驱动环境循环 · state-driven ambient loop,本机定时器;Moan 1–6。首发随机偏移,解相关(decorrelate)同屏多体。
巡逻 · 攻击性
ambient aggressive
密集躁动喘息(2.5–5s)同循环,读复制态 IsAggressive() 切 Moan 7–11、缩短间隔。
警觉 / 发现
alert
咆哮(aggro 一次性)MulticastPlayScream(一次性 one-shot);Roar 1–8。
攻击
attack
攻击吼MulticastPlayAttackMontage;Roar 9–16。
受击
pain
短促痛吟MulticastPlayHitImpact;Roar 17–19。节流(throttle)0.6s,避免连续射击时重复触发发声。
死亡
death
拖长哀嚎host 在 HandleDeath / 客户端在 OnRep_IsDead 各一次(去重);Moan 5/10/11,并停巡逻环境音。
设计意图:发声层提供非视觉态势感知(non-visual situational awareness)——玩家凭声判断敌之有无 / 是否被发现 / 是否逼近;攻击性喘息逼近 = 撤离信号。多端一致(多播事件音 + 各端本机环境音)。

🔶 Enemy-Audio-A 编译通过 · 待 PIE(Listen Server + ≥1 客户端) · 可调参数:各声库 / 可闻距离 / 音量 / 音高区间 / 间隔区间 / 痛吟节流。

注意:警觉咆哮挂 MulticastPlayScream,仅当敌人配 AggroScreamAnimation 时发(默认 AN_Zombie_Screaming 故正常;清空动画则警觉音一并失声)。脚步音 · footstep SFX 当前未接线。

术语表

Glossary

本页采用的标准游戏 AI / 设计术语(中文 · English · 一句话定义 · 实现落点)。

中文English定义 / 落点
服务器权威Server-Authoritative真值与决策只在服务器,客户端发请求 + 演表现。
感知 / 刺激Perception / StimulusAI 接收的感官信号源;本作视觉 + 听觉两路(UE AIPerception)。
视野锥 / 视线Sight Cone (FOV) / Line-of-Sight有向可视扇区 + 遮挡检测;决定「能否看到」。
听觉半径 / 响度Hearing Range / Loudness可闻 ⇔ 距离 ≤ 半径 × 响度;响度由玩家运动态决定。
声学足迹Acoustic Footprint玩家发出的噪音总量;隐匿的核心可操纵变量。
仇恨 / 强制仇恨Aggro / Force-Aggro锁定目标进入战斗;受创即强制锁定攻击者。
有限状态机Finite State Machine (FSM)互斥状态 + 转移条件;本作 5 态。
巡逻 / 游荡Patrol / Wander无目标时在驻地锚点附近取可达随机点移动。
调查Investigate响应噪音 / 失察,谨慎趋近查看点并搜视。
最后已知位置Last Known Position (LKP)丢失视线时记录的目标位置,穷追的目的点。
穷追宽限期Pursuit Grace Period丢视后保持仇恨冲 LKP 的限时窗口。
脱战 / 牵引Leash / Tether / Reset超出牵引半径放弃追击、返回驻地;玩家得以脱战。
重新警戒Re-aggro返程中被近距离获视 / 受创而重新进入战斗。
运动 / 混合空间Locomotion / BlendSpace速度驱动的移动动画混合容器。
姿态Stance平静 / 攻击性两套移动姿态,由布尔切换。
滑步 / 足部 IKFoot Sliding / Foot IK脚步与位移不匹配的瑕疵 / 运行时锁脚修正。
激活帧 / 命中判定Active Frame / Hit Detection攻击动画中产生伤害判定的帧;经 AnimNotify 卡帧。
攻击预警Telegraph / Wind-up攻击前的可读前摇,给玩家反应窗口。
硬直 / 踉跄Hitstun / Stagger受击后的短暂行动中断 / 踉跄反应。
锁链 / 去抖Stun-lock / Debounce连续硬直锁死 / 以最小间隔节流避免之。
命中盒 / 弱点倍率Hitbox / Weak-point Multiplier逐骨命中体积 / 命中弱点的伤害倍率(爆头)。
命中反馈Hit Feedback命中的视听反馈(血溅 / 闪白 / 痛吟)。
骨骼附着Bone Attachment特效/声音挂到骨骼并随其移动(vs 世界空间)。
单声道发声 / 抢占Single-voice / Barge-in一体一嘴,事件音抢占、环境音让位。
空间化 / 衰减Spatialization / Attenuation3D 定位 + 距离衰减(远距经低通滤波变闷)。
遭遇导演Spawn / Encounter Director按预算动态生成敌人编排遭遇(未实现)。
§

状态图例 & 调参

Status Legend & Tuning
✅ 完成 已实现并通过 PIE / 用户验收 🔶 待验证 代码 + 编译通过,待 PIE / Listen Server 验 ⬜ 计划 / 缺口 设计有、代码无

调参入口 Tuning Entry Points

  • 原型数值(血量 / 移速 / 攻击 / 感知 / 巡逻参数):Data/Source/EnemyDefinitions.csvpython Scripts\GenerateGameData.py → 重开 PIE。
  • 命中表现 VFX:敌人 BP 的 FeedbackComponent 属性(变体集合 / 缩放区间 / 弱点倍率)。
  • 发声 Audio:敌人 BP 的 VocalComponent 属性(声库 / 可闻距离 / 音量 / 音高 / 间隔 / 节流)。
  • 足步匹配 / 步态:调 BlendSpace 采样点(按动作天然脚速),不在 CSV。
口径:本页为行为 + 表现的设计规格,落点忠实于 Source/CoopSurvival/AIComponents 现状,单元状态以 DevelopmentUnits.md 为准。架构 / 类对类地图见 系统设计总览 · 怪物AIUE_CodeArchitecture.md;设计源头见 SD_45(污染变异体) / SD_47(招牌遭遇)