posts

《叙事策划与叙事工艺》卷一《叙事结构与可执行规格》· 全书目录与章节索引(50 篇)

《叙事策划与叙事工艺》卷一《叙事结构与可执行规格》全 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。

《叙事策划与叙事工艺》卷一《叙事结构与可执行规格》全 50 篇。它回答一个问题:一个故事能不能先被写成一份规格,再让台词文本成为这份规格的渲染产物?

站内的叙事内容基本落在两端:一端是引擎怎么实现(game/client/ 的打字机、立绘口型、字幕时间轴,game/server/ 的对话状态架构),一端是散文式的叙事经验(game/indie/ 的分支对话长文、game/industry/ 的叙事设计概览)。中间那一段——故事被形式化成什么、这些形式能不能被判定、能不能被穷举、能不能被度量——没有人占。 而这一段恰恰是可计算、可跑、可证伪的一段。这一卷补的就是这一段的地基。

做法只有一句话:一份叙事规格,三处消费。config/story_spec.json 是唯一真源(世界 / 角色 / 弧光 / 节拍 / 场景图 / 对话 / 条件 / 状态 / 结局 / 度量),它同时驱动三处——穷举(可达状态集、结局分布、死路与孤儿、分支宽度)、执行(对话状态机、条件求值、状态推进、确定性回放)、度量(张力曲线、覆盖率、一致性残差等代理指标)。三处读的是同一个文件,产出的是逐位相同的状态摘要。改一个条件或一个阈值,三处同步改变且仍然互相一致。

贯穿全书的是虚构的三夜悬疑叙事 《雾港夜航》(工程名 mistport)与工具链 inkwell:config/ 放规格,sim/ 是 Python 仿真与穷举,core/ 是 TypeScript 确定性内核,web/ 把内核内联进单文件 HTML 供无头浏览器真玩。本页是《叙事结构与可执行规格》的全书目录:按章节顺序列出全部 50 篇,点击标题直达正文,也可以从各节末尾的「阅读导航」按顺序通读,或先看目录篇 里的分工说明与可运行性口径。

全书概览

项目内容
书稿《叙事策划与叙事工艺》卷一《叙事结构与可执行规格》
篇数50 篇(正文 16 章 48 节 + 目录篇 + 附录 A)
贯穿案例三夜悬疑叙事《雾港夜航》(mistport)
核心主张一份叙事规格,三处消费;文本是规格的渲染产物
可运行性六档 S / P / W / D / X / B
前置无(本卷是三卷本的第一卷)
后继卷二《叙事引擎与分支系统》 (16 章 48 节);卷三《叙事体验与路径度量》 (16 章 48 节)

三卷怎么分

卷书名回答的问题
卷一叙事结构与可执行规格一个故事怎么写成规格,这份规格自洽吗、可达吗、可覆盖吗
卷二叙事引擎与分支系统这份规格怎么被执行:状态机、条件求值、确定性回放、可玩原型
卷三叙事体验与路径度量玩家真的走出来的路径是什么形状,怎么用代理指标度量它

与站内既有内容的分工

本卷 16 章

第一部分 · 结构与规格(第 1–4 章)

第二部分 · 弧光、节拍与分支(第 5–8 章)

第三部分 · 条件、数值与文本(第 9–12 章)

第四部分 · 校验与装配(第 13–16 章)

可运行性

本卷沿用六档口径:S 是 Python 仿真与穷举(解析规格、结构校验、可达状态枚举、覆盖率与曲线),P 是 TypeScript 确定性内核(node --test),W 是浏览器可玩原型(Playwright 无头真玩),D 是规格文本与清单,X 是需真实环境、命令行不可复现的部分(正文逐处标注),B 是参数扰动与相变扫描(软告警不硬失败)。每一节至少有一个 S / P / W 档的代码块,且正文里的每个数字都来自本机实跑。

怎么读

想先看主张,从目录篇 开始,那里有分工说明与可运行性口径。想直接动手,从第 2 章 开始读规格字段,再依次跑 S / P 两层。只关心结论,看第 8 章 的假选择判定与第 16 章 的装配检查表。

全部文章 game golang 客户端开发 Minigame Saas rust Python Java cg Typescript
narrative

3.2 设定的一致性:冲突检测

设定冲突不是「感觉」,而是三种可判定的结构问题:立场失衡(带符号环的符号积为负)、地点解锁成环(互相依赖)、同一条规则被两个来源反证。本节用一个 S 层脚本各写一个检测器,在真规格上得到 0 死锁 / 0 失衡环 / 0 双源反证,再用三份注入式坏规格证明检测器真的会报错,而不是恒返回「无冲突」。

9 分钟阅读
叙事设计 叙事结构 游戏策划
narrative

12.2 条件文本与变体

同一条台词记录在不同状态下渲染出不同变体,这是条件文本的全部含义。本节枚举两个条件节点的整个定义域:d_tc_2 两分支两条文本;d_lt_2 声明了 line_when 却没写 line_else,101 个状态枚举下来只得到一条文本——结构分流了,文本没分流。变体退化因此成了一个可数的缺口,修法是在规格里补声明,而不是改台词。

8 分钟阅读
分支叙事 互动叙事 叙事结构
narrative

12.1 模板与变量

台词里出现的角色名与地点名,在规格里其实是一次变量查找。本节给出文本模板的唯一文法(占位、转义与未知占位回落),由规格三段拼出 24 个绑定的命名实体表,并渲染全部 48 条 line 与 115 条选项文本统计占位出现次数:行内占位 0 处、字段级占位 48 处、可模板化点 33 处。只做文本的结构,不评价文本质量。

8 分钟阅读
叙事结构 分支叙事 互动叙事