Game_Num_Basics_And_Calc

📘 核心数值体系定义手册

适用范围: 塔防 + 肉鸽 + 刷宝 设计参考: Path of Exile (PoE), Diablo 4, Warframe


0. 🧭 数值设计综述:给非数值策划的导读

写在前面: 如果你对数学感到头疼,请先读这一章。数值不是为了刁难策划,而是为了翻译体验。

0.1 数值到底是什么?

数值是游戏体验的翻译官

数值的作用只有两个:

  1. 量化体验:把“难/简单”、“爽/憋屈”变成具体的数字。
  2. 控制节奏:决定玩家多久爽一次,多久遇到一个坎。

0.2 为什么有的游戏好像不需要数值?

像《超级马里奥》、《蔚蓝》、《只狼》这样的动作游戏,显性数值很少。

结论: 如果核心乐趣是“操作精准度”,数值体系应极简化。

0.3 为什么本游戏(塔防/肉鸽)极其依赖数值?

因为核心乐趣是 “构建 (Build) 与 验证 (Verify)”

0.4 给非数值策划的三个建议

  1. 先想体验,再算公式:不要上来就列公式。先描述画面:“我希望这个怪能抗住塔打 5 秒”。然后倒推:怪物血量 = 塔DPS * 5
  2. 关注比例 > 绝对值:攻击力是 100 还是 10000 不重要。重要的是杀怪时间 (TTK) 是多少。只要比例对,体验就对。
  3. 不要重新发明轮子:本文档中的公式(减伤公式、PRD、独立乘区)是业界几十年的标准答案。直接用,别瞎改。

1. ⚔️ 伤害计算总公式 (The Golden Damage Formula)

这是整个游戏最核心的公式。所有伤害计算必须遵循此逻辑,严禁随意添加乘区。

最终伤害 = 输出面板 (Outgoing) × 防御减伤系数 (DefMitigation)

其中 输出面板 的计算逻辑如下:

Outgoing = [基础伤害] × [增伤乘区] × [独立乘区] × [暴击乘区]

展开公式: Outgoing = [(面板攻击 × 技能倍率) + 技能固定伤] × (1 + Inc总和) × (1 + MoreA) × (1 + MoreB)... × 暴击期望

1.1 🧱 基础伤害的构成 (The Anatomy of Base Damage)

这是你提到的“白值”与“系数”的结合点。

公式: 基础伤害 = (面板攻击 × 技能系数) + 技能固定伤害

  1. 💪 面板攻击 (Panel ATK):
    • 来源:角色基础 + 武器攻击 + 装备附加点伤(Flat)
    • 定义: 代表角色“平A”一下的理论强度。
  2. 🔧 技能系数 (Skill Ratio / Motion Value):
    • 来源:技能配置表 (dmgRatio)。
    • 示例: 普攻第一段 100%,强力一击 250%,多重箭 60% x 3
    • 作用: 区分“轻攻击”和“重攻击”。
  3. 🎁 技能固定伤害 (Skill Flat):
    • 来源:技能等级成长(如:火球术造成 200% ATK + 500 点伤害)。
    • 作用: 保底机制。确保前期装备差时,技能也有基础伤害;或者用于平衡高频技能(系数低,固定值高)。

1.2 🎛️ 参数详解 (Modifiers)

  1. ➕ 增伤 (Increased / Additive) —— (A类增伤)
    • 定义: 游戏中 90% 的“增加伤害”词条都属于此类。
    • 包含: 物理伤害%、远程伤害%、全伤害%、火焰伤害%、技能伤害%、对流血敌人伤害%。
    • 算法: 所有此类词条相加,作为一个整体乘区。
  2. ✖️ 独立倍率 (More / Multiplicative) —— (B类增伤)
    • 定义: 特殊且珍贵的词条,通常描述为“额外造成”、“最终伤害”。
    • 包含: 易伤状态 (Vulnerable)、部分终极天赋。
    • 算法: 每一个此类词条都是独立乘区

1.3 📝 实战计算案例 (Scenario Examples)

假设玩家属性如下:

计算过程:

  1. 基础区间 (Base):
    • Base = (200 * 1.5) + 50 = 300 + 50 = 350
  2. 增伤区间 (Inc):
    • Inc = 1 + 0.2 + 0.3 = 1.5
  3. 最终输出 (Outgoing):
    • 350 * 1.5 * 1.2 * 2.0 = 1260

1.4 ⚖️ 暴击稳定性 (Critical Stability)

为了防止“连续不暴击导致漏怪”或“连续暴击导致瞬秒Boss”,暴击判定必须采用伪随机 (PRD)。


2. ⚡ 速度、动画与冷却 (Speed & Time)

2.1 🗡️ 攻击速度 (Attack Speed / APS)

2.2 ⏳ 冷却时间 (Cooldown / CD)


3. 🎯 射程、索敌与弹道 (Range, Acquisition & Ballistics)

3.1 🗼 静态塔逻辑 (Tower Logic)

对于不可移动的塔,索敌与攻击通常是统一的。

3.2 🏃 动态单位逻辑 (Hero/Minion Logic)

对于会移动的角色,必须拆分属性。

3.3 🚀 弹道与寿命 (Lifetime Mechanics)

A. 标准模式 (Standard)

射程主导,时间从属。 适用于 90% 的弓箭、子弹、魔法。

B. 燃料模式 (Fuel Limited)

时间主导,射程从属。 适用于 喷火器持续光束

3.4 🛰️ 特殊弹道模式 (Advanced Ballistics)

针对你需要实现的特殊子弹,定义如下参数:

A. 静止部署 / 地雷 (Stationary / Mine)

B. 多阶段追踪 (Multi-Stage Homing)


4. 🛡️ 防御属性系统 (Defense & Armor)

4.1 ⚙️ 物理防御:护甲 (Armor)

针对 物理伤害 (Physical Damage) 的减伤机制。

公式: PhysMitigation = Armor / (Armor + K)

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)

4.4 💨 闪避系统 (Dodge / Evasion)

闪避提供完全免伤。

4.5 🧐 深度分析:护甲与闪避的收益模型 (Benefit Analysis)

基于可视化分析的数学结论。

A. 护甲:减伤递减,生存线性 (Linear EHP)

护甲虽然在面板上的减伤率(Damage Reduction)随数值增加而提升变缓,但其对 有效生命值 (EHP) 的提升是 恒定线性 的。

阶段 护甲值变化 减伤率变化 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% 闪避值的价值呈指数级飞升。

阶段 闪避率 (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)

5.2 🏹 攻速溢出 (Speed Overflow)

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 其中:

B. 技能冷却时间显示的动态变化 (Tooltip CD)

在技能提示框 (Tooltip) 中,应当显示计算 CDR 后的实际时间。 TooltipCD = BaseCD * (1 - min(PlayerCDR, Cap))

C. 有效生命值 (EHP - Effective HP)

建议在防御面板的高级信息中显示,这比单纯的 HP 更有参考价值。 EHP = HP / ((1 - DamageReduction) * (1 - DodgeChance))


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 (协同修正)


8. 🎲 随机分布标准 (Random Distribution Standards)

定义: 游戏中所有涉及概率判定(闪避、暴击、触发)的底层算法标准。 目的: 消除真随机带来的体验方差(Bad Luck Protection),提供“符合直觉”的随机体验。

8.1 核心概念解析:真随机 vs 伪随机

A. 真随机 (True Random / Independent)

B. 伪随机分布 (PRD / Dependent)

C. 为什么方差很重要?

8.2 伪随机分布 (PRD) 算法实现

A. 核心公式

P(N) = C * 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)

B. 掉落幸运 (Loot Luck / Magic Find)

9.2 🛁 掉落平衡:怪海对策 (The Horde Scaling)

塔防游戏后期怪物数量是前期的几十倍。如果采用固定掉落率(如1%),后期会卡死且经济崩盘。

A. 权重预算制 (Drop Weight Budget) - 推荐方案

B. 分层掉落表 (Tiered Drop Table)

C. ❄️ 冷启动对策 (Cold Start Strategy)

为了解决蓄水池机制导致的“首杀不掉落”问题,确保玩家开局爽感。

9.3 🥺 稀有掉落保底 (Pity for Loot)

对于 传说/暗金 (Legendary) 级物品,必须有保底。


10. ♾️ 无尽模式成长模型 (Endless Mode Scaling)

定义: 类似于《吸血鬼幸存者》的“生存”模式,或 TD 中的“无尽波次”。 目标: 在有限的性能开销下(同屏单位上限),通过数值与机制制造“无限”的压迫感。

10.1 🧟 视觉欺骗:动态替补 (Dynamic Refill)

解决怪海导致的性能问题。

10.2 📈 数值成长模型 (Stat Scaling)

随时间/波次推移,怪物必须指数级变强。

A. 基础成长公式

Stat_Current = Stat_Base * (GrowthFactor ^ TimeOrWave)

B. 模型与质量膨胀 (Quality Scaling)

单纯加数值玩家看不出来,需要视觉反馈。

10.3 🏺 无尽模式掉落控制 (Loot in Endless)

引用 9.2 权重预算制。 在无尽模式中,掉落预算必须与 时间 挂钩,而不是与杀怪数挂钩。

10.4 💀 终局机制:软狂暴 (Soft Enrage)

迫使游戏在一定时间内结束(或进入下一循环),防止玩家无聊挂机。


11. 🔮 进阶属性补完 (Advanced Attributes)

为了对标《迷雾大陆》、《流放之路》等深度刷宝游戏,以下属性在构建多样性 (Build Variety) 中不可或缺。

11.1 ❄️ 控制与韧性体系 (Crowd Control & Tenacity)

A. 控制强度 (Status Potency)

B. 控制抗性/韧性 (Tenacity)

C. 状态易伤 (Damage to CC)

11.2 🛡️ 格挡与屏障体系 (Block & Barrier)

除了护甲和闪避,还有两层生存机制。

A. 格挡 (Block)

B. 屏障/护盾 (Barrier/Shield)

11.3 🎇 多重施法体系 (Multicast)

爽游核心。让屏幕布满弹幕的关键。

11.4 🩸 斩杀与吸血 (Cull & Leech)

A. 斩杀 (Cull / Execute)

B. 击中回复 (Life on Hit) vs 吸血 (Leech)

11.5 👻 召唤继承 (Minion Inheritance)

针对“兵营”或“召唤师”职业。


12. 💡 数值设计原理与避坑指南 (Design Rationale for Beginners)

本章不定义具体公式,而是解释“为什么要这么设计”,帮助新手理解数值背后的数学逻辑和体验心理学。

12.1 ⚗️ 数值膨胀的核心机制:加法、乘法与独立乘区

这是所有刷宝游戏(如 D4, PoE)的数值基石,也是控制玩家伤害不至于失控(或过弱)的关键。我们采用 “乘区理论 (Bucket Theory)” 来构建伤害体系。

A. 加法 (Additive / Inc) —— “同类稀释”

B. 乘法 (Multiplicative / More) —— “独立增益”

C. 独立乘区 (Independent Buckets) —— “维度攻击”

除了上述的 Inc 和 More,还有一些天然的独立乘区。一个成熟的 BD (Build) 会尝试在所有乘区上都拿一点分,而不是死磕一个。

乘区名称 作用原理 提升公式
基础区 技能倍率、点伤 直接增加底数
增伤区 Inc 词条 * (1 + Inc总和)
攻速区 攻击频率 * APS
暴击区 双倍伤害 * (1 + Rate * (Dmg - 1))
易伤区 敌人受到的伤害 * (1 + EnemyTaken%)
抗性区 穿透与减抗 * (1 - (Res - Pen))

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)

B. 处理压力 (Processing Check)

C. 机制压力 (Mechanic Check)

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)

这是防止玩家“一套装备用到死”的关键机制。

13.4 ⏱️ 清怪效率监控 (Time to Kill - TTK)

作为策划,你需要监控的一个核心指标是 TTK


📚 扩展阅读与数学模型 (References)

⚔️ 伤害公式 (Damage Formulas)

🛡️ 防御机制 (Defense Mechanics)

🎲 伪随机算法 (PRD)