# mm_os 游戏开发指南

## 一、mm_os 游戏开发方式

mm_os 框架通过 **App 应用 + Plugin 插件 + Event 事件** 的方式支持游戏服务端开发。

### 1.1 游戏模块配置

在 `app.json` 中标记游戏类型：

```json
"game": {
    "type": "card_game"
}
```

### 1.2 游戏开发可选方案

| 方案 | 适用场景 | 说明 |
|:----|:---------|:-----|
| 创建独立 App | 完整游戏 | 独立的游戏服务端，见 `develop_mm_app` |
| 在现有 App 下创建 Plugin | 游戏子系统 | 如卡牌对战、匹配系统，见 `develop_mm_plugin` |
| 通过 Event 拦截 | 游戏逻辑扩展 | 如战斗结算、日志记录，见 `develop_mm_api_event` |
| 定时任务 | 游戏后台逻辑 | 如每日刷新、赛季结算，见 `develop_mm_task` |

## 二、游戏数据存储

### 2.1 玩家数据

使用 `db.new(表名, 主键)` 管理玩家数据：

```javascript
var playerDb = db.new('game_player', 'player_id');
var player = await playerDb.getObj({ player_id: uid });
```

### 2.2 游戏配置

使用 `sql.json` 配置游戏静态数据（卡牌属性、关卡配置、掉落表等）。

### 2.3 缓存策略

- 热数据（在线状态、匹配队列）→ Redis
- 冷数据（历史记录、日志）→ MySQL
- 临时数据（战斗过程）→ Memory

## 三、常见游戏类型的服务端架构

| 游戏类型 | 核心模块 | 关键API | 实时性需求 | 参考work |
|:---------|:---------|:--------|:-----------|:---------|
| 卡牌游戏 | 卡牌管理、牌组、对战逻辑、匹配 | 抽卡/组牌/对战/排名 | 低-中 | `mm_card_game_dev` |
| 回合制RPG | 角色、背包、任务、战斗、NPC、装备 | 属性/装备/任务/战斗/商店 | 低 | `mm_rpg_game_dev` |
| 实时对战 | 匹配、房间、状态同步、结算 | 匹配/操作/同步/结算 | 高（WebSocket） | `mm_rpg_game_dev` + `guide_mm_websocket` |
| 放置/休闲 | 挂机收益、进度、排行榜 | 收益领取/加速/排名 | 低 | 通用 App 开发 |

## 四、RPG 游戏特有数据结构

### 4.1 角色属性体系

RPG 的核心是角色成长，属性系统通常包含：

| 属性 | 影响 | 成长方式 | 说明 |
|:-----|:-----|:---------|:------|
| STR（力量） | 物理攻击、负重 | 升级加点、装备 | 战士核心属性 |
| DEX（敏捷） | 暴击、闪避、攻速 | 升级加点、装备 | 刺客核心属性 |
| INT（智力） | 魔法攻击、魔法值 | 升级加点、装备 | 法师核心属性 |
| CON（体质） | 生命值、物理防御 | 升级加点、装备 | 坦克核心属性 |
| Level（等级） | 基础属性基数 | 经验积累 | 成长基线 |

### 4.2 经验曲线设计

```
等级 1→2: 100经验（约10只怪）
等级 2→3: 240经验（约20只怪）
等级 10→11: 6200经验（约100只怪）
等级 50→51: 450万经验（约1000只怪）
```

经验曲线公式：`exp = base * level * growth^(level-1)`
- base = 基础经验（如100）
- growth = 成长系数（如1.2-1.5）

### 4.3 RPG 模块关系图

```
角色系统 ← 背包系统
   ↓          ↓
装备系统 → 战斗系统 ← 技能系统
   ↓          ↓
任务系统 → 奖励系统 → NPC/商店系统
```

每个模块可以通过 mm_os 的 Plugin 或独立 App 实现。

## 五、game.json 配置

在 app.json 中的 game 字段配置：

```json
// 卡牌游戏
"game": { "type": "card_game", "max_players": 2, "round_time": 30 }

// RPG 游戏
"game": { "type": "rpg", "max_level": 100, "exp_growth": 1.3 }
```

框架不限制 game 字段的内容，开发者可自定义扩展。

## 六、游戏开发完整流程

### 卡牌游戏流程
```
1. 游戏概念设计（read_work game_concept_design）
2. 核心玩法设计（read_work gameplay_mechanism）
3. 数值/经济设计（read_work game_formula / game_economy）
4. 卡牌游戏实现（read_work mm_card_game_dev）
5. 创建 App 和 API（read_work develop_mm_app / develop_mm_api）
6. 测试和平衡（read_work game_balance_analysis）
```

### RPG 游戏流程
```
1. 游戏概念设计（read_work game_concept_design）
2. 玩法/系统设计（read_work gameplay_mechanism / system_rule_design）
3. 数值/成长设计（read_work game_formula / game_economy）
4. 任务/奖励设计（read_work game_quest_design / game_reward_design）
5. 关卡/道具/生物设计（read_work level_layout / prop_design / creature_design）
6. RPG 游戏实现（read_work mm_rpg_game_dev）
7. 创建 App、API、数据库（read_work develop_mm_app / develop_mm_api / guide_mm_database）
8. 测试和平衡调优
```
