游戏开发必知:战斗数值缩写对照表与易混淆点全解析
1. 为什么游戏开发者需要一份战斗数值缩写对照表1.1 从“打开策划表一脸懵”说起——词组背后的开发语言我见过太多新人第一天进项目组 leader 甩过来一份战斗数值配置表满屏的ATK、DEF、CRIT、CDR、HITBOX整个人直接傻掉。这不是英语不好就能解决的问题因为很多缩写压根不是标准英语而是行业里一代代沉淀下来的“黑话”。比如ATK是 Attack 的缩写好理解但CDR到底是 Cooldown Reduction 还是 Critical Damage Rate不同项目里能给你整出两个完全相反的意思。这份博文就是要把游戏开发中常见的战斗数值英文缩写一次讲清楚按用途分类、按易混淆程度拆解顺带讲清楚这些缩写背后的设计逻辑。不管你是刚入行的策划、想转行做游戏开发的程序员还是自己做独立游戏的全栈开发者这份对照表都能帮你少走不少弯路。1.2 按用途给缩写分类属性、公式、系统、运营一开始我也试图把所有缩写记在一个 Excel 里后来发现根本记不住。真正管用的方式是理解这些缩写的“归类逻辑”。战斗数值相关的缩写大致可以分为四类角色属性类、战斗公式类、战斗机制类、系统运营类。角色属性类说的是“角色本身有什么”比如力量、敏捷、智力战斗公式类说的是“伤害怎么算出来的”比如攻击力、防御力、暴击率、穿透值战斗机制类说的是“战斗过程中发生了什么”比如持续伤害、控制效果、冷却时间系统运营类则是从更高维度描述游戏系统的运行逻辑比如 PvE、PvP、掉落率、经验值这些。把缩写放进这个框架里你就不需要死记硬背了——看到一个陌生缩写先猜它属于哪一类再结合上下文去推断具体含义准确率能到八成以上。接下来我就按这个分类把核心缩写一个一个过一遍。2. 核心缩写对照表从角色属性到战斗公式2.1 角色基础属性建模师和程序员的共识暗号角色基础属性是所有数值系统的底层地基。这类缩写通常来自经典 RPG 六维属性虽然很多手游不会全部实装但你迟早会在某个系统或者某段代码里跟它们撞个满怀。缩写英文全称中文含义典型用途STRStrength力量近战物理攻击加成、负重力AGIAgility敏捷攻速、闪避、行动顺序INTIntelligence智力法术攻击加成、蓝量上限VITVitality活力/体质生命值上限、物理防御DEXDexterity灵巧命中、暴击、远程攻击加成LUKLuck幸运暴击率、掉落率、随机事件CONConstitution体质同VIT部分项目用CON不用VIT看团队习惯这里有个细节需要提醒VIT和CON在不同项目里指的是同一个东西纯粹是团队习惯问题。但STR和DEX在个别项目里会被混用比如有些动作游戏会把“力量型武器加成”写成DEX scaling实际上说的是“灵巧加成”。遇到这种情况你在读别人代码之前最好先看一眼他们的属性枚举定义别凭直觉猜。2.2 战斗直接属性面板里那排数字的英文真身直接战斗属性是每个游戏面板上都有的那排数字攻击力、防御力、生命值。这类缩写的坑不在“知道英文全称”而在于“英文全称可能和你想的不一样”。缩写英文全称中文含义易混淆点HPHealth Points / Hit Points生命值别写成 Health Power口语可以代码注释会被笑MPMagic Points魔法值部分项目改用 Energy / ManaSPSkill Points / Stamina Points技能点/耐力缩写相同但含义随项目变化ATKAttack攻击力指面板总攻击值不是单次伤害DEFDefense防御力物理防御对魔法无效见MDEFMATKMagic Attack魔法攻击力也有项目写成 SP.ATK 或 MAGMDEFMagic Defense魔法防御力部分游戏里法术减伤走另一套公式ASPDAttack Speed攻击速度注意区分“攻击频率”和“出手动画速度”CSPDCast Speed施法速度同类缩写还有 CAST_TIME 减缩一个很常见的误区是把ATK当成“一次攻击打出的伤害值”实际上 ATK 几乎总是“角色的面板攻击力数值”真正的单次伤害往往要经过公式计算也就是DAMAGE ATK * 技能倍率 / DEF之类的。理解了这层区别你看数值表的时候就不会拿着攻击力直接猜伤害了。2.3 进阶战斗属性决定战斗手感的隐藏变量进阶属性是数值策划调平衡的重灾区也是玩家最敏感的部分。这类缩写多到爆炸我挑最核心的十几个说透。暴击与命中缩写英文全称中文含义说明CRITCritical Rate / Critical Damage暴击率/暴击伤害同一个缩写有两种含义见下方防坑指南CRIT RateCritical Strike Rate暴击率有些项目单独写 CRIT_RATECRIT DMGCritical Damage暴击伤害有的项目叫 CD导致和冷却缩减撞车HITHit Rate / Accuracy命中率部分项目用 ACCEVAEvasion闪避率闪避和命中通常成对出现TENTenacity韧性减控效果MOBA和MMO里常见CRICritical (日式缩写)暴击日系项目常见CRI率会心率这里最坑的就是CRIT和CD。你在一个项目里看到CD到底是 Cooldown「冷却」还是 Critical Damage「暴击伤害」大多数情况下CD指冷却但如果开发团队早期用CD表示暴击伤害后来才改成CRIT DMG老代码里的僵尸命名就会让你抓狂。后面第四部分我会专门写排查经验。穿透与减伤缩写英文全称中文含义典型公式位置PENPenetration穿透减伤前先扣穿透值DEF PENDefense Penetration护甲穿透Lol类项目里常见的破甲属性RESResistance抗性属性抗性/元素抗性MITMitigation减伤比例有的项目直接算成 0~1 的小数IRIgnore Resistance无视抗性通常和RES成对出现穿透属性的计算有个经典坑是先扣百分比穿透还是先扣固定穿透顺序不同结果天差地别。比如敌人有 100 点护甲你带 20% 穿透和 20 点固定穿透如果先算百分比再算固定最后护甲就是 60100×0.8−20如果先算固定再算百分比最后护甲是 64(100−20)×0.8。数值策划在配置公式的时候一定得在文档里写清楚否则程序按自己的理解实现测试又没覆盖边界情况上线后数值直接崩掉。恢复与冷却缩写英文全称中文含义说明CDCooldown冷却时间同时也可能指暴击伤害看上下文CDRCooldown Reduction冷却缩减极容易和 CRIT DMG Rate 撞车HPSHeal Per Second每秒治疗量常用在辅助角色评估LISH / LSLife Steal生命偷取也有项目叫 LifestealMHMax Health最大生命值有些项目直接写 MaxHPTHTrue Health有效生命EHP 的通俗版HPS和DPS是评估职业强度最常用的两个率值。团队在开会讨论“这版本的奶妈是不是太弱了”的时候说的往往就是“HPS 低了”“团血抬不起来”。这个概念在卡牌游戏和 MOBA 里不一定直接显示在面板上但数值模型里一定要算。2.4 战斗机制类DOT、HOT、CC、AoE、TTK 这些缩写到底在说什么如果说属性类是“角色的静态描述”那么机制类就是“战斗过程中发生的动态事件”。这类缩写是玩家社区和开发者共享的高频词但因为来源复杂有不少是从 MMO 时代传下来的网游玩语需要对照清楚。缩写英文全称中文含义典型使用场景DOTDamage Over Time持续伤害中毒、燃烧、流血HOTHeal Over Time持续治疗回复术、再生屏障CCCrowd Control群体控制眩晕、冰冻、恐惧AoEArea of Effect范围效果范围伤害或范围治疗DPSDamage Per Second每秒伤害输出职业强度标准HPSHeal Per Second每秒治疗治疗职业强度标准BPSBlock Per Second / Bullet Per Second每秒格挡/每秒弹幕射击游戏和格挡机制里出现TTKTime To Kill击杀所需时间射击游戏平衡性关键指标CTCast Time施法时间和 CD 经常一起出现GCDGlobal Cooldown公共冷却MMORPG 技能循环设计核心TICKTick Interval跳数间隔/刷新节拍DOT 每跳结算一次HOT 同理PROCProgrammed Random Occurrence触发效果概率触发的装备特效HITBOXHitbox受击判定盒/受击范围动作游戏/射击游戏碰撞检测PROC这个词在英文社区里非常常用而且谷歌翻译经常会翻得很奇怪。它来自“programmed random occurrence”的缩写指“程序化随机触发事件”。比如一把武器有 20% 概率触发雷击这个雷击就是PROC。新人看代码的时候看到一个函数叫OnProc第一反应通常是“这是啥”其实它就是处理“触发效果”的入口。TTK在射击游戏里格外重要。比如你设计一把步枪单发伤害 30射速 600 发/分钟那么对一个生命值 100 的敌人TTK 大概是 100/30/10 0.33 秒近似值不考虑后坐力和命中率。策划在调枪的时候盯着的就是 TTK 是不是在一个合理的区间里太短则枪械失衡太长则战斗拖沓。这个概念在 MOBA 和 吃鸡类游戏里也常用。3. 常用缩写使用场景从配置表到代码命名3.1 把缩写放进一段真实的战斗逻辑里光背表格没有用关键得知道这些缩写在实际项目里长什么样。我拿一个最常见的回合制战斗流程来举例子假设我们用 C# 写一个简化的伤害计算逻辑。public class Unit { public string unitName; public float curHP; // 当前生命值 public float maxHP; // 最大生命值 public float atk; // 攻击力 public float def; // 防御力 public float critRate; // 暴击率 public float critDmg; // 暴击伤害倍率默认1.5表示150% public float mAtk; // 魔法攻击力 public float mDef; // 魔法防御力 public float pen; // 穿透值 public float res; // 抗性 } public float CalcDamage(Unit attacker, Unit defender, float skillMultiplier, bool isMagic) { float rawDamage; if (isMagic) { rawDamage attacker.mAtk * skillMultiplier; // 魔法伤害结算先吃抗性再吃穿透 rawDamage - defender.mDef * (1 - attacker.pen / 100f); } else { rawDamage attacker.atk * skillMultiplier; // 物理伤害结算先按防御减伤再用穿透抵消 float reduction defender.def / (defender.def 100f); rawDamage * (1f - reduction); rawDamage attacker.pen; // 简化穿透逻辑 } // 暴击判定 bool isCrit UnityEngine.Random.value attacker.critRate; if (isCrit) { rawDamage * attacker.critDmg; } // 最终伤害下限保护 rawDamage Mathf.Max(1f, rawDamage); return rawDamage; }这段代码里出现了ATK、DEF、MATK、MDEF、PEN、RES、CRIT RATE、CRIT DMG等十几个缩写全部直接进变量名。这里有个非常关键的命名习惯代码里的缩写和策划表里的字段名必须一一对应。如果你在策划表里叫ATK在代码里叫attack在数据库里叫attack_point三个名字代表同一个数值那后期维护时查找引用会非常痛苦。我见过一个项目因为策划改了字段名为atk_point但代码没同步结果某次的伤害计算一直用的旧值最后线上出了“角色攻击力加了但伤害反而变低”的诡异 BUG查了整整两天才定位到是字段映射错了。所以团队最好从一开始就约定策划表字段、代码变量、Json 序列化键名、数据库列名四个地方完全一致。如果不一致至少要做一层带注释的映射层并且用单元测试守住这个映射。3.2 易混淆缩写对比玩家用语 vs 开发者用语还有一类特容易出问题的场景是玩家用的黑话和开发者用的缩写互相串味。玩家常说的词玩家语言含义开发者常用对应缩写坑点暴击双倍伤害CRIT / CRI可能指暴击率也可能指暴击伤害暴击伤害暴击时打出的额外伤害倍率CD / COEFFCD 会跟冷却 Cooldown 撞车抗性减少受到的法术/元素伤害RES / MIT有些游戏抗性百分比有些是等级吸血造成伤害回复生命LIFESTEAL / LS有些游戏只有物理吸血法术吸血单算穿透无视部分防御PEN / ARP / MRPARP护甲穿透MRP魔抗穿透冷却技能再使用间隔CD / COOLDOWN冷却缩短叫 CDR别跟自己绕晕范围伤害打到多目标的技能AoE / SPLASH / CLEAVEAoE 是地面范围SPLASH 是从主目标溅射秒杀直接击杀OHKO / OSOne Hit Knock Out / One Shot硬直无法操作STUN / HITSTUN / LOCKStun 是眩晕Hitstun 是受击硬直韧性减少被控时间TEN / CC RES也有项目叫 Resilience这里最经典的坑是暴击伤害倍率。玩家社区里说“我暴击打了一万”并不代表他暴击倍率是 100而是说最终伤害数字。但策划表里的CRIT DMG通常是一个倍率数比如 1.5、2.0有时为了配置方便会写成 150 表示 150%这就导致程序在读配置时得注意单位换算。我建议所有配置表统一用小数1.5 表示 150%同时字段叫critDmgMult避免和“固定值暴击伤害”混淆。另外HITBOX这个词挺特殊它不是数值属性而是碰撞检测里的几何区域判定。动作游戏里角色为什么会“明明看着打到了但没伤害”大概率就是 HITBOX 的尺寸对不上。动作用的是刀光判定框被打目标用的受击框两个框之间没有交集那自然就挥空了。对开发来说HITBOX 是调试战斗手感的关键很多动作游戏在开发模式里会开启DebugDraw把受击框画出来。4. 常见问题与排查技巧实录4.1 常见问题速查表数据表这个东西怕的不是“没看到”而是“看错了还自信满满地说没问题”。我整理了在项目里被问过 N 遍的问题做成速查表问题现象可能原因排查思路角色攻击力调高了伤害反而低了数值字段映射错位 / 公式里用了旧配置检查字段名映射在日志里输出 ATK 值对比暴击率超过 100% 还是偶尔不暴击随机算法用了多次随机 / 暴击校验顺序不对检查随机数种子与判定代码确认是否套了多层校验CDR 堆到 40% 后不再减少策划设了冷却上限检查公式是否min(CDR, maxCDR)截断DOT 伤害跳数不对总伤跳多了跳数结算公式里把持续时间除以间隔时取整出问题用固定时间轴测试TICK 值直接打印HITBOX 偏大怪物隔空被打碰撞体未随动画帧调整开 DebugDraw逐帧查看受击框是否匹配动作穿透计算异常导致怪物 0 防百分比穿透与固定穿透公式顺序反了回归公式文档做前后顺序的对照测试HP 显示为正数但一击被秒伤害计算时有溢出或负数未钳制在伤害结算加Mathf.Max(0f)/Clamp保护Player 和 怪物 共用一套数值表明显不是缩写问题但容易造成字段混淆分表配置字段加前缀约束4.2 团队协作里的命名规范建议我个人的经验是光靠“记得住”根本不够战斗数值涉及的角色、技能、Buff、装备、关卡光环至少几百个字段一旦团队超过三个人命名规范就必须靠文档和 DTO数据传输对象来约束。建议团队维护一份战斗数值字段命名规范.md写清楚以下内容所有基础字段名用全称或统一缩写禁止混用。比如attack就是attack不要一会儿atk一会儿att更不要为了 “好看” 用atkPoint。单位统一。百分比字段要么全部用 0~1 的小数要么全部用 0~100 的数值绝不能在同一个系统里混。字段注释统一写在代码的 DTO 上。比如/// 攻击力这种注释必须有因为策划改需求时程序靠注释定位字段。新增字段必须走评审。我自己带项目时立过一个规矩谁想加新字段必须写清楚“英文名、含义、取值范围、默认值、与其他字段的关系”然后发到群里其他人确认之后再动手。定期做字段盘点。每季度跑一次脚本扫描代码和配置表把那些“只在代码里出现但配置表里没有”的孤儿字段找出来能删就删不能删就在文档里标记为废弃。有人可能觉得这套流程太重了独立开发就一个人写代码随心所欲就行。但我的真实感受是哪怕你是 solo 开发半年后回来看自己的项目看到int hp和int hitPoint同时存在也会花时间去想这俩是不是一个东西。把规范立在前面其实就是给自己省时间。最后再分享一个调试过程里的小技巧游戏开发中战斗数值出问题时先在日志里把分子、分母、每一步结算的中间结果全部打出来不要只打出最终伤害。一次暴击伤害攻击力 × 技能倍率 × 暴击倍率 ×1 − 防御减伤 ×1 增伤 − 减伤中间任何一环错了只盯着最终数字根本找不到原因。加了全量日志之后你就把“猜谜”变成了“看证据”效率翻倍。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →