摘要:本文聚焦「核心数值体系定义手册」,梳理核心概念、关键方法与落地实践。适用范围: 塔防 + 肉鸽 + 刷宝 设计参考: 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、独立乘区)是业界几十年的标准答案。直接用,别瞎改。
1. ⚔️ 伤害计算总公式 (The Golden Damage Formula)
这是整个游戏最核心的公式。所有伤害计算必须遵循此逻辑,严禁随意添加乘区。 最终伤害 = 输出面板 (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% | 需显示抗性上限。 |
6.2 📐 详细计算公式 (UI Formulas)
A. 面板 DPS (Damage Per Second)
这是玩家最爱看的数字,也是衡量强度的标准。DPS = AvgDamage * FinalAPS * CritMultiplier
其中:
- AvgDamage (平均 DPH):
(MinDamage + MaxDamage) / 2 - CritMultiplier (暴击期望倍率):
1 + (CritRate * (CritDamage - 1))- 注:如果 CritRate > 100% (红色暴击),公式依然通用。
B. 技能冷却时间显示的动态变化 (Tooltip CD)
在技能提示框 (Tooltip) 中,应当显示计算 CDR 后的实际时间。TooltipCD = BaseCD * (1 - min(PlayerCDR, Cap))
- UI 变色: 如果当前 CD 小于 BaseCD,用 绿色 显示,表示受到增益。
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)”而非“实际输出”。7.1 🔢 计算公式 (CP Formula)
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#)
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倍。
- 第 10 分钟:
- 攻击成长: 推荐
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% 时,玩家自然死亡。
- 30 分钟后,怪物获得
- 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)
⚔️ 伤害公式 (Damage Formulas)
- Path of Exile Wiki: Damage Calculation
- 必读。深入理解
Base * (1+Inc) * More * Crit这一黄金公式的来源。
- 必读。深入理解
- Warframe Damage 2.0
- 学习如何通过“元素克制表”构建复杂的伤害体系(如腐蚀剥甲、病毒增伤)。
🛡️ 防御机制 (Defense Mechanics)
- Diablo 3 Armor Formula
- 解释了
Armor / (Armor + K)这种非线性收益公式如何产生线性的 EHP (有效生命值) 增长。
- 解释了
- League of Legends Armor & Magic Resist
- 同样的公式在 MOBA 游戏中的应用。
🎲 伪随机算法 (PRD)
- Pseudo-Random Distribution (Dota 2 Wiki)
- 详细列出了从 5% 到 95% 暴击率对应的 C 值常数表。直接照抄即可。
- True Random vs Pseudo Random (Video)
- 直观演示了为什么真随机在游戏中会让玩家感觉“体验很差”。