# 崩坏童话:蜜糖村 一个看起来百分之百治愈的像素童话村庄,实际是一场情绪疗程的沉浸幻境。 纯单机网页游戏:无存档、无后端、无 localStorage、无外部网络请求,浏览器打开即玩。 完整流程约 25–35 分钟,含 4 个结局。 ## 启动方式 ```bash npm install npm run dev # 开发模式(Vite,默认 http://localhost:5173) npm run build # 类型检查 + 产出纯静态 dist/ npm run preview # 本地游玩 dist/ 构建产物 ``` 技术栈:**Phaser 3 + TypeScript + Vite**。逻辑分辨率 320×180,任意窗口尺寸整数倍放大居中,`pixelArt` 关闭纹理平滑。 ## 按键 | 按键 | 功能 | |---|---| | WASD / 方向键 | 四向移动 | | E(或回车) | 交互 / 推进对话 / 确认选项 | | W/S 或 ↑/↓ | 对话中切换选项 | | `` ` ``(反引号) | 开关 Debug 面板 | 标题画面输入名字后回车开始(留空默认「小满」)。 ## Debug 面板(服务验收) 按反引号 `` ` `` 开关,默认关闭、无 UI 痕迹,不影响正常游玩。功能: - 直接设置**幸福值**(0–100,观察侵蚀矩阵五档:10/40/70/90/100)与**觉知值** - 跳转**当前日**(1–7,回到当日清晨小屋) - **传送**到全部 11 张地图(10 个场景,白色层含走廊+病房两张图) - **置齐全部线索**(C1–C9) - **强制触发四个结局**(E1 糖衣 / E2 回收 / E3 苏醒 / E4 静默) ## 素材制作流程(全部本项目内自制,无任何外部资产) ### 像素美术(Aseprite) 全部图片由 `tools/gen_art.lua` 在 Aseprite 内逐像素绘制生成——瓦片集(80 枚 16×16:草地/石板路/湖水/花丛/莓果丛/树/房屋墙顶门/室内地板/家具/井/雾/白色层墙地等)、主角(16×24,四朝向 × 4 帧行走,首帧兼待机)、对话头像(微笑 + E3 专用「真实的脸」)、7 组具名 NPC 立绘(各 smile/flat/off/blink 四档,off 档与 smile 仅差 1 像素——右眼低 1 像素)、双子鸟 2 帧张嘴动画、群演 ×5 各 2 帧循环、灰麻雀、向日葵表盘 14 帧。 ```bash # 重新生成全部素材(PNG → public/assets/,Aseprite 源文件 → art/) aseprite -b --script tools/gen_art.lua # macOS 应用包路径:/Applications/Aseprite.app/Contents/MacOS/aseprite ``` 色板:村庄用糖果色(草绿/奶油黄/蜜糖橙/天空蓝),白色层独立灰白色板;无抗锯齿、无描边渐变。 ### 地图(Tiled) 10 个场景 11 张地图由 `tools/gen_maps.mjs` 生成 Tiled `.tmx` 源文件(`maps/`,统一 `ground` / `obstacles`(collides=true)/ `objects`(spawn、NPC 点位、door、交互点)三层结构),再经 Tiled 命令行导出 JSON: ```bash node tools/gen_maps.mjs for f in maps/*.tmx; do tiled --export-map --embed-tilesets "$f" "public/assets/maps/$(basename "$f" .tmx).json" done # macOS 应用包路径:/Applications/Tiled.app/Contents/MacOS/Tiled ``` 场景清单:小满小屋 12×8、村广场 30×20(枢纽)、面包房 15×10、杂货店 15×10、诊所 12×8、湖畔 24×16、花田 20×14、古井空地 14×10、雾墙边界 20×8、白色层(走廊 20×6 + 病房 10×8)。所有室外场景经村广场互通,门与出入口成对。 ### 音频 无任何音频文件。BGM 为 Web Audio 程序合成的 8 小节 8-bit 治愈循环(方波主旋律 + 三角波低音 + 独立鸟鸣声部),音效仅 4 个(对话哔哔、任务完成叮、黄昏钟声、心电监护滴声),全部程序合成,见 `src/core/audio.ts`。playbackRate / 低通滤波 / 鸟鸣静音由侵蚀矩阵(`CorruptionDirector`)统一驱动。 ## 自动化验收(可选) ```bash npm i -D playwright && npx playwright install chromium node tools/e2e.mjs # 标题→Day1、侵蚀五档截图、全场景传送、四结局强制触发、控制台零报错 node tools/e2e_flow.mjs # 七日全流程:15 任务、9 线索、黄昏/梦境/脚本雨、E3 苏醒线 node tools/e2e_mech.mjs # 悲伤行为 5 项、强制欢乐庆典与逃离计数、S4 文本腐蚀、四结局判定 ``` ## 代码结构 ``` src/core/director.ts CorruptionDirector:幸福/觉知/日期/任务/线索/侵蚀阶段的唯一真源 src/core/textcorrupt.ts 文本腐蚀(10 组同音错字对照表,渲染层替换,优先命中咪咪) src/core/audio.ts Web Audio BGM/SFX 合成与矩阵联动 src/core/debug.ts Debug 面板 src/data/story.ts 全部台词(阿福公告 D1–D7 逐字、龟爷爷 C9 三段链、结局文案等) src/scenes/ Boot / Title / 11 张地图各一个 Scene / 常驻 UI / Dream / Ending ```