Files

19 KiB
Raw Permalink Blame History

PRD:《崩坏童话:蜜糖村》网页版

v2.0 · 2026-07-14 · 纯单机网页游戏,无存档、无后端、无 localStorage,浏览器打开即玩;完整流程约 25–35 分钟,含 4 个结局

1. 游戏理念与设计支柱

一个看起来百分之百治愈的像素童话村庄,实际是一场情绪疗程的沉浸幻境。玩家越"幸福",世界越饱和、越甜、越不对劲;通往真相的路,恰恰是那些系统禁止的悲伤。

四条设计支柱,所有实现争议回到这里裁决:

  1. 甜即是恐怖:画面永远晴天,崩坏由"过度的甜"承载(过饱和、过亮、过于礼貌),不是黑暗与血。
  2. 玩家先知,主角无知:主角对话头像从头到尾是同一帧微笑,永不变化;全流程唯一一次变化发生在 E3 真结局最后一帧——微笑消失,变成一张普通的、疲惫的脸。
  3. 克制:全程 0 个 Jump Scare。最响的恐怖手段是突然的安静。
  4. 文本先崩:一切异常最先出现在台词里(错字、重复、措辞替换),其次才是画面与声音。

2. 世界观:三层结构

名称 玩家所见 实质
表层 蜜糖村 像素童话村庄,动物居民,永远晴天 情绪疗程构建的沉浸幻境
机制层 幸福经济 幸福值 UI(向日葵表盘),完成任务→幸福↑→画面更饱和 世界以幸福为燃料;幸福不足时世界开始"索取"
真相层 蜜糖谷情绪疗养中心 仅在 glitch 闪帧、井底回声、结局中显形:白色走廊、病房、病历 主角是编号 PT-07 的疗养者,村庄是疗程环境

命名咬合:现实机构叫"蜜糖谷情绪疗养中心",幻境村庄叫"蜜糖村"。玩家在 E3 病历抬头看到"蜜糖谷"三字时完成最后一块拼图。

3. 主角设定

  • 开局输入名字,默认"小满"(呼应"幸福值满格")。名字仅存于本次会话内存。
  • 性别中性像素小人,16×24 像素/帧,无内心独白。
  • 对话头像永远同一帧微笑(见支柱 2)。
  • E3 结局病历打印:玩家输入的名字 + 真实游玩时长(读运行计时)作为"本次疗程时长"。

4. NPC 清单(封闭,7 组 + 群演)

每个具名 NPC 有 3 档表情立绘:smile(微笑)/ flat(平直)/ off(崩坏,一个像素级细节不对,如一只眼睛低 1 像素),随侵蚀阶段与个体阈值偏移切换(§6.4)。

NPC 种族/身份 常驻位置 表层功能 崩坏弧线 阈值偏移
阿福 狗 · 村长 广场公告板 每日发布"今日幸福任务" 台词逐日从「祝你开心」滑向「你必须开心」(单字替换,无提示) 0
圆圆 兔 · 面包师 面包房 送面包任务链,村里最暖 全村最后一个崩坏;配方纸背面藏线索 C2 +15(最晚崩)
大宝 熊 · 邮差 村口邮筒 送信任务 所有信件邮戳同一天(C3);S3 起把信送给不存在的住户 0
咪咪 猫 · 杂货店主 杂货店 闲聊最多 文本腐蚀主要载体:错字与重复标点最先出现在她嘴里 10(最早崩)
芙医生 鹿 · 医生 诊所 「村里有诊所,但你不需要去那里哦」 全村唯一不崩坏者;E3 的出口 不参与侵蚀
双子鸟 ×2 广场树上 BGM 的"剧情来源"(音乐从它们那里飘出) 音乐变调时动画同步卡帧;S4 时鸟鸣从混音消失但它们仍在张嘴 0
龟爷爷 龟 · 老者 湖畔长椅 闲话家常 唯一偶尔说真话的知情者,承载线索 C9:「今天……是第几个今天?」 不参与侵蚀
群演 ×5 松鼠/刺猬等 各处 无对话,循环走动动画 S4 起随机 1 只停止循环,原地面朝玩家

5. 七日故事线

每日固定结构:晨起(小屋)→ 公告板接任务 → 完成任务/自由活动 → 黄昏钟声(游戏内计时或任务完成触发)→ 回屋睡觉 → 梦境过场(侵蚀越高,梦境越"漏")→ 次日。

主题 剧情要点 侵蚀预期
Day 1 纯粹的治愈 教学日:送面包(T1)、浇花(T2)、和三位村民问好(T3)。一切以最甜的面貌登场 S0→S1,零异常
Day 2 第一道发丝裂纹 送信 ×3(T4)、帮咪咪清点货架(T5)。湖面倒影延迟 1 帧;一封信署名闪过乱码 0.2 秒 S1,全天仅 2 处极轻异常
Day 3 满格 采莓果(T6)、湖畔野餐(T7)。幸福值首次可达 100 → 首次"过曝"演出;夜梦首次闪切白色病房 1 秒 可达 S3→S4 首触
Day 4 完美的重复 任务 T8T10 与 Day 1 的 T1T3 逐字相同,NPC 台词一字不差。玩家打破流程时 NPC 只是微笑摇头 S2S3,重复本身即恐怖
Day 5 被允许的自由 村长宣布"自由日":系统允许你拒绝一次任务(T11 帮厨、T12 擦公告板,可拒绝,拒绝被记录)。古井与雾墙首次可交互 S3,觉知路线开闸
Day 6 加速 庆典准备(T13 挂彩带)、任务「保持微笑 60 秒」(T14:原地站立 60 秒,镜头缓慢拉近,全村 NPC 转身注视)。傍晚脚本雨——村里第一次下雨,NPC 假装看不见雨 S3S4 常驻
Day 7 分歧日 无常规任务,仅 T15「参加第 413 届丰收庆典」。按幸福/觉知/线索状态走向四结局之一 按结局路线

阿福每日公告(逐字实现,注意措辞逐日滑移):

  • D1「早上好呀!今天的幸福任务贴在板上啦。祝你开心!」
  • D2「早上好呀!新的一天,新的幸福。祝你开心!」
  • D3「早上好!今天要把幸福装得满满的哦。要开心!」
  • D4「早上好呀!今天的幸福任务贴在板上啦。祝你开心!」(与 D1 逐字相同)
  • D5「早上好。今天是自由日,你可以自由地选择幸福。要开心哦。」
  • D6「明天就是庆典了。大家都会到场,大家都会微笑。你必须开心。」
  • D7「庆典开始了。来吧。」

6. 核心系统

6.1 幸福值(明线)

  • 范围 0100,开局 30。不显示数字:HUD 左上角一朵向日葵表盘,12 片花瓣按值点亮;满格后花心逐渐浮现过熟的黑籽。
  • 上升:完成任务 +10~15(按 §7 任务表);对话选温柔选项 +2;小互动(浇花/喂食/摸头)+1,每类每日上限 3 次。
  • 下降:仅"悲伤行为"(§6.3)。无自然衰减——世界不允许幸福随时间流失。
  • 满格态(=100):进入"强制维持",小额扣分不再生效而是累积进隐藏溢出池,池满 15 点触发一次负片闪帧;世界进入 S4。
  • 反制:幸福 <30 持续 2 分钟(真实时间)→ 强制触发"欢乐庆典"事件把幸福拉回 50;事件进行中可从场景边缘走离逃脱,逃离计入 E4 计数。

6.2 觉知值(暗线,永不显示)

  • 范围 0100,开局 0。只升不降。
  • 上升来源:发现线索(每处 +8,见 §8);悲伤行为(每次 +3);对话选"迟疑/否定"选项(+2);注视古井或雾墙持续 5 秒(各每日 1 次,+3)。

6.3 悲伤行为(封闭清单,5 项)

拒绝任务;对话选否定选项;连续 10 秒不移动且不在任务点(发呆);对同一 NPC 一天内对话 ≥5 次(纠缠);雨天(Day 6)站在雨里 ≥10 秒。每次触发:幸福 −5、觉知 +3,并且最近的 NPC 会转头看向玩家一次。

6.4 侵蚀阶段矩阵(唯一真源)

阶段由幸福值实时映射,由全局 CorruptionDirector 单例统一广播;任何视听崩坏不得绕过该矩阵私自触发(脚本化剧情演出除外,须在 §7 任务表登记)。

阶段 幸福值 画面 音频(§6.6 NPC 表情 文本(§6.5 UI
S0 020 饱和度 0.90(微灰:低幸福反而接近真实) BGM 原速原调,鸟鸣清晰 smile 正常 向日葵 02 瓣
S1 2150 饱和度 1.00 基准 BGM 正常 smile 正常 36 瓣
S2 5180 饱和度 1.15 playbackRate 0.97 眨眼间隔 2s→5s 偶发标点重复(每 80 句 1 次) 79 瓣
S3 8199 饱和度 1.30 + 轻晕影 playbackRate 0.92 + 低通 8kHz flat 档出现;静止 NPC 面朝玩家 每 50 句 1 个同音错字 1012 瓣,花瓣过亮
S4 100 饱和度 1.40 + 晕影加深 + 随机单帧负片(概率 0.4 次/分钟,时长 1 帧) playbackRate 0.84 + 低通 4kHz + 鸟鸣静音 off 档闪现(0.6 次/分钟,0.1 秒);群演 1 只停摆 错字加密 + 咪咪句尾标点 ×3 花心黑籽显现

NPC 个体偏移:表中阈值对每个 NPC 加上其 §4 的偏移量(咪咪 −10 最早崩,圆圆 +15 最晚崩,芙医生与龟爷爷不参与)。

6.5 文本腐蚀

同音错字对照表(全 10 组,逐字实现):幸福→辛福 / 开心→开欣 / 美好→美妤 / 大家→大伽 / 微笑→微效 / 明天→名天 / 甜→恬 / 阳光→央光 / 朋友→棚友 / 永远→泳远。腐蚀在对话渲染层实施(原文案保持干净,运行时按阶段替换),优先命中咪咪的台词。

6.6 BGM 与音效

  • 用 Web Audio 程序生成一段 8 小节的 8-bit 风格治愈循环旋律(方波主旋律 + 三角波低音),无外部音频文件。
  • 侵蚀联动:playbackRate 与低通滤波按 §6.4 矩阵取值;S4 时鸟鸣声部静音但双子鸟动画仍在张嘴。
  • 音效仅 4 个:对话哔哔声、任务完成叮声、黄昏钟声、E2 结局的单一心电监护滴声。全部程序合成。
  • 「突然的安静」:Day 6 保持微笑 60 秒任务的第 40–60 秒,所有声音渐隐至零。

7. 任务清单(封闭,15 个)

ID 任务 幸福奖励 备注
T1 D1 从圆圆处取蜂蜜面包送给大宝、咪咪、龟爷爷 +15 教学
T2 D1 给广场花坛浇水 ×3 +10
T3 D1 与任意三位村民问好 +10
T4 D2 替大宝送信 ×3(收件人:圆圆、咪咪、芙医生) +15 第 3 封信署名乱码 0.2 秒(C4)
T5 D2 帮咪咪清点货架 +10 货架上同一商品重复 9 格(C5 可发现)
T6 D3 去花田采莓果 ×5 +10
T7 D3 湖畔野餐(走到野餐布触发过场) +15 湖面倒影演出
T8T10 D4 与 T1T3 逐字相同 同上 刻意恐怖谷
T11 D5 帮圆圆揉面(可拒绝) +10 / 拒绝记录
T12 D5 擦拭公告板(可拒绝) +10 / 拒绝记录 擦到一半浮现旧字迹(C6
T13 D6 在广场挂彩带 ×4 +10
T14 D6 保持微笑 60 秒(原地站立,镜头缓慢拉近,全村注视) +15 40 秒起声音渐隐
T15 D7 参加第 413 届丰收庆典 结局分歧点

8. 线索清单(封闭,9 处,每处觉知 +8)

ID 位置/来源 内容 可发现时段
C1 小屋床头日历 每一页都是同一个日期 D2 起
C2 面包房配方纸背面 手写小字:「按疗程配比。甜度:最大。」 D3 起
C3 邮筒旁散落信件 所有邮戳是同一天 D2 起
C4 T4 第 3 封信 署名闪过乱码「PT-0▓」 D2 当日
C5 杂货店货架 同一商品重复排列,标签全部空白 D2 起
C6 公告板旧字迹 「第 412 届丰收庆典」上覆盖着更早的「第 411 届」「第 410 届」 D5T12 中)
C7 古井 井底回声:极轻的监护仪滴声(靠近并交互 5 秒) D5 起
C8 诊所 芙医生桌上的表格抬头被手肘挡住,只露出「…谷情绪疗…」 D5 起
C9 龟爷爷对话链 三段递进:「湖水一直很平静」→「面包一直是那个味道」→「孩子,今天是第几个今天?」 D2/D4/D6 各一段

9. 结局(封闭,4 个)

Day 7 庆典按以下优先级判定(自上而下第一个满足者生效):

结局 条件 演出
E4 静默 Day 5–7 幸福持续 ≤10 且累计逃离欢乐庆典 ×3 庆典无人出席。空广场,彩带在没有风的空气里飘。字幕:「系统检测到疗程无效。」黑屏
E3 苏醒 觉知 ≥70 且线索 ≥6/9,庆典中走向雾墙 雾墙裂开成白色走廊 → 病房 → 病历特写(蜜糖谷情绪疗养中心 / 姓名:玩家输入名 / 编号 PT-07 / 疗程时长:真实游玩时长)→ 最后一帧:主角头像的微笑消失,变成一张疲惫而真实的脸。窗外,一只灰色的、真的麻雀
E2 回收 觉知 3069 庆典高潮中画面骤停,负片 2 秒,心电滴声一响。回到 Day 1 清晨的床上,日历翻回同一天。字幕:「疗程重新开始。」
E1 糖衣 觉知 ≤29 且幸福 ≥90 庆典圆满。全村微笑合影定格,饱和度缓慢推到 1.5。字幕:「从此,每一天都很幸福。」「每一天。」

任一结局落幕后停在结束画面,提供「回到标题」按钮(重开即从 Day 1 全新开始,无继承)。

10. 场景与地图清单(封闭,10 个,Tiled 制作导出 JSON

场景 尺寸(瓦片) 要点
小满小屋(室内) 12×8 床(睡觉触发过日)、床头日历(C1
村广场 30×20 公告板、花坛、双子鸟树、庆典场地;连接所有场景的枢纽
面包房(室内) 15×10 柜台、烤炉、配方纸(C2
杂货店(室内) 15×10 货架(C5
诊所(室内) 12×8 芙医生、桌上表格(C8
湖畔 24×16 长椅(龟爷爷)、野餐布、湖面倒影演出
花田 20×14 莓果丛(T6)、浇花点
古井空地 14×10 古井(C7),D5 前交互被 NPC 温柔劝离
雾墙边界 20×8 村庄尽头的雾,D5 前不可接近;E3 入口
白色层 20×6 + 10×8 走廊 + 病房,仅梦境闪切与 E3 使用;去饱和白灰色板

统一结构:ground / obstaclescollides=true/ objectsspawn、NPC 点位、door、交互点)。所有室外场景经村广场互通,门与出入口在两侧地图成对出现。

11. 美术规范(Aseprite 制作,全部原创)

  • 瓦片 16×16,总 tileset ≥ 64 瓦片:草地、石板路、湖水、花丛、莓果丛、树、房屋墙/顶/门、室内地板、家具(床/柜台/烤炉/货架/桌椅)、井、雾、白色层的墙地。
  • 主角:16×24/帧,4 朝向 × 4 帧行走(walk-down/up/left/right),每朝向第 1 帧兼待机;另有一张对话头像(微笑)与 E3 专用「真实的脸」头像,各 1 帧。
  • 具名 NPC ×7:各 16×24 立绘 3 档表情(smile/flat/off);off 档与 smile 档的差异控制在 1–2 个像素(一只眼睛低 1 像素、嘴角多 1 像素),不许画成鬼脸。双子鸟另配 2 帧张嘴动画。群演 ×5:各 1–2 帧循环。
  • 色板:村庄用糖果色(草绿/奶油黄/蜜糖橙/天空蓝);白色层独立灰白色板。无抗锯齿、无描边渐变。
  • 禁止使用任何现成素材、素材包或开源 tileset。

12. 技术架构

  • Phaser 3 + TypeScript + Vitenpm run build 产出纯静态 dist/npm run preview 本地游玩。
  • 逻辑分辨率 320×180,整数倍放大居中,pixelArt: true,禁用纹理平滑。
  • 场景:BootScene(加载)、每张地图一个 Scene、常驻 UIScene(对话框、向日葵表盘、提示)、EndingScene
  • CorruptionDirector:普通 TS 单例 + 事件发射器,持有幸福/觉知/日期/任务标记/线索集合/侵蚀阶段,是全部状态与视听参数的唯一真源;饱和度与晕影用 Phaser 相机 postFXColorMatrix / Vignette),负片闪帧用 ColorMatrix negative 单帧切换。
  • BGM 与音效按 §6.6 用 Web Audio 程序合成,playbackRate 与 BiquadFilter 低通由 CorruptionDirector 驱动。
  • 移动速度 96 像素/秒;相机跟随并钳制地图边界;靠近可交互对象 ≤24 像素出「按 E」提示。
  • 对话系统:底部通栏对话框(说话者名 + 头像 + 文本,E 推进),支持选项(温柔/迟疑/否定三选,影响数值);文本渲染层实施 §6.5 腐蚀替换。
  • 无 localStorage、无外部网络请求、无外部音频/字体文件。

13. Debug 面板(服务验收,必须实现)

按反引号键 ` 开关。功能:直接设置幸福值、觉知值、当前日(1–7)、传送到任意场景、置齐全部线索、强制触发四个结局之一。面板不影响正常游玩(默认关闭,无 UI 痕迹)。

14. 验收清单(共 20 条)

  1. 打开页面进入标题画面,输入名字(留空默认小满)后进入 Day 1 小屋。
  2. WASD/方向键移动、四向动画、待机帧、碰撞、相机钳制全部正确。
  3. 10 个场景全部可达,门与出入口双向正确,NPC 站位符合 §4。
  4. 向日葵表盘随幸福值点亮花瓣,满格后花心出现黑籽;全程不显示任何数字。
  5. Day 1–7 每日结构完整:公告→任务→黄昏→睡觉→梦境过场→次日;阿福公告与 §5 表逐字一致。
  6. 15 个任务全部可完成,奖励数值与 §7 一致;D4 任务与台词与 D1 逐字相同。
  7. 悲伤行为 5 项均按 §6.3 生效(数值变化 + 最近 NPC 转头)。
  8. 幸福 <30 持续 2 分钟触发欢乐庆典强制事件,可逃离且逃离被计数。
  9. 侵蚀矩阵:用 Debug 面板分别置幸福 10/40/70/90/100,画面饱和度、NPC 表情档、文本腐蚀密度、BGM 变化肉眼/肉耳可辨且与 §6.4 一致。
  10. 错字替换与 §6.5 对照表一致,且优先出现在咪咪台词中。
  11. 9 处线索全部可发现,各 +8 觉知;C9 三段按 D2/D4/D6 递进。
  12. 古井与雾墙在 D5 前不可交互(被劝离),D5 起可交互。
  13. Day 6 的 T14:站立 60 秒、镜头缓慢拉近、全村注视、40 秒起声音渐隐至零。
  14. Day 6 傍晚脚本雨出现,NPC 台词对雨零反应;站雨中 ≥10 秒计悲伤行为。
  15. 四结局用 Debug 面板分别强制触发,演出与 §9 一致;E3 病历显示输入的名字与真实游玩时长,主角头像换为「真实的脸」。
  16. 自然游玩(不开 Debug)可在 25–35 分钟内到达任一结局。
  17. BGM 为程序合成循环,随阶段变调变闷;S4 鸟鸣静音而双子鸟仍张嘴;T14 的突然安静生效。
  18. 任意窗口尺寸整数倍缩放,像素锐利无接缝;全程控制台零报错。
  19. 全部素材与地图为本项目内自制(README 说明制作方式),无外部资产。
  20. README.md:启动方式、按键、Debug 面板说明、素材与地图制作流程。

15. 明确不做

战斗、背包/合成 UI(关键道具仅剧情标记)、存档与读档、成就、多人、移动端触控、配音、真实音频文件、二周目专属内容、天气系统(雨仅为 Day 6 一次脚本演出)。