11.2 台词的条件渲染
同一节点在不同状态下渲染出不同台词,靠的是 line_when 与 line_else 两个字段。本节把渲染规则写成四分支表,用 S 层脚本枚举全部 50 个渲染分支:48 个节点里只有 2 个带 line_when,其中 d_lt_2 声明了条件却没给 line_else,属规格层面的欠声明,回落到 line。
tag
同一节点在不同状态下渲染出不同台词,靠的是 line_when 与 line_else 两个字段。本节把渲染规则写成四分支表,用 S 层脚本枚举全部 50 个渲染分支:48 个节点里只有 2 个带 line_when,其中 d_lt_2 声明了条件却没给 line_else,属规格层面的欠声明,回落到 line。
对话节点是字段化的记录:节点层八个字段、选项层五个字段,其中 goto 是选项的独立字段而非效果算子。本节给出两张字段表,用 S 层脚本校验 115 条跳转全部命中已声明节点并输出节点度数表,再用 P 层测试断言未知选项被拒绝、推进是纯函数。
把好感度沿采样路径画成曲线后,「形状」也成了一个可分类的量:单调上升 / 先升后平 / 单调下降 / 波动 / 全程不变,五类互斥。S 层统计 2000 条路径的形状占比并用纯 xml.etree 出图,B 层把初始值整体上下扰动 ±10,观察门限跨越率的相变——−10 档新增 9 条死门,全程只软告警不硬失败。
阈值门就是条件里的 ['aff', 名, '>=', 整数]:它可能长在选项的 when、节点的 line_when 或结局的 when 上。S 层把全规格 15 条门限抽成一张表,在 20000 条采样路径上给出每条门限的跨越率、最高到达与缺口,基线 0 条死门;P 层断言门限未达时选项不可选、恰好达到时可选的边界行为。
好感度只有两个动作:从 characters[].affinity.init 起一个整数,之后每次写入都走 add 再夹回 [0,100]。S 层静态清点出 4 个变量共 66 次写入、8 种增量,并点出声明了却从不推进的 lin 与 hai;P 层用 300 条采样路径断言值域恒定,并以「把某个 add 放大到百万级仍被夹回」的负例证明 clamp 不是冗余算子。
一份散文大纲要变成可执行的规格,中间隔着一层「骨架」:meta 头部加九段内容字段。本节给出散文语句到字段的逐句映射表,列出 world、characters、beats、scene_graph、dialogue、conditions、state、endings、metrics 九段各自承载什么,并用一份 S 层脚本按实际键序逐段打印规模摘要。
叙事可以被拆成四个最小构成:世界(派系、地点、设定、规则)、角色(目标、恐惧、秘密、弧光)、事件(幕、节拍、场景、对话节点)、选择(选项与跳转)。本节用《雾港夜航》的 story_spec.json 把四者逐项清点:4 个派系与 14 个地点、6 个角色、16 个节拍与 48 个对话节点、115 个选项,并跑通一份 S 层清点脚本。
《叙事策划与叙事工艺》卷一《叙事结构与可执行规格》目录:16 章 48 节,把一个故事写成可执行规格 story_spec.json,让同一份规格被 S 层穷举、P 层确定性内核与 B 层参数扰动三处消费,产出逐位一致的状态摘要。本页给出七处分工说明、六档可运行性口径、《雾港夜航》规格总览与全书 16 章 48 节完整清单。
《叙事策划与叙事工艺》卷一《叙事结构与可执行规格》全 50 篇。它回答一个问题:一个故事能不能先被写成一份规格,再让台词文本成为这份规格的渲染产物?全书围绕虚构的三夜悬疑叙事《雾港夜航》与工具链 inkwell 展开,唯一真源是 config/story_spec.json 的十段字段:meta(三幕)、world(4 派系 stance 矩阵、14 个地点的解锁条件、6 条 lore 的揭示旗标)、characters(6 个角色的目标/恐惧/秘密/好感度/弧光)、beats(16 个节拍与整数张力)、scene_graph(14 个节点与 16 条边,其中 5 条带条件)、dialogue(48 个对话节点、115 个选项、5 个结局)、conditions(嵌套数组文法,6 种形式)、state(18 个 flag、4 个好感度、9 个物品)、endings 与 metrics。第一部分(第 1–4 章)把故事还原成结构:四个最小构成、九段骨架、文本是渲染的分工、字段全表与版本迁移、世界观与角色的形式化;第二部分(第 5–8 章)把结构还原成图与曲线:弧光的可达性、节拍与三种结构模型、场景图的可达性与解锁、分支拓扑与假选择判定;第三部分(第 9–12 章)把条件与数值写透:条件文法与写入域、状态变量的闭包检验、好感度阈值门与曲线形状、对话树的遍历与校验、文本模板与条件变体;第四部分(第 13–16 章)做校验与装配:结构/语义/一致性三层校验、叙事失调的形式化、工具链的目录分工与流水线,最后装配成一份规格三处消费的完整链路并交付卷二。按章节提供仿真、逻辑内核与原型;当前试点阶段已有复核记录,完整项目的配置、共享模块和交付验收仍在补齐。全书数字均来自本机实跑:可达状态 9895423 个,分支覆盖率 1000‰,不可达节点与不可达选项均为 0。
按领域与学习阶段整理的在线电子书与创作手记。覆盖 Rust、Lua、TypeScript、Python、Java(Spring Boot)、Go、AI Agent、MMO 服务器开发(Go 主线 + Java 21 双栈对照,四卷本 180 篇)、游戏开发(含 Cocos 四卷本与《游戏引擎实现原理》四卷本)、SLG 游戏产品设计(产品架构与经济系统 + 数值平衡与商业化运营,两卷本 100 篇)、小游戏开发实战(市场品类与产品设计 + 引擎实现与体验打磨 + 上线变现与长线运营 + 商业运营实战 + 跨平台发行与出海,五卷本 250 篇)、游戏美术与技术美术(美术制作与视觉规范 + 技术美术与管线工程 + 风格与品类美术实战,三卷本 150 篇)、游戏设计(玩法机制与可执行规格 + 策略、涌现与体验度量 + 原型、可玩性与品类,三卷本 150 篇)、计算机图形学(几何、变换与光栅化 + 着色、光照与纹理 + 光线追踪与全局光照,三卷本 150 篇)、叙事策划与叙事工艺(叙事结构与可执行规格 + 叙事引擎与分支系统 + 叙事体验与路径度量,三卷本 150 篇)与文学创作,从阅读指南进入,或按全书目录查找章节。
独立游戏叙事设计完整实战指南,涵盖分支对话系统设计、环境叙事技巧、角色塑造方法、叙事与玩法融合策略,附Twine工具教程、对话数据结构模板与叙事测试方法。