Honey Village: six model builds + hub frontend, Dockerized for Dokploy
This commit is contained in:
+104
@@ -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 | 觉知 ±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 条。单元测试覆盖台词、任务奖励、侵蚀矩阵、错字表、结局优先级、悲伤数值等。
|
||||
Reference in New Issue
Block a user