返回
玩法拆解 · 代码 · Demo
塔防生成数值热门

塔防波次生成与敌人调度

用简单的波次 DSL + 调度器,控制压力曲线与变体组合。

0
塔防波次生成与敌人调度

玩法拆解

波次结构
  • 预热 → 爬坡 → 高潮 → 缓冲
  • 变体用于制造“识别与对策”
调度策略
  • 预算制:每波次按预算选敌人
  • 节拍器:按节拍分批出怪

关键代码

波次预算(简化)
ts· 15

Demo

最小可交互:预算函数生成波次怪物组合(用于解释压力曲线与变体)。

文章

文章以 Markdown/MDX 文本子集渲染(不支持自定义组件)。

塔防波次生成与敌人调度

塔防的“爽感/挫败”并不只来自数值强弱,更来自 压力曲线是否可控

  • 前期:让玩家理解“建造 → 成功防守 → 获得资源”的闭环
  • 中期:让玩家做选择(先升哪个?换什么克制?)
  • 后期:制造可预期的波峰波谷,形成“第 N 波来了”的叙事感

这篇文章给一个可落地的方案:用 波次 DSL(结构化配置)+ 调度器(scheduler) 生成怪物,并用“预算 + 节拍”把压力做成可控变量。

---

1. 波次不是“出几个怪”,而是一段节奏

推荐把一段关卡拆成节奏段:

  • 预热(warmup):少量低威胁,让玩家建造与试错
  • 爬坡(ramp):逐步增加压力(数量/速度/特殊怪)
  • 高潮(peak):一波挑战(但要可解释:玩家知道自己为什么输)
  • 缓冲(breather):奖励与调整窗口(升级/修复/选技能)

你写波次配置时,要能表达这些段落,而不是只写 wave = 20 enemies

---

2. 预算(Budget):统一管理“这波有多难”

用预算管理每波强度,核心是把“难度”映射到一个可比较的标量:

budget = base + growth(waveIndex)

每个敌人一个成本(cost):

  • 小怪:cost 1
  • 精英:cost 4
  • 重甲:cost 6
  • 飞行:cost 5(因为迫使玩家换塔/换策略)

然后这一波就是“在预算内选怪”:

  • 能轻松做出变化:同预算下换模板(多小怪 vs 少精英)
  • 能稳定控压:预算变大就是变难,不用手调每个参数

---

3. 节拍(Beat):解决“同一波里怎么出”

玩家体验的压力不只取决于总量,还取决于出怪节奏:

  • 一次性全出:瞬时压迫强,容易秒崩或秒清
  • 分批出:更像“呼吸”,玩家能在防守中微调

一个简单好用的做法:把一波拆成若干段,每段有节拍:

  • segment.durationMs
  • segment.spawnEveryMs
  • segment.packSize(每次刷几个)
  • segment.pool(可选敌人池)

调参时你可以先只调 spawnEveryMs,而不是到处改数量。

---

4. 波次 DSL(示例结构)

不要求你立刻做一门语言,用 JSON/TS 配置也可以。关键是结构化表达:

  • 这波属于哪个节奏段(warmup/ramp/peak/breather)
  • 这波预算是多少
  • 这波有哪些 segment(节拍怎么走)
  • 允许哪些变体(飞行/重甲/自爆/治疗)

写成 DSL 的好处:能做工具(可视化预览/回放/自动平衡)。

---

5. 敌人“变体”是为了制造识别与对策

塔防好看的地方在于:玩家看到怪的形态就知道“该怎么应对”。

因此变体建议围绕“逼迫策略改变”设计:

  • 飞行:绕开地面塔 → 逼迫建防空
  • 重甲:高血/减伤 → 逼迫高 DPS 或穿甲
  • 自爆:靠近就爆 → 逼迫控制/减速/集中火力
  • 治疗:拉长战线 → 逼迫点杀或打断

如果变体只是在“换皮 + 数值更高”,玩家不会觉得自己在做策略。

---

6. 难度增长:用曲线而不是拍脑袋

常见增长曲线:

  • 线性:budget = a + b * wave
  • 次方:budget = a + b * wave^p(p>1 会后期暴涨)
  • 分段:前期快爬坡,中期平台,后期再冲刺(体验更好)

工程上建议先用分段:

  • wave 1~5:增长快(教会玩家)
  • 6~15:增长慢(给策略空间)
  • 16+:短促冲刺(做高潮)

---

7. 验收清单:把“波次系统”当成可测试模块

最小验收建议:

  • [ ] 同样的 seed 与配置,波次生成结果可复现(便于调试)
  • [ ] 预算在可控范围内(不会出现“峰值波次突然翻倍”)
  • [ ] 变体出现频率可控(不会连续 5 波全是飞行)
  • [ ] 缓冲波能给到“升级窗口”(不要刷怪空档太短)

---

8. 下一步(与 Demo/工具结合)

当你把波次做成结构化 DSL 后,就可以很自然地做:

  • 预览工具:把每波预算/节拍画成图
  • 模拟器:快速跑 100 局看 P50/P90 的通关波次
  • 编辑器:策划可在不改代码的情况下调节节奏

你可能也喜欢