一个编号波次是一批预定动作。在这些动作创建任何僵尸之前,普通无尽先构建波次方案:有多少波、哪些是旗帜边界,以及每波普通阵容可以花费多少点数。显示关卡数决定这套共同框架。
01 / 输入
共同 的 输入
16 个标准世界都列出了 Danger。它们提供不同的僵尸池,但普通描述构建器从共享 Danger 读取点数参数,而不是读取生成器对象自身的点数声明。11共享输入普通描述构建器读取共享 DangerRoomPropertySheet 中的点数字段。响应设置函数将服务器提供的数值写入同一个对象。生成器自身的声明属于另一组字段,不是这个构建器使用的点数输入。0x101ab68400x101d6db00
世界仍然重要:它提供基础僵尸、可选类型池,以及额外设计器。摩登世界、复兴时代、蒸汽时代和童话森林甚至声明了局部波次增量 20,但这个构建器并不读取该局部字段。公式仍以共享增量为输入。
示例设置为:起始点数 100、每波固定增量 30、随关卡增长的增量 5。波次数设置为 MinWave、MaxWave、Wave 和 Wave:每十个显示关卡数增加一波。
令 表示显示关卡数, 表示从零开始的波次索引。已存进度值为 。在示例安排中,5 的倍数会选择 Boss 文件。因此,下方的普通关卡视图覆盖 中满足 的关卡。22使用哪个关卡数?供设计器使用的读取函数返回已存进度值加一。文件名辅助函数在显示关卡数可被共享 BossInterval 整除时选择 Boss 变体,其内置值为 5。已检查的胜利后继续分支只在下一个关卡数小于 150 时加载关卡。因此交互示例提供 1–149 中的普通关卡数;这个客户端分支不能确立通用的服务器准入规则。0x101d6ca840x101d4a4e80x101c360dc
02 / 长度
一 共有 多少 波 ?
第 1–9 关的计算结果为 5 波,第 36 关为 8 波,第 49 关为 9 波。公式在第 100 关达到 15 波上限;由于该关卡数选择 Boss 文件,第 101 关才是首个达到上限的普通关卡。此后点数预算继续增长。33波次数与旗帜间隔描述构建器使用 MinWaveCount、MaxWaveCount、WaveAddEach 和 WaveAddInterval。已检查的构造函数默认值分别是 6、15、1 和 5。本指南采用收到的实际游玩波次设置 5、15、1 和 10。在得到的 5–15 波范围内,目标分组数在少于 7 波时为 1,少于 12 波时为 2,其余为 3。得到的间隔等于波次数除以目标分组数,再向上取整。0x101ab68400x101d4a7e8
03 / 预算
基础 增长 规律
对于 ,定义增量 与基础预算 :
同一关卡内的基础预算构成等差数列。增大 会改变其斜率;第一波仍然是 100 点。44基础预算共享构造函数提供 StartingPoints = 100、BasePointIncrementPerWave = 30 和 BasePointIncrementPerLevel = 5。描述构建器根据从零开始的波次索引,逐次增加合并后的每波增量。0x101ab68400x101d4a7e8
04 / 重音
旗帜 边界 与 最终 波
在 5–15 波范围内,目标分组数 决定常规旗帜间隔 :3
填充预算 为:
当从一开始计数的波号是 的倍数时,就出现一个常规旗帜边界。最后一波即使所在分组更短,也获得较大的预算。这些标记描述波次方案,还没有计算额外的旗帜僵尸。
逻辑“或”很重要:同时属于最终波和常规旗帜边界的波次,只应用一次倍率,而非两次。下一波仍沿用未加成的基础增长规律。55任一边界,一次加成波次转换流程在常规旗帜边界波或最终波上,将基础预算乘以 2.5。即使同时满足两个条件,也只应用一次倍率。乘积使用 float32 运算,再截断为整数。下一波继续沿用未加成的基础增长规律。0x101ce8a54
分步查看
- 1基础增长。 每一波在第一波的 100 点之上增加 Δ = 30 + 5L = 210 点:P(L, w) = 100 + Δw。
- 2旗帜边界。 8 波分为 2 组,因此 s = 4:波号为 4 的倍数的波次是常规旗帜边界。
- 3旗帜波。 常规旗帜边界的预算为 ⌊2.5P⌋;绿色部分是倍率在基础预算之上增加的点数。
- 4最终波。 最后一波同样获得较大的预算;若它同时是旗帜边界,也只加成一次。
05 / 下一步
这 份 计划 覆盖 什么
普通填充流程按所选种类的 Wave 消耗 。它既不是僵尸数量,也不是总生命值上限。无法花出的点数可以剩余;额外首领与独立的旗帜动作在其他环节添加。世界特有的处理还可以替换或补充生成的阵容。66预算支付什么加权填充流程按所选种类的 WavePointCost 消耗点数。额外首领在普通填充完成后追加;旗帜僵尸作为独立动作安装。Eighties 可以在后处理时替换指令,而不重新进行普通预算检查。因此预算描述的是构建中的一个阶段,不是最终僵尸数量,也不是总生命值上限。0x101ce7f080x101c79bec0x101ce4f5c
在旗帜边界或最终波,安装流程可以添加一个独立的旗帜僵尸动作。它有自己的默认间距,不从 中支付成本。世界处理与额外首领同样在不同阶段运行。波次时钟使用的生命值总量,要等这些动作创建并放置实体后才采样。
可用种类
- 木乃伊僵尸100 · 基础
- 太阳神僵尸100
- 探险家僵尸250
- 死神僵尸350
- 骆驼僵尸300
- 1木乃伊僵尸100 · 等级 41,350
- 2探险家僵尸250 · 等级 55,250
- 3死神僵尸350 · 等级 42,700
- 4木乃伊僵尸100 · 等级 54,050
- 5探险家僵尸250 · 等级 55,250
- 6死神僵尸350 · 等级 42,700
- 7探险家僵尸250 · 等级 55,250
- 8太阳神僵尸100 · 等级 41,350
- +骆驼僵尸300 · 等级 42,400
普通动作的报告生命值30,300
分步查看
- 1可用种类。 基础种类加上按索引而非权重选出的四个池条目。
- 2预算。 第 4 波是旗帜波,填充预算为 1,825 点。
- 3加权填充。 在买得起的种类中抽取 8 条指令,直到没有种类买得起;75 点无法花出。
- 4预算之外。 本关唯一一次首领尝试成功并选中这一波:首领指令追加在后,不从 B 中支付。旗帜波或最终波还会获得一个独立的旗帜僵尸动作,除非被抑制。
- 5生命值小计。 每条指令按其抽取的等级与无尽实战生命值参考计算,并按波次查询的报告方式转换;假设创建修正中性且放置成功,独立的旗帜动作不计入。
下一个问题是游戏如何选择阵容:哪些种类会被选中,它们的成本与权重又如何决定下一只僵尸?
注释
每条论断的依据:代码路径,以及追踪到它的原生地址。
- 1
共享输入
普通描述构建器读取共享 DangerRoomPropertySheet 中的点数字段。响应设置函数将服务器提供的数值写入同一个对象。生成器自身的声明属于另一组字段,不是这个构建器使用的点数输入。
0x101ab68400x101d6db00 - 2
使用哪个关卡数?
供设计器使用的读取函数返回已存进度值加一。文件名辅助函数在显示关卡数可被共享 BossInterval 整除时选择 Boss 变体,其内置值为 5。已检查的胜利后继续分支只在下一个关卡数小于 150 时加载关卡。因此交互示例提供 1–149 中的普通关卡数;这个客户端分支不能确立通用的服务器准入规则。
0x101d6ca840x101d4a4e80x101c360dc - 3
波次数与旗帜间隔
描述构建器使用 MinWaveCount、MaxWaveCount、WaveAddEach 和 WaveAddInterval。已检查的构造函数默认值分别是 6、15、1 和 5。本指南采用收到的实际游玩波次设置 5、15、1 和 10。在得到的 5–15 波范围内,目标分组数在少于 7 波时为 1,少于 12 波时为 2,其余为 3。得到的间隔等于波次数除以目标分组数,再向上取整。
0x101ab68400x101d4a7e8 - 4
基础预算
共享构造函数提供 StartingPoints = 100、BasePointIncrementPerWave = 30 和 BasePointIncrementPerLevel = 5。描述构建器根据从零开始的波次索引,逐次增加合并后的每波增量。
0x101ab68400x101d4a7e8 - 5
任一边界,一次加成
波次转换流程在常规旗帜边界波或最终波上,将基础预算乘以 2.5。即使同时满足两个条件,也只应用一次倍率。乘积使用 float32 运算,再截断为整数。下一波继续沿用未加成的基础增长规律。
0x101ce8a54 - 6
预算支付什么
加权填充流程按所选种类的 WavePointCost 消耗点数。额外首领在普通填充完成后追加;旗帜僵尸作为独立动作安装。Eighties 可以在后处理时替换指令,而不重新进行普通预算检查。因此预算描述的是构建中的一个阶段,不是最终僵尸数量,也不是总生命值上限。
0x101ce7f080x101c79bec0x101ce4f5c