# 崩坏童话：蜜糖村

纯单机网页游戏（Phaser 3 + TypeScript + Vite）。无存档、无后端、无 localStorage；浏览器打开即玩。完整流程约 25–35 分钟，含 4 个结局。

## 启动方式

```bash
npm install
npm run dev      # 开发
npm run build    # 产出静态 dist/
npm run preview  # 本地游玩构建结果
npm test         # 单元测试（PRD 数值/台词/矩阵）
```

请用 `npm run dev` 或 `npm run preview` 访问，不要直接用 `file://` 打开（ESM 模块加载需要 HTTP）。

## 按键

| 按键 | 作用 |
|------|------|
| WASD / 方向键 | 四向移动 |
| E / 空格 | 交互、推进对话 |
| 1 / 2 / 3 | 对话选项（温柔 / 迟疑 / 否定） |
| Enter | 确认名字；结局「回到标题」 |
| \` （反引号） | 开关 Debug 面板 |

靠近可交互物（≤24 像素）会出现「按 E」提示。

## 游玩流程

1. 标题画面 → 输入名字（留空默认为「小满」）→ Day 1 小屋  
2. 每日：晨起 → 广场公告板接任务 → 完成任务 → 黄昏钟声 → 回屋睡觉 → 梦境 → 次日  
3. Day 7 参加「第 413 届丰收庆典」，按幸福 / 觉知 / 线索走向 E1–E4 之一  

幸福值**不显示数字**：左上角向日葵 12 瓣按值点亮，满格后花心出现黑籽。

## Debug 面板（默认关闭）

按 \` 打开。仅服务验收，正常游玩无 UI 痕迹。

| 键 | 功能 |
|----|------|
| H / J | 幸福 ±10 |
| K / L | 觉知 ±10（L 仅 Debug 可下调） |
| Shift+1–7 | 设置当前日（用 `code` Digit1–7，兼容浏览器 Shift 改写 `key` 为 !@#） |
| C | 置齐全部线索 |
| 0–9 | 传送到 10 个场景（0小屋 1广场 2面包房 3杂货店 4诊所 5湖畔 6花田 7古井 8雾墙 9白色层） |
| V | 循环传送下一场景 |
| F1–F4 | 强制结局 E1–E4 |
| N | 负片闪帧 |
| P | 触发欢乐庆典 |

## 素材与地图制作流程（全部原创）

本项目**禁止**使用任何现成素材包。像素图与地图均由仓库内脚本 + 本机工具生成：

### Aseprite

本机路径示例：`/Applications/Aseprite.app/Contents/MacOS/aseprite`

```bash
export PATH="/Applications/Aseprite.app/Contents/MacOS:$PATH"
aseprite -b -script scripts/generate_tileset.lua   # → public/assets/tilesets/village.png（128 瓦 16×16）
aseprite -b -script scripts/generate_sprites.lua   # → player / npcs / birds / extras / portraits / sunflower
```

- 瓦片：草地、石板路、湖水、花丛、莓果、树、房屋、室内家具、井、雾、白色层等  
- 主角：16×24，4 朝向 × 4 帧行走；对话微笑头像 + E3「真实的脸」  
- NPC ×7：各 3 档表情 smile / flat / off（off 仅 1–2 像素差异）  
- 双子鸟 2 帧张嘴；群演 ×5  

源文件同时保存 `.aseprite` 与导出 `.png`。

### Tiled Map Editor

本机路径示例：`/Applications/Tiled.app/Contents/MacOS/tiled`

```bash
node scripts/generate-maps.mjs
# 可选：用 Tiled CLI 再导出校验
tiled --export-map json mapsrc/house.tmx public/assets/maps/house_tiled_export.json
```

10 张地图（§10）：小屋、村广场、面包房、杂货店、诊所、湖畔、花田、古井空地、雾墙边界、白色层。  
结构层：`ground` / `obstacles`（碰撞）/ `objects`（spawn、NPC、door、交互点）。  
源 TMX 在 `mapsrc/`，运行时 JSON 在 `public/assets/maps/`。

### 一键重生成

```bash
npm run assets   # 若已配置 scripts/generate-assets.sh
node scripts/generate-maps.mjs
```

## 技术要点

- 逻辑分辨率 320×180，整数倍放大，`pixelArt: true`，无纹理平滑  
- `CorruptionDirector`：幸福 / 觉知 / 日 / 任务 / 线索 / 侵蚀阶段唯一真源  
- BGM 与 4 个音效均为 Web Audio 程序合成，无外部音频文件  
- 无 localStorage、无外部网络资源 / 字体  

## 验收

PRD §14 共 20 条。单元测试覆盖台词、任务奖励、侵蚀矩阵、错字表、结局优先级、悲伤数值等。
