Files

105 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 崩坏童话:蜜糖村
纯单机网页游戏(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 | 觉知 ±10L 仅 Debug 可下调) |
| Shift+17 | 设置当前日(用 `code` Digit17,兼容浏览器 Shift 改写 `key` 为 !@# |
| C | 置齐全部线索 |
| 0–9 | 传送到 10 个场景(0小屋 1广场 2面包房 3杂货店 4诊所 5湖畔 6花田 7古井 8雾墙 9白色层) |
| V | 循环传送下一场景 |
| F1F4 | 强制结局 E1E4 |
| 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.png128 瓦 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 / offoff 仅 12 像素差异)
- 双子鸟 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 条。单元测试覆盖台词、任务奖励、侵蚀矩阵、错字表、结局优先级、悲伤数值等。