剧本怎样变成程序能读的数据:节点、选项、条件与结果
把剧本接入程序,关键不是把 Word 文件复制进 JSON,而是建立一份稳定的叙事数据契约。每个节点描述播放什么、何时出现交互;每个选项描述显示条件、玩家意图、状态结果和目标节点。文字、媒体和逻辑相互引用,却各自拥有可追踪版本。

开篇导读
把剧本接入程序,关键不是把 Word 文件复制进 JSON,而是建立一份稳定的叙事数据契约。每个节点描述播放什么、何时出现交互;每个选项描述显示条件、玩家意图、状态结果和目标节点。文字、媒体和逻辑相互引用,却各自拥有可追踪版本。
从稳定 ID 开始
章节、场景、节点、选项和资产都需要唯一 ID。显示标题可以改,ID 一旦进入制作就不重用。例如节点 C02_S04_N030,选项 C02_S04_N030_O2,视频 C02_S04_N030_main_v07.mp4。程序、字幕、埋点和缺陷报告都用同一标识。
ID 不包含演员名、情绪或最终台词,因为这些会变化。废弃 ID 留在变更记录中,避免旧存档或日志误指新内容。
节点结构只承担一种职责
节点数据可包含 id、media、entryConditions、onEnter、interactions、onExit、fallback 和 tags。媒体字段引用资产清单,不直接混入本机绝对路径;条件只读取状态;效果只写入允许的状态。
{
"id": "C02_S04_N030",
"media": "VID_C02_S04_N030_MAIN",
"entryConditions": ["evidence_recording == true"],
"interactions": ["C02_S04_N030_O1", "C02_S04_N030_O2"],
"fallback": "C02_S04_N040"
}
示例只表达边界,具体格式可用 JSON、表格导出或叙事脚本。重点是同一事实只有一个权威位置。
选项同时记录显示与后果
一个选项需要文案键、可见条件、可选条件、计时规则、状态效果和目标节点。可见但不可选时,应给玩家原因;完全隐藏时,不应留下空白按钮。文案使用本地化键,不把中文原句当逻辑判断。
效果最好采用受限操作,如设置布尔值、增加资源、改变关系阶段。不要允许任意脚本藏在每个选项中,否则编剧数据会变成无法审计的程序。复杂行为通过有名字的命令交给运行时实现。
条件必须可验证、可解释
条件引用变量表中的正式名称,并限制比较类型。布尔值不与字符串混用,枚举只接受合法值,数字设置上下界。编辑器或构建脚本在导出时检查未知变量、不可达节点、循环无出口和目标缺失。
复杂条件拆成命名规则。例如 can_publish_truth 由关键证据齐全、记者仍合作、资源足够组成。测试日志同时输出规则结果和基础值,才能解释玩家为什么没看到某个选项。
媒体清单与叙事数据解耦
节点只引用逻辑资产 ID;资产清单再映射不同平台、语言和清晰度的文件。这样剪辑从 v06 换成 v07,不需要改分支逻辑;移动端使用较低码率,也不复制一套节点。
清单至少记录文件、校验值、时长、分辨率、音轨、字幕、版本和审核状态。运行时加载前可验证校验值和时长,减少错片或截断进入正式包。
设计明确的执行顺序
规定节点进入、媒体准备、播放、显示选项、提交选择、写入效果、离开节点的顺序。状态先写还是先跳转,会影响下个节点的入口判断。推荐把选择提交做成原子事务:验证仍可选,写入结果,记录日志,再跳转;失败则不改变状态并给出恢复。
超时、跳过、读档和重复点击也要经过同一状态机。按钮提交后立刻锁定,防止双击写两次;退出重进时根据已提交标记恢复,而不是再次发奖。
建立数据校验和可读日志
每次构建自动检查 ID 唯一、引用存在、至少一个出口、变量类型正确、本地化键齐全、媒体可找到。警告与错误分级:缺少可选备注可警告,目标节点不存在必须阻止构建。
运行日志用结构化事件记录会话、节点、选项、前后状态摘要、时间和版本。日志不能包含不必要的个人信息;调试构建可以更详细,正式分析事件遵守隐私和同意要求。
让非程序人员也能审查
机器可读不等于人难读。由同一数据生成节点表、分支图和可玩预览,编剧检查台词,制片检查资产,测试检查路径。任何手工生成的副本都标明不可回写,避免多人维护多份真相。
下一步:选十个节点定义最小数据模式,写出一个合法和三个故意错误的样例;让构建检查准确拦截未知变量、悬空出口和缺失媒体后,再导入全篇。


