用途:本技能为视觉小说(Visual Novel)类型游戏提供设计蓝图,聚焦分支叙事、有意义的选择与体验优化(QoL)功能,面向使用 Godot 引擎的开发与写作团队。
核心循环:视觉小说的核心流程为——阅读(消费叙事文本与角色对话)、抉择(在关键节点做出选择)、分支(故事依据选择产生分歧)、后果(立即反应或长期标记变化)、结局(抵达多个结局之一)。
设计禁忌(NEVER 规则):
- 不要制造“虚假选择”——若所有选项立即导向同一结果,玩家会有被欺骗感。即使后续剧情汇合,也应提供对话差异或标记变化。
- 不要省略自动播放(Auto)、快进(Skip)与存档/读档功能——这些在 VN 类型中是强制性的,玩家会为体验全部路线而重复游玩。
- 不要显示大段未断开的文本——6 行以上会令人生畏,建议每对话框限制在 3-4 行,并用角色反应或停顿打断。
- 不要在脚本中硬编码对话——编剧不是程序员,应使用 JSON/CSV/自定义格式,硬编码会导致叙事迭代困难。
- 不要忽略回滚/历史记录——玩家可能误点选项或想重读,缺失回滚会令人沮丧;应在每一行之前保存状态并使用历史栈。
- 不要忽略 BBCode/富文本效果——纯文本枯燥,可用 [wave]、[shake]、[color] 等效果强化情感表达。
阶段与技能划分:
- 文本与 UI(ui-system、rich-text-label):对话框、BBCode 效果、打字机效果。
- 逻辑(json-parsing、resource-management):加载脚本、管理角色数据。
- 状态(save-load-systems、dictionaries):标记、历史、持久化数据。
- 音频(audio-system):语音、背景音乐过渡。
- 打磨(tweening、shaders):角色过渡、背景效果。
架构概览:
- Story Manager(驱动者):解析脚本并指挥其他系统。示例代码中定义了 current_script、current_line_index、flags,提供 load_script() 读取 JSON 脚本、display_next_line() 处理选择或显示角色与文本。
- Dialogue UI(打字机效果):show_text() 通过 Tween 将 visible_ratio 从 0 动画到 1,按文本长度控制速度。
- History & Rollback:维护 history 数组,调用 save_state_to_history() 保存行索引、标记、背景与音乐副本,rollback() 弹出并恢复状态。
关键机制实现:
- 分支路径(Flags):make_choice() 依据 choice_id 修改关系标记并跳转标签,例如 be_nice 增加 relationship_alice、be_mean 减少并跳转不同标签。
- 脚本格式(JSON vs Resource):JSON 便于外部编写、格式标准;自定义 Resource 类型安全、可在 Inspector 中编辑;文本解析器(类 Markdown 语法)对编剧更简单。
常见陷阱与修复:
- 文本过多:限制每行 3-4 行。
- 虚假选择:即使主线汇合,也使用对话小变化。
- 缺少体验优化:Skip、Auto、Save 是类型必备功能。
Godot 专用提示:
- RichTextLabel:使用 BBCode 的 [wave]、[shake]、[color] 增加情绪。
- Resource Preloader:VN 资源较重(4K 背景),应异步加载场景或在章节间使用加载画面。
- Dialogic:这是 Godot VN 的行业标准插件,需要完整工具套件时使用,也可自建轻量方案。
适用场景:Godot 引擎上开发视觉小说、文字冒险或分支剧情游戏,尤其是需要多结局、路线重玩与存档管理的项目。
限制:资料为英文技术蓝图,未提供具体安装命令、收费与价格信息、完整代码仓库地址之外的许可说明;部分细节(如 Resource 自定义格式的具体实现、音频过渡参数)暂未提供。