📘 核心数值体系定义手册
适用范围: 塔防 + 肉鸽 + 刷宝
设计参考: Path of Exile (PoE), Diablo 4, Warframe
0. 🧭 数值设计综述:给非数值策划的导读
写在前面: 如果你对数学感到头疼,请先读这一章。数值不是为了刁难策划,而是为了翻译体验。
0.1 数值到底是什么?
数值是游戏体验的翻译官。
- 策划说:“这个怪很难打。”(模糊的体验)
- 程序问:“多少血?多少攻?”
- 数值回答:“血量是玩家 DPS 的 20 倍,攻击力能打掉玩家 40% 的血。”(精确的体验)
数值的作用只有两个:
- 量化体验:把“难/简单”、“爽/憋屈”变成具体的数字。
- 控制节奏:决定玩家多久爽一次,多久遇到一个坎。
0.2 为什么有的游戏好像不需要数值?
像《超级马里奥》、《蔚蓝》、《只狼》这样的动作游戏,显性数值很少。
- 技巧主导 (Skill-Based):核心是验证玩家的操作(跳得准不准,反应快不快)。
- 二元判定:结果通常只有 0 (失败) 和 1 (成功)。要么跳过去,要么死。
- 隐形数值:其实它们也有数值(跳跃高度、无敌帧时间),但这些是手感参数,不需要玩家去“刷”。
结论: 如果核心乐趣是“操作精准度”,数值体系应极简化。
0.3 为什么本游戏(塔防/肉鸽)极其依赖数值?
因为核心乐趣是 “构建 (Build) 与 验证 (Verify)”。
- 策略颗粒度:数值提供了丰富的中间态——“打得更快了”、“暴击更多了”。
- 成长反馈:操作水平有上限(手残党),但数值成长是无限的。这是长线留存的基础。
- 多样性:通过不同的数值维度(攻速流 vs 暴击流),创造出不同的玩法。
0.4 给非数值策划的三个建议
- 先想体验,再算公式:不要上来就列公式。先描述画面:“我希望这个怪能抗住塔打 5 秒”。然后倒推:
怪物血量 = 塔DPS * 5。
- 关注比例 > 绝对值:攻击力是 100 还是 10000 不重要。重要的是杀怪时间 (TTK) 是多少。只要比例对,体验就对。
- 不要重新发明轮子:本文档中的公式(减伤公式、PRD、独立乘区)是业界几十年的标准答案。直接用,别瞎改。
这是整个游戏最核心的公式。所有伤害计算必须遵循此逻辑,严禁随意添加乘区。
最终伤害 = 输出面板 (Outgoing) × 防御减伤系数 (DefMitigation)
其中 输出面板 的计算逻辑如下:
Outgoing = [基础伤害] × [增伤乘区] × [独立乘区] × [暴击乘区]
展开公式:
Outgoing = [(面板攻击 × 技能倍率) + 技能固定伤] × (1 + Inc总和) × (1 + MoreA) × (1 + MoreB)... × 暴击期望
1.1 🧱 基础伤害的构成 (The Anatomy of Base Damage)
这是你提到的“白值”与“系数”的结合点。
公式: 基础伤害 = (面板攻击 × 技能系数) + 技能固定伤害
- 💪 面板攻击 (Panel ATK):
- 来源:
角色基础 + 武器攻击 + 装备附加点伤(Flat)。
- 定义: 代表角色“平A”一下的理论强度。
- 🔧 技能系数 (Skill Ratio / Motion Value):
- 来源:技能配置表 (
dmgRatio)。
- 示例: 普攻第一段
100%,强力一击 250%,多重箭 60% x 3。
- 作用: 区分“轻攻击”和“重攻击”。
- 🎁 技能固定伤害 (Skill Flat):
- 来源:技能等级成长(如:火球术造成
200% ATK + 500 点伤害)。
- 作用: 保底机制。确保前期装备差时,技能也有基础伤害;或者用于平衡高频技能(系数低,固定值高)。
1.2 🎛️ 参数详解 (Modifiers)
- ➕ 增伤 (Increased / Additive) —— (A类增伤)
- 定义: 游戏中 90% 的“增加伤害”词条都属于此类。
- 包含: 物理伤害%、远程伤害%、全伤害%、火焰伤害%、技能伤害%、对流血敌人伤害%。
- 算法: 所有此类词条相加,作为一个整体乘区。
- ✖️ 独立倍率 (More / Multiplicative) —— (B类增伤)
- 定义: 特殊且珍贵的词条,通常描述为“额外造成”、“最终伤害”。
- 包含: 易伤状态 (Vulnerable)、部分终极天赋。
- 算法: 每一个此类词条都是独立乘区。
1.3 📝 实战计算案例 (Scenario Examples)
假设玩家属性如下:
- 面板攻击 (ATK): 200
- 使用技能: 幻影斩 (系数 150%, 附加 50 点固定伤害)
- 词条池:
物理+20%, 近战+30%
- 独立增伤:
1.2
- 暴击:
2.0 (爆伤)
计算过程:
- 基础区间 (Base):
Base = (200 * 1.5) + 50 = 300 + 50 = 350
- 增伤区间 (Inc):
Inc = 1 + 0.2 + 0.3 = 1.5
- 最终输出 (Outgoing):
350 * 1.5 * 1.2 * 2.0 = 1260
1.4 ⚖️ 暴击稳定性 (Critical Stability)
为了防止“连续不暴击导致漏怪”或“连续暴击导致瞬秒Boss”,暴击判定必须采用伪随机 (PRD)。
- 🐢 慢速武器 (Sniper/Cannon): 强制使用 PRD。
- 🐇 极速武器 (Gatling/Laser): 可选真随机。
- 算法引用: 详见 第 8 章:随机分布标准。
2. ⚡ 速度、动画与冷却 (Speed & Time)
2.1 🗡️ 攻击速度 (Attack Speed / APS)
- 定义: 每秒攻击次数。
- 对于远程 (Ranged): 直接决定发射子弹的频率。
- 对于近战 (Melee) / 动作类:
- 问题: 太刀有前摇(Wind-up)和后摇(Back-swing)。
- 算法: 攻速直接缩放动画播放速度 (Animation Scale)。
- 公式:
AnimSpeed = BaseAnimSpeed * (1 + IncAPS%)
- 处理前摇: 在塔防/肉鸽中,通常不建议做复杂的“卡肉”或“取消后摇”。直接整体加速动画即可。如果攻速极快(如 5.0 APS),建议简化动画为残影,避免模型鬼畜。
2.2 ⏳ 冷却时间 (Cooldown / CD)
- 公式:
FinalCD = BaseCD * (1 - min(TotalCDR, Cap))
- 上限 (Cap): 建议锁定 CDR 上限为 75% (即 4倍施法频率)。
3. 🎯 射程、索敌与弹道 (Range, Acquisition & Ballistics)
3.1 🗼 静态塔逻辑 (Tower Logic)
对于不可移动的塔,索敌与攻击通常是统一的。
- 射程 (Range): 同时代表 索敌半径 和 子弹最大飞行距离。
- 逻辑: 怪物进入圈 -> 塔开火 -> 子弹理论上一定能打到(除非怪跑得比子弹快飞出了界)。
3.2 🏃 动态单位逻辑 (Hero/Minion Logic)
对于会移动的角色,必须拆分属性。
- 👀 警戒范围 (Acquisition Range): 索敌专用。
- 定义: 英雄在这个范围内发现敌人,并开始移动去追击。
- 数值: 通常较大(如 800)。
- 🤺 攻击距离 (Weapon Range / Reach): 开火专用。
- 定义: 英雄手中的刀或枪能打多远。
- 数值: 近战通常很小(如 150),远程取决于武器(如 600)。
- AI 状态机: 警戒范围发现怪 -> 移动靠近 -> 到达攻击距离 -> 停止移动并播放攻击动画。
3.3 🚀 弹道与寿命 (Lifetime Mechanics)
A. 标准模式 (Standard)
射程主导,时间从属。 适用于 90% 的弓箭、子弹、魔法。
- 配置: 策划只配
Range 和 Speed。
- 公式:
Lifetime = (Range / Speed) * Buffer
- Buffer (追击冗余): 建议取 1.3 ~ 1.5。
B. 燃料模式 (Fuel Limited)
时间主导,射程从属。 适用于 喷火器、持续光束。
- 配置:
Lifetime (燃料) 为主属性。
- 物理结果:
MaxDistance = Speed * Lifetime。
3.4 🛰️ 特殊弹道模式 (Advanced Ballistics)
针对你需要实现的特殊子弹,定义如下参数:
A. 静止部署 / 地雷 (Stationary / Mine)
- 特征: 丢在地上不动,延迟爆炸。
- 参数设定:
Speed = 0。
Lifetime = 2.0s (起爆倒计时)。
TriggerRadius = 2.0m (可选:感应半径,有怪经过提前炸)。
- 逻辑: 代码检测到 Speed <= 0 时,跳过射程计算,直接使用 Lifetime。
B. 多阶段追踪 (Multi-Stage Homing)
- 特征: 朝天发射,悬停,然后追踪。
- 参数设定:
TurnRate (转向速度): 180 - 360 度/秒。
GuidanceDelay (制导延迟): 1.0s。前 1s 仅受物理影响(向上推力),不追踪。
Acceleration (加速度): 配合使用。前 1s 速度慢,开始追踪后速度暴涨。
4. 🛡️ 防御属性系统 (Defense & Armor)
4.1 ⚙️ 物理防御:护甲 (Armor)
针对 物理伤害 (Physical Damage) 的减伤机制。
公式: PhysMitigation = Armor / (Armor + K)
- K (常数): 决定曲线陡峭程度。建议取值 3000。
4.2 📊 护甲收益表 (K = 3000)
| 护甲值 (Armor) |
减伤比例 (Reduction) |
有效生命值倍率 (EHP Mult) |
评价 |
| 0 |
0% |
1.0x |
裸奔 |
| 3,000 (K值) |
50% |
2.0x |
黄金分割点 |
| 27,000 |
90% |
10.0x |
极限堆防 |
4.3 🔥 元素防御:抗性与穿透 (Resistance & Penetration)
针对 元素伤害 (Fire/Cold/Lightning/Poison) 的减伤机制。
A. 核心公式
ResMultiplier = 1 - min((TargetRes - AttackerPen), MaxResCap)
- TargetRes (目标抗性): 敌人的面板抗性。
- AttackerPen (攻击者穿透): 极其珍贵的攻击词条,直接做减法。
- MaxResCap (抗性上限): 必须锁定为 75%。
4.4 💨 闪避系统 (Dodge / Evasion)
闪避提供完全免伤。
- 机制: 为了平滑体验,闪避判定必须使用 PRD 算法。
- 算法引用: 详见 第 8 章:随机分布标准。
4.5 🧐 深度分析:护甲与闪避的收益模型 (Benefit Analysis)
基于可视化分析的数学结论。
A. 护甲:减伤递减,生存线性 (Linear EHP)
护甲虽然在面板上的减伤率(Damage Reduction)随数值增加而提升变缓,但其对 有效生命值 (EHP) 的提升是 恒定线性 的。
- 结论: 护甲是安全的属性,不存在真正的“收益递减”。
- 数据模型 (K=3000):
| 阶段 |
护甲值变化 |
减伤率变化 |
EHP 变化 |
结论 |
| 初期 |
0 -> 3000 |
0% -> 50% |
1.0x -> 2.0x |
提升 100% 生存力 |
| 中期 |
3000 -> 6000 |
50% -> 66% |
2.0x -> 3.0x |
提升 100% 生存力 |
| 后期 |
27000 -> 30000 |
90% -> 90.9% |
10.0x -> 11.0x |
提升 100% 生存力 |
B. 闪避:生存指数级爆炸 (Exponential EHP)
闪避提供完全免伤。随着闪避率接近 100%,每 1% 闪避值的价值呈指数级飞升。
- 结论: 闪避是极其危险的属性,必须设置硬上限 (如 75%),否则数值体系会崩塌。
- 危险区域数据:
| 阶段 |
闪避率 (Dodge%) |
EHP 倍率 |
投入产出比 |
| 起步 |
0% -> 50% |
1.0x -> 2.0x |
正常 (与护甲相当) |
| 进阶 |
50% -> 75% |
2.0x -> 4.0x |
收益翻倍 |
| 红区 |
75% -> 90% |
4.0x -> 10.0x |
收益爆炸 (需仅 15% 数值) |
| 崩坏 |
90% -> 99% |
10.0x -> 100.0x |
游戏失控 (无敌) |
5. 🌊 溢出转化系统 (Overflow Mechanics)
在肉鸽游戏中,随机性可能导致玩家某些属性溢出。为了不让玩家觉得“拿到了废品”,可以设计溢出转化。
5.1 💥 暴击溢出 (Crit Overflow)
- 场景: 暴击率 > 100%。
- 方案 A (Warframe 模式): 红色暴击。
- 120% 暴击率 = 100% 造成 1倍爆伤,20% 几率造成 2倍爆伤(即暴击了再暴击)。
- 公式:
CritTier = floor(CritRate); FinalDmg = Base * (1 + CritTier * (CritDmg - 1))
- 方案 B (转化模式):
- 溢出的暴击率转化为暴击伤害。
- 公式: 每 1% 溢出暴击率 -> 增加 2% 暴击伤害。
5.2 🏹 攻速溢出 (Speed Overflow)
- 场景: 攻速 > 10.0 APS (塔防性能瓶颈)。
- 方案: 多重射击 (Multishot)。
- 当攻速达到上限时,不再减少攻击间隔,而是增加“每次射出的子弹数量”或“额外伤害倍率”。
- 好处: 保护显卡,同时保证玩家收益不封顶。
5.3 ⚖️ 设计权衡 (Pros & Cons)
| 策略 |
机制描述 |
优点 |
缺点 |
| 不做转化 |
溢出就浪费 (Hard Cap) |
强迫玩家平衡属性,避免无脑堆单一属性 |
玩家体验挫败,随机到重复词条时感觉很烂 |
| 做转化 |
溢出转其他收益 (Soft Cap) |
爽感强,玩家无脑拿词条,构建更自由 |
数值容易膨胀,难以控制后期强度 |
6. 🖥️ UI 面板显示标准 (UI Display Standards)
UI 上显示的数值必须与后端计算逻辑严格一致,但需要进行格式化以便玩家理解。
6.1 📊 属性面板对照表 (Stats Panel)
| 属性名称 (CN) |
属性名称 (EN) |
推荐显示格式 (Format) |
UI 完整示例 (Example) |
备注与来源 |
| 每秒伤害 |
DPS |
{N0} |
12,450 |
最核心指标。综合了攻击、攻速、暴击的期望值。 |
| 攻击力 |
Damage |
{N0} - {N0} |
500 - 850 |
如果最小攻击=最大攻击,则显示单值。 |
| 攻击速度 |
Atk Speed |
{N2} /秒 |
1.85 /秒 |
显示 APS (频率),不要显示攻击间隔。 |
| 暴击率 |
Crit Chance |
{P1} |
45.5% |
保留1位小数。如果溢出,可根据游戏设计显示 >100%。 |
| 暴击伤害 |
Crit Dmg |
{P0} |
150% |
通常基础是150%或200%。显示的应是总倍率。 |
| 攻击范围 |
Range |
{N0} |
650 |
对应Unity单位或像素。 |
| 冷却缩减 |
CDR |
{P0} |
25% |
建议显示缩减百分比,不要显示实际秒数(因为每个技能不同)。 |
| 护甲 |
Armor |
{N0} |
3,200 |
鼠标悬停显示具体减伤。 |
| 闪避率 |
Dodge Chance |
{P1} |
35.0% |
务必显示上限 (如: 35% / 75%)。 |
| 物理减伤 |
Phys Reduct. |
{P1} |
51.6% |
护甲换算后的实际效果。 |
| 抗性/穿透 |
Fire Res/Pen |
{P0} |
75% / 15% |
需显示抗性上限。 |
A. 面板 DPS (Damage Per Second)
这是玩家最爱看的数字,也是衡量强度的标准。
DPS = AvgDamage * FinalAPS * CritMultiplier
其中:
- AvgDamage (平均DPH):
(MinDamage + MaxDamage) / 2
- CritMultiplier (暴击期望倍率):
1 + (CritRate * (CritDamage - 1))
- 注:如果 CritRate > 100% (红色暴击),公式依然通用。
在技能提示框 (Tooltip) 中,应当显示计算 CDR 后的实际时间。
TooltipCD = BaseCD * (1 - min(PlayerCDR, Cap))
- UI 变色: 如果当前 CD 小于 BaseCD,用
<color=green>绿色</color> 显示,表示受到增益。
C. 有效生命值 (EHP - Effective HP)
建议在防御面板的高级信息中显示,这比单纯的 HP 更有参考价值。
EHP = HP / ((1 - DamageReduction) * (1 - DodgeChance))
- 示例: 1000 血,50% 减伤,50% 闪避。
EHP = 1000 / (0.5 * 0.5) = 4000。
- 意义: 闪避和护甲乘算后,极大提升了有效血量。
7. 💪 战力计算标准 (Combat Power / Gear Score)
定义: 战斗力(CP)是对单位综合强度的静态估算。
用途: 关卡门槛限制、排行榜、给玩家的直观成长反馈。
核心原则: 战斗力代表“投入成本(Budget)”而非“实际输出”。
CombatPower = sum(AttributeValue * Weight) + sum(MechanicScore)
7.2 🏋️ 属性权重参考表 (Standard Weight Table)
以 1点 攻击力 = 1 CP 为锚点。权重设计应反映该属性获取的“稀缺度”。
| 属性名称 |
单位 |
推荐权重 (Weight) |
理由推导 |
| 攻击力 (Atk) |
1 点 |
1.0 |
基准锚点。 |
| 生命值 (HP) |
1 点 |
0.2 |
通常 HP 数值是 Atk 的 5-10 倍,权重需调低以平衡。 |
| 护甲 (Armor) |
1 点 |
0.1 |
护甲通常堆得很高 (3000+),权重需极低。 |
| 暴击率 (Crit) |
1% |
15.0 |
1% 暴击率通常比 1 点攻击力难获得得多 (约等于 15攻)。 |
| 暴击伤害 (CritDmg) |
1% |
8.0 |
爆伤通常比暴击率容易堆,价值约为暴击率的一半。 |
| 攻击速度 (AtkSpd) |
1% |
12.0 |
攻速是稀有词条,直接提升 DPS,价值较高。 |
| 冷却缩减 (CDR) |
1% |
20.0 |
CDR 有上限且极难获取,权重应给高分。 |
| 增伤 (Inc Dmg) |
1% |
5.0 |
A类增伤容易稀释,权重低于独立乘区属性。 |
| 独立增伤 (More) |
1% |
25.0 |
B类增伤极其珍贵,应给予极高权重以彰显其地位。 |
| 闪避 (Dodge) |
1% |
18.0 |
闪避能指数级提升EHP,且有上限,极其稀有。 |
| 穿透 (Pen) |
1% |
10.0 |
后期提升伤害的关键手段。 |
7.3 🛠️ 机制分 (Mechanic Score)
对于无法量化的特殊机制,给予固定分值。
| 机制名称 |
固定加分 (Score) |
备注 |
| 投射物穿透 +1 |
+300 |
质变属性。 |
| 投射物数量 +1 |
+500 |
巨大的 DPS 提升。 |
| 击中回复生命 |
+200 |
生存质变。 |
| 传奇/暗金特效 |
+800 |
拥有特殊词条的传奇装备保底分。 |
7.4 📉 动态修正 (可选)
如果希望战斗力更精准(接近真实 DPS),可以引入 Synergy Bonus (协同修正):
- 如果
CritRate > 50%,则 CritDmg 的权重翻倍。
- 如果
AtkSpeed > 2.0,则 OnHit 效果的机制分翻倍。
- 注意: 这样做会增加计算复杂度,且可能导致玩家换了一件装备,明明属性变了,战力却因为阈值波动而没变,造成困惑。推荐前期只用静态权重求和。
8. 🎲 随机分布标准 (Random Distribution Standards)
定义: 游戏中所有涉及概率判定(闪避、暴击、触发)的底层算法标准。
目的: 消除真随机带来的体验方差(Bad Luck Protection),提供“符合直觉”的随机体验。
8.1 核心概念解析:真随机 vs 伪随机
A. 真随机 (True Random / Independent)
- 原理: 每次掷骰子都是独立的。之前的失败不会影响下一次成功的几率。
- 统计学特征:
- 期望 (Expectation): 长期来看符合面板概率。
- 方差 (Variance): 极高。容易出现“连续10次不暴击”或者“连续5次暴击”的聚簇现象 (Clustering)。
- 玩家体验: “这游戏针对我!”、“这 20% 暴击率是假的吧?”。在小样本下(如一场战斗打几十下),体验极不稳定。
B. 伪随机分布 (PRD / Dependent)
- 原理: 每次判定失败,下一次成功的几率会提升;一旦成功,几率重置为初始值。
- 统计学特征:
- 期望: 通过调整初始系数 C,使得长期期望严格等于面板概率。
- 方差: 极低。它强制结果均匀分布,抑制了连续失败和连续成功的可能性。
- 玩家体验: “稳定”、“手感好”。25% 的几率感觉真的就像“每4下打出1下”。
C. 为什么方差很重要?
- 方差 (Variance) 衡量的是数据偏离平均值的程度。
- 在塔防中,高方差意味着风险。如果你的主力塔攻速慢、暴击率 50%,真随机可能导致它连续 3 次不暴击,这几秒的输出空窗期足以让怪跑掉(漏怪)。
- PRD 通过降低方差,保证了输出的稳定性,让玩家可以信赖概率属性。
8.2 伪随机分布 (PRD) 算法实现
A. 核心公式
P(N) = C * N
- N: 失败次数计数器(初始=1,成功后重置为1)。
- C: 概率增量常数(查表可得)。
- 判定逻辑:
CurrentChance = C * N
- 若
Random.value < CurrentChance,判定成功,N=1。
- 否则,判定失败,
N++。
B. 常数对照表 (C-Table)
| 面板概率 (Target) |
常数 C (Constant) |
实际期望 |
| 5% |
0.0038 |
接近 1/20 |
| 10% |
0.014 |
接近 1/10 |
| 15% |
0.032 |
|
| 20% |
0.055 |
|
| 25% |
0.084 |
1/4 |
| 30% |
0.118 |
|
| 40% |
0.201 |
|
| 50% |
0.302 |
1/2 |
| 60% |
0.422 |
|
| 70% |
0.571 |
|
| 75% |
0.667 |
3/4 |
C. 通用代码实现 (C#)
public class PRDSystem {
// 注意:每个需要PRD的属性(暴击、闪避)都需要一个独立的计数器实例
private int _counter = 1;
public bool Check(float targetChance) {
float C = LookupC(targetChance);
if (Random.value < C * _counter) {
_counter = 1;
return true;
} else {
_counter++;
return false;
}
}
}
9. 🍀 幸运与掉落系统 (Luck & Loot Distribution)
目标: 解决“塔防怪海”导致的掉落溢出问题,并定义“幸运”属性的具体作用。
9.1 ✨ 幸运属性 (Luck)
现代刷宝游戏中,幸运不再是单一的“掉落率”,而是分为两个维度。
A. 幸运一击 (Lucky Hit / Proc Rate)
- 定义: 影响 “击中时触发特效” 的概率。
- 公式:
FinalChance = BaseChance * (1 + Luck%)
- 示例: 技能自带 10% 几率流血。玩家幸运+50%。最终触发率 =
10% * 1.5 = 15%。
B. 掉落幸运 (Loot Luck / Magic Find)
- 定义: 影响 “物品稀有度 (Rarity)” 的判定,通常不影响掉落数量。
- 机制: 推荐使用 双重判定 (Reroll) 机制。
- 当系统判定装备稀有度时(例如判断是否为传说),如果判定失败,根据幸运值概率,获得一次 “再摇一次” 的机会。
- 好处: 数学期望收益线性平滑,且给玩家“逆天改命”的爽感。
9.2 🛁 掉落平衡:怪海对策 (The Horde Scaling)
塔防游戏后期怪物数量是前期的几十倍。如果采用固定掉落率(如1%),后期会卡死且经济崩盘。
A. 权重预算制 (Drop Weight Budget) - 推荐方案
- 核心思想: 不是每个怪单独计算掉落,而是每个怪为“掉落池”充能。
- 逻辑:
- 定义 掉落阈值 (Threshold) = 1000 点。
- 怪物死亡时,增加蓄水池点数:
- 小怪 (Minion): +1 点。
- 精英 (Elite): +50 点。
- BOSS: +500 点。
- 当
Pool >= 1000 时,强制触发一次掉落,并 Pool -= 1000。
- 优势: 无论场上有 10 个怪还是 500 个怪,每分钟掉落数量 (Drops Per Minute) 是恒定的,完全可控。
B. 分层掉落表 (Tiered Drop Table)
- 小怪: 权重表里 90% 是金币/血瓶,只有 0.1% 是装备。
- 精英: 权重表里 50% 是装备。
- 设计目的: 减少垃圾装备渲染,保护性能。
C. ❄️ 冷启动对策 (Cold Start Strategy)
为了解决蓄水池机制导致的“首杀不掉落”问题,确保玩家开局爽感。
- 预填充 (Pre-fill): 关卡开始时,将蓄水池初始化为
Threshold * 0.8。
- 效果: 玩家只需击杀少量怪物,就能立刻触发第一次掉落。
- 首杀必掉 (First Blood Guarantee):
- 机制: 记录一个状态位
HasDroppedFirstLoot。
- 逻辑: 若为
false 且击杀的是 精英/BOSS,无视蓄水池,强制掉落并置为 true。
9.3 🥺 稀有掉落保底 (Pity for Loot)
对于 传说/暗金 (Legendary) 级物品,必须有保底。
- 不使用 PRD: 掉落频率比攻击频率低太多,查表法太复杂。
- 推荐:熵值累加 (Entropy System)
- 初始掉率
P = 1%。
- 每杀一只精英没出货,累加
P = P + 0.1%。
- 出货后,重置
P = 1%。
10. ♾️ 无尽模式成长模型 (Endless Mode Scaling)
定义: 类似于《吸血鬼幸存者》的“生存”模式,或 TD 中的“无尽波次”。
目标: 在有限的性能开销下(同屏单位上限),通过数值与机制制造“无限”的压迫感。
10.1 🧟 视觉欺骗:动态替补 (Dynamic Refill)
解决怪海导致的性能问题。
- 同屏硬上限 (Hard Cap): 设定为 200 - 300 (取决于平台)。
- 替补机制:
- 每一波的
TotalCount 可能为 5000。
- Spawn Logic: 每帧检测
CurrentActiveCount。若小于 HardCap,立即从刷怪池中生成 min(SpawnRate, HardCap - CurrentActive) 只新怪。
- 体验: 玩家杀得越快,怪补得越快,永远杀不完,但显卡压力恒定。
10.2 📈 数值成长模型 (Stat Scaling)
随时间/波次推移,怪物必须指数级变强。
A. 基础成长公式
Stat_Current = Stat_Base * (GrowthFactor ^ TimeOrWave)
- HP 成长: 推荐
Factor = 1.2 (每分钟/每波)。
- 第10分钟:
1.2 ^ 10 ≈ 6.19 倍。
- 第30分钟:
1.2 ^ 30 ≈ 237 倍。
- 攻击成长: 推荐
Factor = 1.1 (比血量慢,防止玩家被摸一下即死)。
B. 模型与质量膨胀 (Quality Scaling)
单纯加数值玩家看不出来,需要视觉反馈。
- 精英替换 (Elite Swap):
- 0-5min: 普通怪。
- 5-10min: 替换为带盾/高甲怪 (Model Scale 1.2x)。
- 10min+: 替换为小 Boss 模型 (Model Scale 1.5x)。
- 巨型单位 (Colossus):
- 当同屏怪数达到上限但压力仍不够时,生成 Colossus。
- 1 Colossus = 20 Minions 的数值强度。
- 作用: 节省 DrawCall,增加压迫感。
10.3 🏺 无尽模式掉落控制 (Loot in Endless)
引用 9.2 权重预算制。
在无尽模式中,掉落预算必须与 时间 挂钩,而不是与杀怪数挂钩。
- Target DPM (Drops Per Minute): 设定为 2.0。
- 动态权重: 随着时间推移,怪越来越难杀,单只怪提供的
DropWeight 应随 HP 成长系数提升。
10.4 💀 终局机制:软狂暴 (Soft Enrage)
迫使游戏在一定时间内结束(或进入下一循环),防止玩家无聊挂机。
- A. 速度崩坏 (Speed Break):
- 30分钟后,怪物移速每分钟 +20%。直到快过子弹,或者直接冲过防线。
- B. 抗性崩坏 (Resist Cap Break):
- 30分钟后,怪物获得
DamageReduction 层数。
- 当减伤达到 99% 时,玩家自然死亡。
- C. 死神 (The Reaper):
11. 🔮 进阶属性补完 (Advanced Attributes)
为了对标《迷雾大陆》、《流放之路》等深度刷宝游戏,以下属性在构建多样性 (Build Variety) 中不可或缺。
11.1 ❄️ 控制与韧性体系 (Crowd Control & Tenacity)
A. 控制强度 (Status Potency)
- 作用: 增加控制效果的持续时间或效果强度。
- 公式:
Duration = BaseDuration * (1 + Potency%)
- 用途: 冰法流派核心词条。
B. 控制抗性/韧性 (Tenacity)
- 作用: 减少受到的控制时间。
- 公式:
FinalDuration = Duration * (1 - min(Tenacity, 0.9))
- 注意: Boss 必须拥有高韧性,否则会被永久晕眩。
C. 状态易伤 (Damage to CC)
- 定义: 独立乘区 (More)。
- 词条示例: “对冰冻敌人伤害 +50%”、“对昏迷敌人伤害 +100%”。
- 价值: 鼓励玩家构建“控制+输出”的组合技。
11.2 🛡️ 格挡与屏障体系 (Block & Barrier)
除了护甲和闪避,还有两层生存机制。
A. 格挡 (Block)
- 机制: 既然是塔防,通常采用 “定额格挡” 或 “百分比减伤”。
- 核心数值 (双参数原则): 格挡必须由 触发率 (Block Chance) 和 减伤效果 (Block Effectiveness) 两个数值共同决定。
- 核心区别: 护甲是稳定减伤(每一下都减),格挡是概率减伤(有时候减,有时候不减)。
- 计算顺序: 判定格挡 (Block Check) -> 若成功则减伤 -> 护甲减伤 (Armor Mitigation)。
- 公式 (百分比模式 - 推荐):
- 判定:
Random < BlockChance
- 效果:
Damage = Damage * (1 - BlockAmount) (通常 BlockAmount = 50% 或 75%)。
- 公式 (定额模式 - Flat Block):
- 定义: 盾牌常驻属性,如“格挡 50 点伤害”。
- 效果:
Damage = max(0, Damage - BlockValue)。
- 用途: 针对高频低伤怪物的神技,对 Boss 大招无效。
- 定位: 独立于护甲的额外生存乘区。配合护甲可达成极高 EHP。
B. 屏障/护盾 (Barrier/Shield)
- 定义: 覆盖在 HP 之上的临时血量。
- 特性:
- 通常有衰减 (Decay) 或 持续时间。
- 护盾门控 (Shield Gate): (可选高级机制) 当护盾被打破时,溢出的伤害不会扣除 HP。防止被一击秒杀。
11.3 🎇 多重施法体系 (Multicast)
爽游核心。让屏幕布满弹幕的关键。
- 定义: 一次攻击动作,触发多次伤害判定/子弹生成。
- 区别: 攻速是加快动作;多重是增加单次动作的产出。
- 溢出算法:
MulticastChance = 150%。
- 100% 几率触发 +1 次(共2次)。
- 50% 几率再 +1 次(共3次)。
- 期望: 每次攻击平均造成 2.5 次伤害。
11.4 🩸 斩杀与吸血 (Cull & Leech)
A. 斩杀 (Cull / Execute)
- 机制: 当
TargetHP < MaxHP * CullThreshold 时,直接 Kill()。
- 默认值: 0% (不斩杀)。
- 词条: “获得 10% 斩杀效果”。
- 体验: 极大地提升清怪手感,特别是对付肉盾怪。
B. 击中回复 (Life on Hit) vs 吸血 (Leech)
- 击中回复 (LoH): 每次击中回复固定数值 (Flat)。
- 吸血 (Leech): 回复伤害的百分比。
- 塔防限制: 建议仅对英雄单位生效。如果塔也吸血,需要在塔上显示绿字,可能会导致 UI 混乱。建议塔使用“击杀回复 (Life on Kill)”。
11.5 👻 召唤继承 (Minion Inheritance)
针对“兵营”或“召唤师”职业。
- 机制: 召唤物的属性基于玩家/塔的面板。
- 继承系数:
- HP/攻击力: 通常继承 100%。
- 暴击/攻速: 通常继承 100%。
- 特殊: 某些词条专门加成召唤物(“召唤物伤害 +50%”),这是独立乘区。
12. 💡 数值设计原理与避坑指南 (Design Rationale for Beginners)
本章不定义具体公式,而是解释“为什么要这么设计”,帮助新手理解数值背后的数学逻辑和体验心理学。
12.1 ⚗️ 数值膨胀的核心机制:加法、乘法与独立乘区
这是所有刷宝游戏(如 D4, PoE)的数值基石,也是控制玩家伤害不至于失控(或过弱)的关键。我们采用 “乘区理论 (Bucket Theory)” 来构建伤害体系。
A. 加法 (Additive / Inc) —— “同类稀释”
- 定义: 绝大多数词条都属于这一类(如:全伤害+、物理伤害+、近战伤害+)。
- 机制: 所有的 “Inc” 词条会被扔进同一个“大桶”里做加法,然后再参与最终乘算。
- 稀释效应 (Dilution):
- 假设你已有 +400% 增伤。
- 再获得一个 “+50% 物理伤害” 词条。
- 实际提升:
(1 + 4.5) / (1 + 4.0) = 5.5 / 5.0 = 1.1 (即 10% 提升)。
- 结论: 同样数值的词条,你拥有的越多,新获得的那个就越不值钱。
- 设计目的: 作为数值的基石。保证玩家前期有明显的成长,但防止后期数值指数级爆炸。
B. 乘法 (Multiplicative / More) —— “独立增益”
- 定义: 描述中通常带有“额外”、“总伤害”字样的稀有词条。
- 机制: 每一个 More 词条都是一个独立的桶。它直接乘在最终伤害上。
- 多源叠加规则: 不同来源的 More 增伤是分开乘算的。
- 公式:
TotalMore = (1 + MoreA) * (1 + MoreB) * (1 + MoreC)
- 示例: 天赋20% More,装备30% More ->
1.2 * 1.3 = 1.56 (56% 提升),而非 50%。
- 注意: 同一来源的堆叠(如: 3层狂暴状态,每层10% More)通常是先加后乘
(1 + 3*10%),具体视游戏机制而定。
- 无稀释:
- 无论你现在有多少增伤,获得一个 “额外造成 20% 伤害” 的词条。
- 实际提升: 实打实的 20%。
- 设计目的: 作为诱饵。引导玩家去追求特定的构建(Build),因为它是质变属性。
C. 独立乘区 (Independent Buckets) —— “维度攻击”
除了上述的 Inc 和 More,还有一些天然的独立乘区。一个成熟的 BD (Build) 会尝试在所有乘区上都拿一点分,而不是死磕一个。
| 乘区名称 |
作用原理 |
提升公式 |
| 基础区 |
技能倍率、点伤 |
直接增加底数 |
| 增伤区 |
Inc 词条 |
* (1 + Inc总和) |
| 攻速区 |
攻击频率 |
* APS |
| 暴击区 |
双倍伤害 |
* (1 + Rate * (Dmg - 1)) |
| 易伤区 |
敌人受到的伤害 |
* (1 + EnemyTaken%) |
| 抗性区 |
穿透与减抗 |
* (1 - (Res - Pen)) |
- 黄金法则:
2 * 2 * 2 = 8,而 4 * 1 * 1 = 4。
- 指导意义: 当玩家觉得“伤害刮痧”时,不要让他再去堆攻击力了(稀释严重),引导他去堆攻速、暴击或穿透(开辟新乘区)。
12.2 🛡️ 为什么防御公式要用除法 (百分比减伤)?
A: 减法公式会导致“不破防”或“被秒杀”。除法公式保证 EHP 线性增长。
12.3 🎲 为什么要用伪随机 (PRD)?
A: 消除“脸黑”带来的极差体验(如连续不暴击导致漏怪)。
12.4 🛁 为什么要用蓄水池做掉落控制?
A: 为了保证 DPM (Drops Per Minute) 恒定,解决怪海导致的掉落溢出。
12.5 ⚡ 为什么攻速 (APS) 不能定义为攻击间隔?
A: 攻击间隔减少带来的收益是指数爆炸的。APS 保证线性收益。
13. 🚧 关卡难度增长控制 (Level Difficulty Scaling)
目标: 确保游戏从中世纪冷兵器(前期)平滑过渡到神仙打架(后期),避免玩家感到无聊或挫败。
13.1 📐 难度三维模型 (The Difficulty Trinity)
不要只加血量。难度是由三个维度构成的:
A. 数值压力 (Stat Check)
- 定义: 玩家必须达到多少 DPS 才能杀怪,必须有多少 EHP 才能活着。
- 控制手段: 怪物 HP、攻击力、护甲。
- 失败反馈: “我打不动怪” 或 “怪摸我一下就死”。
B. 处理压力 (Processing Check)
- 定义: 玩家单位时间内需要处理的信息量和操作量。
- 控制手段: 怪物数量 (Density)、移动速度 (Speed)、技能频率。
- 失败反馈: “怪太多了漏过去了” 或 “我手忙脚乱”。
C. 机制压力 (Mechanic Check)
- 定义: 强迫玩家更换策略或装备的特殊门槛。
- 控制手段: 元素抗性 (Resist)、特殊词条 (如:免疫物理、远程减伤)。
- 失败反馈: “我的火法没用了,得换物理塔”。
13.2 📈 核心属性增长曲线 (Attribute Scaling Curves)
假设 L 为关卡等级 (Level)。
| 属性 |
推荐增长公式 |
说明 |
| 怪物 HP |
Base * 1.2 ^ L |
指数增长,核心属性。 |
| 怪物攻击 |
Base * 1.1 ^ L |
缓慢指数,防止被秒。 |
| 怪物护甲 |
StepFunction(L) |
阶梯式增长。每 5-10 关上一个台阶。 |
| 怪物移速 |
Base * (1 + 0.02 * L) |
线性微增。必须有硬上限(如玩家移速的 1.5 倍),否则无法风筝/塔无法命中。 |
| 怪物数量 |
min(Cap, Base + 2 * L) |
对数增长/封顶。受限于显卡性能,数量不能无限涨,后期靠质量(精英怪)取胜。 |
13.3 🧱 抗性墙设计 (Resistance Wall)
这是防止玩家“一套装备用到死”的关键机制。
- 机制: 在特定的关卡节点(如第 10、20、30 关),大幅提升怪物的 元素抗性。
- 目的:
- 第 1-9 关:0% 抗性。玩家随便穿什么装备都能过。
- 第 10 关:50% 火抗。玩家原本 1000 的火伤变成了 500。
- 玩家对策: 被迫去刷带有 “火焰穿透” 或 “减少敌人抗性” 词条的装备,或者转修冰系。
- 体验: 这是一种“软强制”的装备更新驱动力,比单纯加 HP 更有效。
13.4 ⏱️ 清怪效率监控 (Time to Kill - TTK)
作为策划,你需要监控的一个核心指标是 TTK。
- 小怪 TTK: 应该保持在 0.5秒 - 2秒 之间。
- < 0.5s: 割草感强,但容易无聊。
-
3s: 玩家会觉得塔很弱,产生挫败感。
- 精英 TTK: 应该保持在 5秒 - 15秒。
- 调整方法:
- 如果玩家 DPS 膨胀过快(TTK < 0.1s),通过 怪物护甲/HP倍率 压回来。
- 如果玩家打不动(TTK > 20s),检查是否投放了足够的 独立增伤 (More) 词条。
📚 扩展阅读与数学模型 (References)
🛡️ 防御机制 (Defense Mechanics)
🎲 伪随机算法 (PRD)