Files
Cielonos/design/quick-specs/minion-formation-showcase-combat-2026-07-03.md
SoulliesOfficial 39b43680a9 爆更
2026-07-18 03:16:20 -04:00

180 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` 实现,命名示例:
- `DemoShowcaseFormationProfile`
- `FlankingFormationProfile`
- `BossSupportFormationProfile`
- `RangedPressureFormationProfile`
### 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`
### 5. Future Formation Examples
这些配置不要求本次实现全部完成,但 `FormationProfile` 结构必须支持:
#### FlankingFormationProfile
用于未来高难度房间。
- `allowedSectorMode = FullRing`
- `allowBackstabSectors = true`
- `backSectorWeight > 0`
- 允许 `Flanker` role
- 近战 token 可提高到 2 或 3
#### BossSupportFormationProfile
用于未来 Boss + 杂兵混合战。
- 杂兵优先避开 Boss 主攻击扇区。
- `Guard``ActiveRanged` 权重提高。
- 杂兵不抢 Boss 的镜头中心。
- Boss 战难度仍由 Boss 负责,杂兵只制造轻量干扰或补充节奏。
#### RangedPressureFormationProfile
用于远程敌人主题房间。
- `maxRangedAttackTokens` 可高于 `maxMeleeAttackTokens`
- 远程敌人优先占据前侧方或中距离区域。
- 禁止远程敌人全部分散到背后。
## Minion Feel Rules
### L1_Assault_Pawn
Demo 定位:近战爽感沙包。
- 抗打断能力应低,玩家能持续压制。
- 近战进攻时只在持有 `ActiveMelee` role 时主动攻击。
- 未持有攻击 role 时,优先作为 `ShowcaseVictim` 进入玩家前侧可见区域。
-`Medium / Heavy / Disruption` 命中时,应提供明显硬直、击退或 Feedback。
### L2_Assault_Stinger
Demo 定位:远程轻压迫目标。
- 只在持有 `ActiveRanged` role 时射击。
- 弹体压力应低于 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_Axe` Boss 战不因 Demo 杂兵阵型配置而被削弱或改变核心难度职责。
## GDD Update Required?
Yes.
建议后续更新 `design/gdd/game-concept.md` 的“敌人系统 / 杂兵”与“战斗系统”部分,加入以下原则:
> Demo 阶段杂兵战承担“爽快缓冲期”和“战斗展示”职责,而非主要难度来源。杂兵阵型由 `CoordinatorSubmodule` 的 `FormationProfile` 配置驱动;默认 Demo 阵型强调镜头友好、前场可见、低绕背压力和高受击反馈。未来高难度内容可以通过其它 `FormationProfile` 启用绕背、护卫、远程压制或 Boss 辅助职责。
本 quick spec 先作为实现依据GDD 正文可在实现方案确定后再同步。