# 游戏系统规则设计

## 规则（Rules）

- 每个子系统必须有清晰的输入、处理和输出
- 系统之间的耦合尽量低，一个系统修改不影响其他系统
- 所有规则必须形成文档，作为开发和测试的依据

## 方法（Methods）

### 步骤1：列出所有子系统

常见的游戏子系统：

| 系统 | 功能 | 关联系统 |
|:----|:-----|:---------|
| 战斗系统 | 处理对战逻辑 | 角色、装备、技能 |
| 匹配系统 | 寻找对战对手 | 排位、社交 |
| 好友系统 | 社交关系管理 | 聊天、赠送 |
| 成就系统 | 记录玩家成就 | 任务、奖励 |
| 排行系统 | 排名和竞技 | 匹配、赛季 |

### 步骤2：定义系统接口

每个系统定义输入/输出：

```json
{
    "战斗系统": {
        "输入": ["玩家ID", "对手ID", "卡牌组"],
        "处理": "回合制对战，计算伤害和胜负",
        "输出": "战斗结果、统计数据、奖励"
    }
}
```

### 步骤3：设计系统间关系

用依赖图表示系统间关系：

```
战斗系统 ← 匹配系统（提供对手）
战斗系统 → 成就系统（提供数据）
战斗系统 → 排行系统（更新积分）
角色系统 → 战斗系统（提供属性）
```

### 步骤4：规则文档化

输出系统规则文档，格式示例：

```
## 匹配系统规则
1. 玩家点击匹配后进入队列
2. 按段位±2级范围匹配
3. 等待超过30秒扩大范围到±5级
4. 匹配成功后创建对战房间
5. 玩家确认后进入战斗
```

## 技巧（Tips）

- **单一职责**：每个子系统只做一件事，做好一件事
- **可扩展性**：设计时预留扩展接口，方便后续添加新系统
- **配置化**：系统参数放在配置文件中，不要硬编码
- **文档驱动**：写代码前先写规则文档，开发按文档实现
