Files
spellforge/docs/mechanics/combat_mechanics_extensions_v2.md
T
2026-07-20 10:56:52 +08:00

103 lines
5.5 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.
# 战斗机制进阶扩展 (Advanced Combat Mechanics Extensions - Part 2)
为了构建一个具备极高重玩价值(Replayability)的 Roguelike 系统,除了基础的伤害和弹射,我们还可以引入物理、环境、触发链等更多维度的交互。
以下是可供扩展的 5 个额外维度:
## 1. 物理与运动学维度 (Physics & Kinematics Dimensions)【P2/P3 扩展,非当前实现目标】
> ⚠️ **实现状态说明**:本节所有维度均为**设计扩展提案(P2/P3)**,
> 当前 BulletManager SoA、ProjectileDef、EnemyManager SoA **均无对应字段**。
> 实现时需要:
> - `ProjectileDef` 增加 `knockback_force: float`(冷数据,存入 `_bullet_contexts`
> - `EnemyManager` SoA 增加 `mass: float`(或冷数据中存储),`ENEMY_STRIDE` 相应扩展
> - 否则引用本节代码片段将在运行时找不到字段
让投射物不仅仅是”飞行的数字”,而是具有物理实体的对象。
### 1.1 冲量与质量 (Impulse & Mass)【P3】
* **Knockback Force (击退力)**: 子弹应携带“击退值”。
* **Entity Mass (实体质量)**: 怪物应有“质量”属性。
* **Resistance (抗性)**: 小蝙蝠被打中会飞很远,而石头人哪怕受到高伤也纹丝不动。
* **维度**: `KnockbackVector = (BulletVelocity.normalize() * KnockbackForce) / TargetMass`
### 1.2 轨迹调制 (Trajectory Modulation)
除了直线飞行,子弹的运动模式可以参数化:
* **Acceleration (加速度)**: 子弹可以越飞越快(狙击),或越飞越慢(能量球停留)。
* **Curvature (曲率/归航)**: `HomingStrength` (归航强度) 和 `TurnRate` (原本直飞,靠近敌人时转弯)。
* **Oscillation (震荡)**: 正弦波飞行(Sine Wave),用于扩大打击面。
## 2. 环境场与交互维度 (Environment & Interaction Dimensions)
战斗不仅仅发生在“子弹”和“敌人”之间,还包括“环境”。
### 2.1 地表效果 (Surface/Ground Effects)
* **Persistence (残留)**: 毒瓶炸开后在地面留下 `PoisonPool`,持续 5 秒。
* **Conductivity (传导性)**:
* 水面 + 闪电 = 全屏感电。
* 油面 + 火焰 = 不灭之火(延长燃烧时间)。
* 冰面 + 物理撞击 = 滑行距离增加。
### 2.2 障碍物交互 (Obstacle Interaction)
* **Ricochet (跳弹)**: 击中墙壁时,根据入射角计算反射角。
* **Phasing (相位)**: 是否能穿墙(穿墙子弹通常伤害较低或无法穿透敌人)。
* **Embedding (嵌入)**: 箭矢击中墙壁后保留实体,可被玩家回收或作为后续法术的引雷针。
## 3. 触发器与事件链系统 (Trigger System / Proc Chains)
参考《Risk of Rain 2》或《Path of Exile》的 ProcProcess on Cast/Hit)机制。
### 3.1 触发钩子 (Event Hooks)
不仅仅是“命中”,需要更细的粒度:
* **OnHit**: 命中敌人时。
* **OnCrit**: 暴击时(如:暴击时召唤落雷)。
* **OnKill**: 击杀时(如:敌人产生尸爆)。
* **OnExpire**: 子弹自然销毁/达到最大射程时(如:榴弹并在尽头爆炸)。
* **OnHurt**: 玩家受击时(如:受击释放尖刺)。
### 3.2 触发系数 (Proc Coefficient)
为了平衡高频攻击(如加特林)和低频攻击(如狙击枪):
* **ProcRate**: 这是一个 0.0 - 1.0 的系数。
* *例子*: "攻击有 10% 概率触发导弹"。
* 狙击枪 (Proc: 1.0) -> 每次判定都是 10%。
* 加特林 (Proc: 0.1) -> 每次判定实际概率是 10% * 0.1 = 1%。
* 防止高攻速武器过于变态地触发特效。
## 4. 属性转换与快照机制 (Conversion & Snapshotting)
处理复杂的数值计算规则。
### 4.1 伤害转换 (Damage Conversion)
* **Shift**: "将 50% 的物理伤害转化为火焰伤害"。
* **Gain**: "获得等同于物理伤害 20% 的额外混沌伤害"。
* **Priority (优先级)**: 转换通常有固定顺序(物理 -> 元素 -> 混沌),防止循环转换。
### 4.2 快照机制 (Snapshotting)
* **Dynamic vs Static**:
* 如果玩家发射了一个持续 10 秒的火龙卷,然后在第 5 秒喝了药水(增加智力)。
* **Snapshot**: 火龙卷伤害不变(取发射瞬间的数值)。这通常更符合直觉且性能更好。
* **Dynamic**: 火龙卷伤害随之增加。这就要求子弹必须持有 Player 引用并在每帧重新计算属性。
## 5. 控制与免疫维度 (Crowd Control & Diminishing Returns)
并不是所有的“负面效果”都是伤害(DoT)。
### 5.1 硬控制与软控制 (Hard/Soft CC)
* **Soft CC**: 减速 (Slow)、致盲 (Blind - 降低命中率/索敌范围)。
* **Hard CC**: 眩晕 (Stun - 停止行动)、冻结 (Freeze - 停止动画)、恐惧 (Fear - 反向逃跑)、魅惑 (Charm - 攻击友军)。
### 5.2 收益递减 (Diminishing Returns - DR)
为了防止 Boss 被永久晕在原地:
* **DR Meter**: 怪物有一个隐藏的抗性条。
* **机制**: 第一次眩晕 2秒 -> 第二次 1秒 -> 第三次 免疫。
* **Recovery**: 抗性条随时间慢慢恢复。
## 6. 斩杀与处决 (Culling & Execution)
* **Threshold Execution**: "立即消灭生命值低于 10% 的非 Boss 敌人"。
* **Low/High Health Scaling**:
* "对生命值 > 90% 的敌人必定暴击" (First Strike)。
* "敌人生命值每降低 1%,造成额外 1% 伤害" (Executioner)。
通过引入这些维度,可以将简单的“数值比拼”转化为策略构筑游戏。例如构建一个“击退流”玩法:利用高击退把敌人推到涂满油的墙上,配合火属性子弹造成环境爆炸。