故事系统
故事系统是 Alfheim 的核心模块,用于编写、组织和测试游戏剧情。它提供可视化的节点图编辑器、内置对话编写工具和即时预览功能。
功能概览
- 以 Episode(章节)为单位组织故事
- 节点图可视化编辑,支持 8 种节点类型
- 内置对话编辑器,支持说话人选择和脚本编辑
- 条件分支与随机分支
- 章节级变量系统
- 文件夹分组管理
- 即时测试运行
三个工作标签
故事面板顶部有三个标签页:
故事规划
主要的故事编辑环境,包含节点图画布和相关面板。
世界树(Yggdrasil)
时间线与日历系统,详见 Yggdrasil 时间线。
测试运行
以玩家视角体验当前故事,详见本页的 测试运行 章节。
Episode 管理
Episode(章节)是故事的基本组织单位。每个 Episode 是一个独立的故事文件,包含自己的节点图和变量。
创建 Episode
- 在故事规划页面,点击顶部的 故事选择器。
- 点击 新建故事。
- 输入 Episode 名称,确认创建。
切换与删除
- 通过顶部下拉菜单在不同 Episode 之间切换。
- 在故事选择器中可以删除不需要的 Episode。
文件夹分组
节点可以通过文件夹进行分组整理:
- 在左侧的 文件夹 面板中点击新建文件夹。
- 为文件夹命名。
- 将节点拖入文件夹中归类。
未分配文件夹的节点会显示在「未分类」分组中。
节点类型
故事由不同类型的节点连接而成。通过工具栏上的 添加节点 菜单创建新节点。
开始节点
每个 Episode 的入口点。每个 Episode 只有一个开始节点,故事从这里开始执行。
对话节点
最常用的节点类型,用于承载角色对话和旁白。对话节点可以包含多行台词,每一行可以指定不同的说话人。
条件节点
根据变量的值决定故事走向。设置判断条件后,条件节点会输出不同的分支路径。
随机节点
从多个输出分支中随机选择一条路径执行,适合需要随机性的场景。
设置变量节点
修改变量的值。可以对整数、浮点数、字符串或布尔值变量执行赋值或运算操作。
事件节点
触发游戏中的特殊事件,如场景切换、播放音效等。
注释节点
用于在节点图中添加备注和说明,不影响实际游戏运行,仅作为创作者的参考。
结束节点
标记故事的结束点。一个 Episode 可以有多个结束节点,代表不同的结局。
节点图编辑
连接节点
拖动节点的输出端口到另一个节点的输入端口即可建立连接。连线表示故事的流转方向。
编辑与查看模式
工具栏提供两种模式切换:
- 编辑模式:可以移动节点、创建连接、修改内容。
- 阅览模式:锁定画布,只能查看不能修改,适合审阅时使用。
节点检视器
选中任意节点后,右侧的 检视器 面板会显示该节点的详细信息:
- 节点 ID(可复制)
- 节点名称
- 节点类型
- 进入条件(可选)
- 变量操作(可选)
- 对话预览(仅对话节点)
- 备注
对话编辑
双击对话节点或在检视器中点击 编辑 即可进入对话编辑器。
编剧模式
面向故事创作者的所见即所得编辑环境:
- 逐行编写台词
- 为每行选择说话人(角色或旁白)
- 添加分支选项
程序模式
面向需要精细控制的高级用户:
- 使用脚本编辑器直接编辑对话数据
- 支持语法高亮和自动补全
章节变量
每个 Episode 可以定义自己的局部变量,用于该章节内的条件判断和状态追踪。
- 在检视器的 章节变量 区域点击添加。
- 输入变量名称、选择类型(整数、浮点数、字符串、布尔值)。
- 设定默认值。
章节变量与全局变量相互独立。如需跨章节共享的变量,请使用 变量系统 中的全局变量。
章节角色
在故事规划页面可以管理当前 Episode 使用的角色:
- 打开 章节角色 面板。
- 搜索并添加项目中已有的角色。
- 添加后的角色可以在对话编辑中作为说话人选择。
测试运行
切换到 测试运行 标签页,可以像玩家一样体验故事。
界面组成
- 对话框:显示当前台词,点击推进对话。
- 角色舞台:展示说话角色的立绘。
- 选项面板:出现分支选项时供玩家选择。
- 节点信息面板:显示当前所在节点的调试信息。
- 播放控制:快进、暂停、重置等。
- 调试控制台:查看变量状态和执行日志。
使用方法
- 在故事规划中选择要测试的 Episode。
- 切换到测试运行标签页。
- 故事从开始节点自动运行,点击对话框推进剧情。
- 遇到分支时在选项面板中做出选择。
- 使用调试控制台监控变量变化。
提示
- 善用注释节点在节点图中标记重要信息,方便团队协作。
- 定期使用测试运行检查故事流程,确保所有分支路径都能正常走通。
- 文件夹分组可以大幅提高大型项目中的节点管理效率。
- 节点 ID 可以在检视器中复制,方便在脚本中引用。