Honey Village: six model builds + hub frontend, Dockerized for Dokploy

This commit is contained in:
2026-07-15 10:50:12 -04:00
commit 67253bded5
523 changed files with 58879 additions and 0 deletions
+104
View File
@@ -0,0 +1,104 @@
# 崩坏童话:蜜糖村
纯单机网页游戏(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 条。单元测试覆盖台词、任务奖励、侵蚀矩阵、错字表、结局优先级、悲伤数值等。