9.4 KiB
Quick Design Spec: Minion Formation Showcase Combat
Type: Addition
System: Combat Coordinator / Minion Encounter AI
GDD Reference: design/gdd/game-concept.md
Date: 2026-07-03
Change Summary
将当前 CoordinatorSubmodule 的单一环绕式站位,扩展为可配置的 FormationProfile 阵型配置系统。Demo 阶段默认使用“前场展示阵型”,让杂兵战服务于清晰索敌、爽快压制和打击感展示;未来高难度内容可以切换到绕背、护卫、远程压制、Boss 辅助等其它阵型。
Motivation
当前杂兵战最大问题不是难度不足,而是 CoordinatorSubmodule 会倾向于让多个杂兵从玩家前后左右形成包围。四个杂兵同时分布在玩家周围时,会造成以下体验问题:
- 玩家索敌与镜头阅读成本上升。
- 背后敌人会打断展示节奏,使杂兵战从“爽快缓冲期”变成不稳定的视野压力。
- Demo 阶段希望强调玩家压制敌人、连段命中、打断反馈和武器表现,而不是让杂兵承担主要难度。
因此,杂兵战的默认目标应调整为:镜头友好、压制爽快、低伤害但有节奏的 Showcase Combat。
Design Delta
Current GDD says (design/gdd/game-concept.md, “敌人系统 / 杂兵”):
当前杂兵战斗设计存在较多缺陷,是优先改进方向。
This spec changes that to:
杂兵战在 Demo 阶段不是主要难度来源,而是 Boss 战之间的节奏缓冲和战斗展示空间。CoordinatorSubmodule 不应固定追求全方位包围,而应根据当前 FormationProfile 决定站位扇区、攻击令牌、敌人职责和镜头友好程度。默认 Demo 配置必须避免敌人主动绕背,使大多数敌人保持在玩家和摄像机容易观察的前场区域。
New Rules / Values
1. FormationProfile
新增可配置阵型概念:FormationProfile。
FormationProfile 是 CoordinatorSubmodule 的运行时配置来源,用于决定敌人如何围绕玩家站位、何时进攻、哪些敌人等待、哪些敌人施加远程压力。
建议用 ScriptableObject 实现,命名示例:
DemoShowcaseFormationProfileFlankingFormationProfileBossSupportFormationProfileRangedPressureFormationProfile
2. FormationProfile 参数
| Knob | Default: DemoShowcase | Range / Options | Category | Rationale |
|---|---|---|---|---|
allowedSectorMode |
CameraForwardArc |
CameraForwardArc, PlayerForwardArc, FullRing, CustomWeightedSectors |
readability | Demo 默认只允许前场或镜头友好扇区 |
frontArcDegrees |
160 |
90-220 |
readability | 控制敌人可站在玩家/镜头前方的角度范围 |
allowBackstabSectors |
false |
bool | difficulty | Demo 禁止绕背;高难度可开启 |
maxMeleeAttackTokens |
1 |
1-4 |
pressure | 同时只有一个近战杂兵真正进攻 |
maxRangedAttackTokens |
1 |
0-3 |
pressure | 允许轻量远程压力,但不形成弹幕压迫 |
maxActiveThreats |
2 |
1-5 |
pacing | 同时威胁源数量上限 |
idleRoleWhenNoToken |
ShowcaseVictim |
ShowcaseVictim, Reposition, Taunt, Guard, HoldDistance |
flow | 无令牌敌人不绕背偷袭,而是服务展示节奏 |
preferLockTargetVicinity |
true |
bool | camera | 玩家锁定目标时,其它敌人优先分布在锁定目标左右可见区域 |
sectorReassignmentCooldown |
2.0s |
0.5-5.0s |
stability | 防止敌人因玩家小幅移动频繁换位 |
backSectorWeight |
0 |
0-1 |
difficulty | Demo 为 0;高难度可提升 |
sideSectorWeight |
0.7 |
0-1 |
readability | 允许侧前方敌人参与,但避免正背后 |
frontSectorWeight |
1.0 |
0-1 |
readability | 正前方/侧前方优先 |
3. Enemy Tactical Roles
CoordinatorSubmodule 应为敌人分配临时战术职责,而不是只分配扇区。
| Role | Behavior | Demo Usage |
|---|---|---|
ActiveMelee |
持有 MeleeAttack token,允许主动近战攻击 |
同时最多 1 个 |
ActiveRanged |
持有 RangedAttack token,允许远程射击或轻量压迫 |
同时最多 1 个 |
ShowcaseVictim |
靠近玩家前场,抗打断低,容易被连段压制 | Demo 常用 |
Reposition |
移动到可见扇区,不攻击 | 用于填补站位 |
Taunt |
仅播放待机/威吓/轻微移动,不制造威胁 | 若已有动画则使用;否则等同 Reposition |
Guard |
保护指定目标或区域 | 未来 Boss 辅助配置使用 |
Flanker |
允许绕背或侧后方攻击 | Demo 默认禁用,高难度配置使用 |
4. DemoShowcaseFormationProfile
Demo 阶段默认配置:
- 阵型目标:玩家爽快压制,镜头清晰,低受伤率。
- 允许扇区:镜头前方或玩家前方约
160°。 - 禁止绕背:
allowBackstabSectors = false。 - 近战攻击令牌:
maxMeleeAttackTokens = 1。 - 远程攻击令牌:
maxRangedAttackTokens = 1。 - 同时威胁源:
maxActiveThreats = 2。 - 无令牌敌人:进入
ShowcaseVictim或Reposition,不主动从背后攻击。 - 4 杂兵场景推荐分工:
- 1 个
ActiveMelee - 1 个
ActiveRanged - 1 个
ShowcaseVictim - 1 个
Reposition
- 1 个
5. Future Formation Examples
这些配置不要求本次实现全部完成,但 FormationProfile 结构必须支持:
FlankingFormationProfile
用于未来高难度房间。
allowedSectorMode = FullRingallowBackstabSectors = truebackSectorWeight > 0- 允许
Flankerrole - 近战 token 可提高到 2 或 3
BossSupportFormationProfile
用于未来 Boss + 杂兵混合战。
- 杂兵优先避开 Boss 主攻击扇区。
Guard和ActiveRanged权重提高。- 杂兵不抢 Boss 的镜头中心。
- Boss 战难度仍由 Boss 负责,杂兵只制造轻量干扰或补充节奏。
RangedPressureFormationProfile
用于远程敌人主题房间。
maxRangedAttackTokens可高于maxMeleeAttackTokens。- 远程敌人优先占据前侧方或中距离区域。
- 禁止远程敌人全部分散到背后。
Minion Feel Rules
L1_Assault_Pawn
Demo 定位:近战爽感沙包。
- 抗打断能力应低,玩家能持续压制。
- 近战进攻时只在持有
ActiveMeleerole 时主动攻击。 - 未持有攻击 role 时,优先作为
ShowcaseVictim进入玩家前侧可见区域。 - 被
Medium / Heavy / Disruption命中时,应提供明显硬直、击退或 Feedback。
L2_Assault_Stinger
Demo 定位:远程轻压迫目标。
- 只在持有
ActiveRangedrole 时射击。 - 弹体压力应低于 Boss 战,不应形成高密度弹幕。
- 弹体被
Perfect Dodge / Perfect Block / Reflection处理时,应给予玩家明显收益,例如Passion、能量或反击窗口。 - 站位应优先保持在前侧方或中距离,不应默认绕到玩家背后。
Affected Systems
| System | Impact | Action Required |
|---|---|---|
CoordinatorSubmodule |
从固定扇区/令牌逻辑扩展为 profile-driven 阵型协调 | 添加 FormationProfile 数据入口、扇区权重、role 分配 |
| Behavior Designer AI | 行为树需要读取当前 tactical role / token 状态 | 增加或调整条件节点,避免无令牌敌人强行攻击 |
L1_Assault_Pawn |
默认承担近战爽感沙包职责 | 按 role 控制主动攻击、防御、靠近行为 |
L2_Assault_Stinger |
默认承担远程轻压迫职责 | 按 role 控制射击频率与站位 |
PassionSystem |
可用于强化完美处理杂兵攻击的奖励 | 视实现决定是否增加额外奖励钩子 |
SLSUtilities/Feedback |
用于放大杂兵被打断/被压制反馈 | 优先复用现有 Feedback,不新增 VFX |
| Encounter / Wave 配置 | 不同房间可指定不同阵型配置 | 后续为房间或波次挂载 profile |
Acceptance Criteria
CoordinatorSubmodule不再只使用单一固定环绕逻辑,至少支持一个可配置FormationProfile输入。- Demo 默认配置下,4 个杂兵不会主动形成玩家前后左右完整包围。
- Demo 默认配置下,玩家背后扇区不会被普通杂兵优先占用。
- Demo 默认配置下,同时主动近战攻击的杂兵数量不超过 1。
- Demo 默认配置下,同时主动远程攻击的杂兵数量不超过 1。
- 无攻击 token 的杂兵不会继续强行攻击,而是进入
ShowcaseVictim、Reposition或等价低威胁行为。 L1_Assault_Pawn在杂兵战中更容易被玩家压制和打断,不承担主要难度压力。L2_Assault_Stinger的远程攻击提供轻量节奏压力,但不破坏 Demo 的爽快压制体验。- 配置结构允许未来启用绕背阵型,不需要重写
CoordinatorSubmodule的核心算法。 - No regression:
C1_AxeBoss 战不因 Demo 杂兵阵型配置而被削弱或改变核心难度职责。
GDD Update Required?
Yes.
建议后续更新 design/gdd/game-concept.md 的“敌人系统 / 杂兵”与“战斗系统”部分,加入以下原则:
Demo 阶段杂兵战承担“爽快缓冲期”和“战斗展示”职责,而非主要难度来源。杂兵阵型由
CoordinatorSubmodule的FormationProfile配置驱动;默认 Demo 阵型强调镜头友好、前场可见、低绕背压力和高受击反馈。未来高难度内容可以通过其它FormationProfile启用绕背、护卫、远程压制或 Boss 辅助职责。
本 quick spec 先作为实现依据;GDD 正文可在实现方案确定后再同步。