Files
ModelTest20260714/Kimi-K3/README.md
T

5.0 KiB
Raw Blame History

崩坏童话:蜜糖村(网页版)

一个看起来百分之百治愈的像素童话村庄,实际是一场情绪疗程的沉浸幻境。 纯单机网页游戏:无存档、无后端、无 localStorage,浏览器打开即玩。完整流程约 25–35 分钟,含 4 个结局(E1 糖衣 / E2 回收 / E3 苏醒 / E4 静默)。

启动方式

npm install        # 安装依赖(phaser / vite / typescript
npm run build      # 产出纯静态 dist/
npm run preview    # 本地游玩 → http://127.0.0.1:4815/

开发模式可用 npm run dev(热更新)。构建产物为纯静态文件,无外部网络请求、无外部音频/字体文件。

按键

按键 功能
WASD / 方向键 移动(96 像素/秒,四向动画)
E 交互 / 推进对话(靠近对象 ≤24 像素出现「按 E」提示)
↑ / ↓ + E 或 1 / 2 / 3 对话选项(温柔 / 迟疑 / 否定)
`(反引号) Debug 面板开关

Debug 面板(PRD §13

默认关闭、无 UI 痕迹,不影响正常游玩。按反引号键 ` 开关,功能:

  • 直接设置幸福值(0–100)、觉知值(0–100)、当前日(1–7)
  • 传送到任意场景(10 选)
  • 置齐全部线索(9 处)
  • 强制触发四个结局之一(E1E4

玩法提示(无剧透)

每天早上看广场公告板接「今日幸福任务」,完成后黄昏钟声响起,回小屋睡觉进入次日。幸福值由左上角向日葵表盘显示(12 瓣,无数字)。村里的规则是「必须幸福」——但通往真相的路,恰恰是那些系统禁止的悲伤。古井与雾墙从第 5 天起可以靠近。

素材与地图制作流程(全部原创,无现成素材)

所有像素素材与地图均为本项目内程序化自制,未使用任何素材包或开源 tileset。生成脚本全部保留在仓库内,可一键复现。

像素素材(Aseprite 1.3tools/aseprite/

  • 脚本:gen_all.lua 总编排,dofile 组织 helpers.lua(糖果色板/白色层灰板 + 像素原语)、gen_tileset.luagen_player.luagen_npcs.luagen_extras.luagen_portraits.lua
  • 复现命令:
    /Applications/Aseprite.app/Contents/MacOS/aseprite -b --script tools/aseprite/gen_all.lua
    
  • 产出(public/assets/):
    • tileset.png 256×12816×16 瓦片 ×128(草地/石路/湖水/花丛/莓果丛/树/房屋/室内家具/井/雾/白色层,瓦片 id 表见 CONTRACT.md §2
    • sprites/player.png 64×9616×24/帧,4 朝向 × 4 帧行走,第 0 帧兼待机
    • sprites/npc_*.png:7 组具名 NPC 各 3 档表情(smile/flat/offoff 与 smile 仅差 12 像素)+ 双子鸟 2 帧张嘴 + 群演 ×5 各 2 帧循环
    • portraits/*.png:主角微笑头像、E3 专用「真实的脸」头像、7 张 NPC 头像,各 32×32

地图(Tiled 1.12tools/tiled/

  • 脚本:genmaps.jsTiled 脚本运行时 Tiled -e 执行,TextFile 写出 .tmx),再用 Tiled CLI 导出 JSON。
  • 复现命令:
    /Applications/Tiled.app/Contents/MacOS/Tiled -e tools/tiled/genmaps.js
    for m in house plaza bakery shop clinic lake field well fog white; do
      /Applications/Tiled.app/Contents/MacOS/Tiled --export-map --embed-tilesets \
        public/assets/maps/$m.tmx public/assets/maps/$m.json
    done
    
  • 产出(public/assets/maps/):10 张地图(小屋 12×8 / 广场 30×20 / 面包房 15×10 / 杂货店 15×10 / 诊所 12×8 / 湖畔 24×16 / 花田 20×14 / 古井 14×10 / 雾墙 20×8 / 白色层 20×14),统一 ground / obstaclescollides=true/ objectsspawn、NPC 点位、door、交互点)三层结构;所有室外场景经村广场互通,门双向成对。

技术架构(PRD §12

  • Phaser 3 + TypeScript + Vite;逻辑分辨率 320×180,整数倍放大居中,pixelArt: true 禁用纹理平滑。
  • 场景:BootScene / TitleScene / 10 个地图 Scene(共用 MapScene 基类)/ 常驻 UIScene(对话框、向日葵表盘、提示)/ DreamScene / EndingScene。
  • CorruptionDirector:普通 TS 单例 + 事件发射器,持有幸福/觉知/日期/任务标记/线索集合/侵蚀阶段,是全部状态与视听参数的唯一真源;饱和度与晕影用相机 postFXColorMatrix / Vignette),负片闪帧用 ColorMatrix negative 单帧切换。
  • BGM 与音效全部 Web Audio 程序合成(8 小节 8-bit 循环:方波主旋律 + 三角波低音 + 鸟鸣声部;音效 4 个),playbackRate 与低通由 CorruptionDirector 按 §6.4 矩阵驱动。
  • 文本腐蚀在对话渲染层实施(§6.5 十组同音错字,原文案保持干净),优先命中咪咪。

验收

tools/acceptance.mjs 为自动化验收脚本(puppeteer-core + 本机 Chrome),覆盖 PRD §14 的 20 条清单(静态逐字校验 + 真实浏览器全流程游玩 + Debug 面板 + 四结局 + 截图):

npm run build && (npm run preview &) && node tools/acceptance.mjs

截图输出在 tools/shots/