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