# 山海灵兽录 · 山海经养宠小游戏

微信小游戏（原生 Canvas 自研轻量引擎，零依赖）。用程序绘制 8 种《山海经》神兽，
养宠 + 进化 + 图鉴收集 + 回合制战斗（战斗掉落养料/装备，养料与装备提升战斗力）。

## 玩法一览
- **养成**：喂食 / 玩耍 / 清洁 / 睡觉，属性随时间自然衰减，离线也会掉状态
- **进化**：幼崽 → 成长期 → 成年 → 神兽形态，形象随等级变化（4 阶段）
- **图鉴**：8 种神兽收集 + 召唤（九尾狐 / 白泽 / 毕方 / 凤凰 / 饕餮 / 麒麟 / 应龙 / 帝江）
- **战斗**：点按攻击/技能（带冷却），命中顿帧 + 震屏 + 飘字，胜利掉落养料、装备、灵石
- **战力**：基础 + 等级成长 + 装备 + 养料，全部叠加

## 目录结构
```
shanhai-pet/
├── game.js                  # 微信小游戏入口
├── game.json / project.config.json
├── *.js                    # 全部游戏模块（拍平到根目录，微信小游戏 require 解析最稳）
│   ├── main.js              # 启动：存档 → 场景注册 → 主循环
│   ├── platform.js          # 微信/浏览器 双端适配
│   ├── ease/tween/particles # 主循环/缓动/粒子(对象池)
│   ├── ui/scene/loop/storage# UI/场景基类/主循环/存储
│   ├── creatures/equipment/items  # 神兽/装备/养料配置
│   ├── pet/player/battle    # 宠物/玩家/战斗（纯逻辑，可单测）
│   ├── background/petRenderer      # 神兽程序绘制 + 场景背景
│   └── menuScene…inventoryScene    # 6 个场景
├── web/                     # 浏览器预览（index.html + boot.js 迷你加载器，微信打包时忽略）
└── test/                    # 逻辑单测 + 冒烟测试（微信打包时忽略）
```

## 运行方式

### 1. 浏览器直接预览（推荐先看效果）
```bash
cd shanhai-pet
python3 -m http.server 5173
# 打开 http://localhost:5173/web/
```

### 2. 微信小游戏
1. 打开微信开发者工具 → 导入项目
2. 目录选择 `shanhai-pet`，AppID 选「测试号」（touristappid）
3. 编译运行即可（竖屏）

### 3. 跑核心逻辑单测
```bash
node test/logic.test.js
```

## 已内置的「更好看更丝滑」优化
- 固定逻辑步长 + 帧率钳制（切后台不跳变）、命中顿帧（hit-stop）、屏幕震动
- 全部动画走缓动（easeOutBack / easeOutElastic / easeOutBounce）
- 粒子系统对象池化，零运行时分配；按钮/浮字/爆点全部复用
- 视差云朵 + 双层山脊背景，动态草线
- 神兽 4 阶段形态 + 表情系统（开心/饿/困/难过）+ 进化光环特效
- 存档自动保存（20s 定时 + 切后台时），离线衰减

## 后续可扩展
- 音效（WebAudio 合成或微信音频资源）、装备合成/强化、日常任务、分享裂变
- 更多物种（穷奇、狰、乘黄、鲲…）、技能差异化、五行克制
- 真机帧率埋点与低端机降级（粒子数/渲染缩放）
