# 游戏数值公式设计

## 规则（Rules）

- 数值公式决定战斗/成长的结果，必须清晰定义且可调
- 所有数值必须有明确的上限和下限
- 公式中的参数要有可调整空间，不能写死

## 方法（Methods）

### 步骤1：设计战斗公式

| 公式类型 | 示例 |
|:---------|:------|
| 加减法 | `伤害 = 攻击力 - 防御力` |
| 乘除法 | `伤害 = 攻击力 × (1 - 减伤率)` |
| 混合 | `伤害 = 攻击力² / (攻击力 + 防御力)` |

选择原则：
- **简单直观**：加减法适合休闲游戏
- **策略深度**：乘除法适合策略游戏
- **避免膨胀**：混合公式（如除法）可以有效控制数值膨胀

### 步骤2：设计成长曲线

成长曲线控制角色从1级到满级的数值变化：

```
等级 1: 攻击=100, HP=500
等级 10: 攻击=300, HP=2000
等级 50: 攻击=1500, HP=12000
等级 100: 攻击=5000, HP=40000
```

曲线类型：
- **线性**：`数值 = 初始 + 等级 × 系数`（平稳成长）
- **指数**：`数值 = 初始 × 系数^等级`（后期爆发）
- **对数**：`数值 = 初始 + log(等级) × 系数`（前期快后期慢）

### 步骤3：设计概率公式

| 概率类型 | 公式 | 示例 |
|:---------|:-----|:------|
| 固定概率 | `P = 固定值` | 暴击率=15% |
| 条件概率 | `P = f(属性)` | 命中率 = 己方命中 / (己方命中 + 对方闪避) |
| 保底机制 | `P = 保底次数递增` | 抽卡保底 |

### 步骤4：参数配置表

输出数值配置表（可用Excel或JSON）：

```json
{
    "level_curve": { "base_atk": 100, "growth_atk": 20, "base_hp": 500, "growth_hp": 150 },
    "damage_formula": { "type": "混合", "formula": "atk^2/(atk+def)" },
    "crit_rate": 0.15,
    "crit_damage": 1.5
}
```

## 技巧（Tips）

- **数值可调性**：所有数值参数放在配置文件中，不要硬编码
- **边际效应**：注意属性堆叠的边际递减效应
- **百分比 vs 固定值**：百分比属性容易导致后期膨胀
- **反推验证**：设计完公式后，模拟1000次战斗验证平衡性
