103 lines
5.5 KiB
Markdown
103 lines
5.5 KiB
Markdown
# 战斗机制进阶扩展 (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》的 Proc(Process 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)。
|
||
|
||
通过引入这些维度,可以将简单的“数值比拼”转化为策略构筑游戏。例如构建一个“击退流”玩法:利用高击退把敌人推到涂满油的墙上,配合火属性子弹造成环境爆炸。
|