一键运行:
npm install
npm run dev浏览器访问 http://localhost:5173 即可体验。
- 故事:8 章章回体(三幕),双视角切换(她视角 / 我视角),每章固定节奏:章头旁白 → 她视角 → 我视角 → 2 个生活感轻选择 → 1 次“誓言措辞关卡”(误会澄清)→ 章尾旁白 → 下一章。
- 数值:
closeness靠近度、misunderstanding误会值,范围 0–100,所有选择与澄清关卡只改这两条。 - 结局:根据靠近/误会自动分流到 4 个结局(true/good/bittersweet/bad),结局 CG 会展示。
- 节奏关键词:命运点火(CH1–3)→ 远征与誓言(CH4–6)→ 审判与归档(CH7–8)。主题是“时机也许不对,但我们依然勇敢并肩”。
- 章节字段:
id/title/entry/totalSteps/nodes[] - 节点类型:
narrate:旁白,字段textsay:对白,字段speaker、textchoice:分支,字段prompt、options[],每个选项可带closenessChange、misunderstandingChangemisunderstandingChallenge:误会澄清玩法,字段heardVersion、intendedVersion、options[](三种措辞风格,带数值变化与反馈)set:设置 flags 或数值goto:跳转到指定章节/节点endingGate:根据当前靠近/误会自动分流到结局节点ending:结局节点,字段endingType、title、text、可选cg
- 资源引用:节点可填
bg、cg、sprites(立绘数组)、props(道具数组)。
- 全部图片放
src/图片/目录,文件名前可带前缀“已移除背景的”(会自动忽略)。 - 自动分类规则(
src/assets/autoAssets.ts):ui_*→ UI 背景(title/menu/chapter/select/save_load/settings)bg_*→ 背景cg_*→ CG / 结局 CGsprite_f_*/sprite_m_*→ 立绘(前缀会被去掉,key 形如f_calm/m_companion)prop_*→ 道具
- 解析:
resolveAsset(type, key)(见src/engine/storyAssetResolver.ts)自动取 URL;缺失资源在 DEV 会 console.warn。 - DEV 自检:控制台会输出 BG/CG/立绘/道具是否存在且被剧情引用,方便检查遗漏。
src/pages/Title.tsx:标题/菜单页(title_bg_16x9 + menu_bg_16x9)src/pages/ChapterSelect.tsx:章节选择(chapter_select_bg_16x9)src/pages/Game.tsx:主玩法页,支持对话、选择、误会澄清、结局展示src/components/HUD.tsx:靠近度/误会值条、章节进度、视角标记src/components/MisunderstandingChallenge.tsx:两句对照 + 三选一措辞 + 数值反馈src/components/SaveLoadModal.tsx:存档/读档(save_load_bg_16x9)src/components/SettingsModal.tsx:设置面板(settings_bg_16x9)src/components/OverlayEffects.tsx:背景/CG/立绘/道具叠加与提示
- UI:title_bg_16x9、menu_bg_16x9、chapter_select_bg_16x9、save_load_bg_16x9、settings_bg_16x9
- 背景:ch1_bench_night/dawn、ch2_store_aisle_night、ch2_dorm_corridor_night、ch3_library_midnight/road_night、ch4_airport_hall/plane_window_night、ch5_radio_desk_night/split_rooms_abstract、ch6_city_bike_night/train_car_night/cafe_glass_wait、ch7_phone_low_abstract/rain_window_night、ch8_editing_table/archive_room
- CG:ch1_pre_kiss_double_exposure、ch2_mixing_hands_closeup、ch3_library_snack_push、ch4_airport_gift_exchange、ch4_plane_tears、ch5_overnight_call_split、ch6_cafe_outside_wait、ch7_phone_1percent_unsent、ch7_bench_redline_burn、ch8_align_film_timeline、ch8_stamp_archive
- 结局 CG:end_true_bench_dawn_together、end_good_wrist_uncovered、end_bittersweet_archive_corridor、end_bad_radio_power_off
- 立绘:女主 f_calm/f_heartbeat/f_defensive/f_guilty/f_hold_tears/f_breaking/f_soft_smile/f_resolve;男主 m_companion/m_light_joke/m_explain/m_tired/m_silent_here/m_swallow_words/m_hurt/m_clear_resolve
- 道具:mix_drinks_set、audio_box、headphones、radio、editing_tools_set
- 剧情数值变更请保持小步(±1~3),更直观。
- 如需扩展新章节/结局,继续复用
endingGate→ending模式即可。 - 不要新增图片文件;特效可用 CSS/Canvas。