Files
text-adventure-game/docs/MATHEMATICAL_MODEL.md
Claude 5d4371ba1f feat: 完善数学模型和品质系统
- 修复品质等级范围重叠问题(优秀/稀有无重叠)
- 统一 formulas.js 与 constants.js 的品质判定
- 修复经验公式与游戏实际逻辑不一致
- 调整品质生成概率: 传说0.1%, 史诗1%, 稀有4%, 优秀10%
- 添加数学模型文档和README
- 添加数值验证脚本

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:54:20 +08:00

8.8 KiB
Raw Blame History

游戏数值模型文档

本文档详细描述了游戏中所有数值计算的核心公式和设计理念。

目录

  1. 设计原则
  2. 角色属性系统
  3. 装备属性系统
  4. 词缀系统
  5. 怪物属性系统
  6. 经验与升级系统
  7. 战斗伤害计算
  8. 经济系统

设计原则

1. 线性与指数平衡

  • 低等级1-20:使用线性增长,确保新手体验平滑
  • 中等级21-50:引入指数增长,增加挑战
  • 高等级51+:指数加速,突出后期成就

2. 边际收益递减

  • 属性越高,继续提升的成本越大
  • 防止某一项属性无限堆叠

3. 有意义的多样性

  • 不同属性有不同用途,避免单一最优解
  • 词缀系统提供随机性和惊喜

角色属性系统

基础属性

属性 符号 默认值 说明
力量 STR 10 影响攻击力
敏捷 AGI 8 影响闪避、防御
灵巧 DEX 8 影响暴击
智力 INT 10 影响品质、魔法
体质 VIT 10 影响生命、回复

派生属性计算

// 基础生命值
HP = 100 + VIT × 10 + Level × 5

// 基础耐力
Stamina = 80 + VIT × 5 + Level × 3

// 基础精神
Sanity = 100 + INT × 3

// 基础攻击力
Attack = STR × 1.0 + Level × 2

// 基础防御力
Defense = AGI × 0.3 + VIT × 0.2 + Level

// 基础暴击率 (%)
CritRate = 5 + DEX × 0.3

// 基础闪避率 (%)
DodgeRate = AGI × 0.5

属性效果示例

属性值 效果
STR 10 → 20 攻击力 +10
AGI 10 → 20 闪避 +5%,防御 +3
DEX 10 → 20 暴击 +3%
VIT 10 → 20 HP +100回复 +0.5/秒
INT 10 → 20 装备品质期望 +5

装备属性系统

装备品质

品质范围0-250影响装备属性的百分比加成。

品质范围 名称 倍率 颜色
0-49 垃圾 0.5x 灰色
50-89 普通 1.0x 白色
90-129 优秀 1.2x 绿色
130-159 稀有 1.5x 蓝色
160-199 史诗 2.0x 紫色
200-250 传说 3.0x 橙色

装备最终属性计算

// 品质倍率
QualityMultiplier = 1 + (Quality - 100) × 0.01

// 等级倍率(每级 +2%
LevelMultiplier = 1 + (ItemLevel - 1) × 0.02

// 综合倍率
TotalMultiplier = QualityMultiplier × LevelMultiplier

// 最终伤害
FinalDamage = BaseDamage × TotalMultiplier

// 最终防御
FinalDefense = BaseDefense × TotalMultiplier

装备品质示例

以攻击力20的基础武器为例

品质 等级 最终攻击力
100 (普通) 1 20
150 (优秀) 1 30
200 (史诗) 1 40
100 (普通) 10 24
150 (优秀) 10 36
200 (史诗) 10 48

词缀系统

词缀稀有度

每件装备最多3个词缀词缀数量和稀有度受品质影响。

品质范围 最大词缀数 词缀稀有度倾向
0-89 0
90-129 1 普通60%稀有30%
130-159 2 稀有为主
160-199 3 史诗为主
200-250 3 传说9%

词缀属性

词缀属性随物品等级缩放:

词缀最终值 = 词缀基础值 × (1 + (物品等级 - 1) × 0.1)

武器词缀示例

名称 类型 基础值 稀有度
锋利 攻击+5% 5 普通
残暴 攻击+12% 12 稀有
弑神 攻击+25% 25 传说
锐利 暴击+3% 3 普通
致命 暴击+8% 8 稀有
烈焰 火伤+10 10 史诗

防具词缀示例

名称 类型 基础值 稀有度
坚固 防御+5% 5 普通
强化 防御+12% 12 稀有
铁壁 防御+25% 25 史诗
灵活 闪避+3% 3 普通
耐久 耐力+15 15 稀有
不朽 生命+100 100 传说

怪物属性系统

怪物等级缩放

// 生命值缩放(每级 +12%
MonsterHP = BaseHP × 1.12^(Level - 1)

// 攻击力缩放(每级 +8%
MonsterAttack = BaseAttack × 1.08^(Level - 1)

// 防御力缩放(每级 +6%
MonsterDefense = BaseDefense × 1.06^(Level - 1)

// 经验奖励缩放(每级 +10%
MonsterEXP = BaseEXP × 1.10^(Level - 1)

怪物等级范围

怪物实际等级在基础等级 ±20% 范围内浮动:

LevelVariance = BaseLevel × 0.2
MinLevel = Max(1, BaseLevel - LevelVariance)
MaxLevel = BaseLevel + LevelVariance

难度系数

// 基础难度
Difficulty = 1.0

// 精英怪
Elite: Difficulty = 1.5

// Boss
Boss: Difficulty = 2.0

// 弱小怪
Weak: Difficulty = 0.7

怪物属性示例

以基础攻击10的怪物为例

等级 HP 攻击 防御 经验
1 100 10 5 20
5 157 14 7 29
10 278 20 10 47
20 872 43 17 122
50 18403 184 74 5851

经验与升级系统

角色升级经验

// 所需经验 = 基础值 × 增长系数^(等级-1)
ExpNeeded = 100 × 1.15^(Level - 1)
等级 所需经验 累计经验
1 100 0
5 174 674
10 352 2261
20 1458 12674
50 84049 424058

战斗经验计算

// 等级差调整
LevelDiff = MonsterLevel - PlayerLevel

if (LevelDiff > 5) {
    // 怪物高5级以上额外奖励
    ExpMultiplier = 1 + (LevelDiff - 5) × 0.1
} else if (LevelDiff < -5) {
    // 怪物低5级以上大幅衰减
    ExpMultiplier = Max(0.1, 0.5 + (LevelDiff + 5) × 0.1)
} else {
    // 等级相近,正常或小幅衰减
    ExpMultiplier = 1 + LevelDiff × 0.05
}

// 实际经验
ActualExp = BaseExp × ExpMultiplier

经验衰减表

玩家等级 vs 怪物等级 经验倍率
+5级或更高 100%+
相同等级 100%
-3级 85%
-5级 50%
-10级 10%

技能经验

// 技能经验衰减(等级越高越难升级)
Decay = 0.95^(SkillLevel - 1)
ActualExp = ActionExp × Decay
技能等级 经验衰减 获得100经验实际得到
1 100% 100
5 81% 81
10 63% 63
20 36% 36

战斗伤害计算

普通伤害

// 基础伤害
BaseDamage = Attack - Defense × 0.5

// 最小伤害保证攻击力的20%
MinDamage = Attack × 0.2

// 实际伤害
ActualDamage = Max(MinDamage, BaseDamage)

暴击系统

// 暴击判定
IsCrit = Random(0, 100) < CritRate

// 暴击伤害
if (IsCrit) {
    CritDamage = BaseDamage × 1.5  // 基础暴击倍率
    // 可通过装备/技能提升
}

命中系统

// 实际命中率
ActualHitRate = Clamp(5, 95, HitRate - DodgeRate)

// 命中判定
IsHit = Random(0, 100) < ActualHitRate

伤害示例

攻击 防御 基础伤害 最小伤害 实际伤害
20 5 17.5 4 17-18
50 10 45 10 45
50 30 35 10 35
100 50 75 20 75
30 40 10 6 10

经济系统

物品价值

// 出售价格
SellPrice = BaseValue × QualityMultiplier × (1 + AffixCount × 0.15)

// 购买价格(商人倍率)
BuyPrice = SellPrice × MerchantRate

// 商人收购价
BuybackPrice = SellPrice × 0.3

商人类型

商人 出售倍率 收购倍率
普通商人 200% 30%
黑市商人 250% 50%
特殊商人 150% 40%

价值示例

以基础价值100的物品为例

品质 词缀 出售价 购买价(普通) 购买价(黑市)
100 0 100 200 250
150 1 145 290 362
200 2 250 500 625
200 3 287 574 717

平衡性检查

攻击期望

玩家攻击期望 = 基础攻击 × (1 + 暴击率 × 暴击倍率)

例如攻击100暴击率20%暴击倍率1.5

期望伤害 = 100 × (1 + 0.2 × 0.5) = 100 × 1.1 = 110

生存期望

玩家有效生命 = HP × (1 + 闪避率 / (1 - 闪避率))

例如HP 1000闪避30%

有效生命 = 1000 × (1 + 0.3 / 0.7) = 1000 × 1.43 = 1430

DPT每回合伤害

PlayerDPT = PlayerAttack × PlayerHitRate
MonsterDPT = MonsterAttack × (1 - PlayerDodgeRate)

// 生存回合
SurvivalTurns = PlayerHP / MonsterDPT

// 击杀回合
KillTurns = MonsterHP / PlayerDPT

// 战斗评价
if (KillTurns < SurvivalTurns) {
    // 玩家优势
} else {
    // 怪物优势
}