game-narrative-craft

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Game Narrative Craft

游戏叙事创作

Purpose: Make short-form game prose land on a human player who has partial context, limited attention, and no interest in your design document.
Scope: The passage, the paragraph, the sentence. For quest architecture, branch budgets, and the agency spectrum, see narrative-design. For tone and diction, see a register skill such as cosmic-horror-register.
Sources: Rules here are derived from two measured corpora, deliberately chosen for opposite registers so that shared technique separates from house style. See
references/source-analysis.md
for the measurements and the divergences.
  • Arkham Horror LCG: Edge of the Earth campaign guide (FFG, 2022) — cold, earnest, second-person-party, printed and read aloud between sessions.
  • Fallen London writer guidelines (Failbetter Games, published) — arch, comic, Victorian, web storylets read in 90-second sittings.
A rule appearing in both is craft. A rule appearing in one is style, and is marked as such.

目的: 让短格式游戏散文能够触达只有部分背景信息、注意力有限且对你的设计文档毫无兴趣的人类玩家。
范围: 段落、小节、句子。若涉及任务架构、分支预算及能动性范围,请参考narrative-design。若涉及基调用词,请参考如cosmic-horror-register这类风格技能。
来源: 此处规则源自两个经过测量的语料库,特意选择风格截然相反的内容,以便区分通用技巧与特定风格。测量结果及差异详情请见
references/source-analysis.md
  • 《诡镇奇谈卡牌游戏:地之边缘》战役指南(FFG,2022)——冷峻、真挚,采用第二人称群体视角,供玩家在局间阅读或朗读。
  • 《堕落伦敦》作者指南(Failbetter Games,公开版)——诙谐、幽默,维多利亚风格,为玩家在90秒内阅读的网络短篇故事。
两个语料库共有的规则属于创作技巧,仅存在于单一语料库的规则属于风格,并会标注说明。

The compression rule

压缩规则

This is the spine. Most bad AI game prose fails here and nowhere else.
Told to be brief, a model compresses by abstraction. It writes the summary of a scene instead of a short scene. The word count drops, the effect goes to zero, and the instruction that caused it was "keep it brief."
Given a beat where the player finds a dead scholar's sketchbook, the published text (≈200 words) does this: a physical action, a fruitless search, a discovery, one image rendered in real detail, an emotional beat, a hook. The AI version does this:
You examine Dyer's sketches and find disturbing images of an archway and something terrible beneath it.
Same information. One sentence. Nothing happens to the reader.
Rule: compress by scope reduction, never by abstraction. One moment, one room, one exchange — rendered fully. Never summarize three moments.
Test (falsifiable): if the passage could be a bullet in a design document without losing anything, it is a summary, not a scene. Rewrite it by picking the single most concrete thing in it and staying there.
Failbetter states the positive form: results should describe one action or closely-related actions and their consequences, not strings of sequential actions. Both corpora converge on the same move — narrow the aperture, keep the detail.
这是核心原则。大多数糟糕的AI生成游戏文本都败在此处。
当要求简洁时,模型会通过抽象来压缩内容。 它写出的是场景总结而非简短场景。字数减少了,但效果荡然无存,而导致这一结果的指令正是“保持简洁”。
以玩家发现已故学者速写本的情节为例,已发布文本(约200词)包含:一个物理动作、一次无果的搜寻、一个发现、一个细节丰富的具象画面、一段情感波动、一个钩子。而AI版本则是:
你检查了戴尔的速写,发现了关于一座拱门及其下方恐怖事物的诡异图像。
信息相同,只用了一句话,但读者毫无代入感。
规则:通过缩小范围而非抽象来压缩内容。聚焦一个瞬间、一个房间、一次互动——进行完整呈现。绝不要总结多个瞬间。
可证伪测试: 如果这段内容可以直接作为设计文档中的要点而不丢失任何信息,那它就是总结而非场景。重写时,从中挑选最具象的单一元素并围绕其展开。
Failbetter给出了正向表述:最终内容应描述一个动作或紧密相关的动作及其后果,而非一连串连续动作。两个语料库都指向同一个做法——收窄视角,保留细节。

The rendered-detail floor

具象细节底线

A scene that survives compression contains at least one thing a camera could photograph. Not an atmosphere, not a realization — an object, a gesture, a sound, a specific line of dialogue. If you cut the passage down and no photographable thing survives, you cut the wrong things.

经过压缩后仍合格的场景至少包含一个相机可以拍摄到的事物。不是氛围,不是领悟——而是一个物体、一个手势、一种声音、一句特定的对话。如果你精简内容后,没有任何可拍摄的事物留存,那你删错了内容。

Word-count bands

字数区间

Both corpora impose hard limits per structural slot. The numbers differ because the delivery differs; the practice of a per-slot ceiling is the craft. Pick the row matching your delivery, or measure your own corpus.
slotprinted / read-aloud (AHLCG, measured n=58)web storylet (Failbetter, published)
choice / branch labelone line of spoken dialogue≤ 20 words
situation / root text350–430 words≤ 30 words
outcome / vignette150–350 words (p25 165, median 203, p75 329)≤ 100 words
closing beat180–280 words
Working default when you have no corpus: 150–350 words for a vignette, and a hard ceiling you write down before drafting. The ceiling is the instrument. Without one, "keep it tight" is a weak ask and will be complied with by abstraction — see the compression rule.
Ranges are targets, not laws. A passage 40% over the band is a signal to look for two moments that should be one, not an automatic cut.

两个语料库都对各结构模块设置了严格限制。具体数值因呈现方式不同而有差异,但为每个模块设置上限的做法属于通用创作技巧。选择与你的呈现方式匹配的数值,或自行测量你的语料库。
模块印刷/朗读版(AHLCG,样本量n=58)网络短篇故事版(Failbetter,公开版)
选项/分支标签一行口语化对话≤ 20词
情境/核心文本350–430词≤ 30词
结局/短篇故事150–350词(第25百分位165,中位数203,第75百分位329)≤ 100词
收尾段落180–280词
无参考语料库时的通用默认值:短篇故事为150–350词,且在起草前明确写下字数上限。 上限是创作的工具。没有上限的话,“保持紧凑”就是一个模糊的要求,最终会导致通过抽象来压缩内容——详见压缩规则。
区间是目标而非硬性规定。超出区间40%的内容是一个信号,提示你需要检查是否存在应合并为一个的两个场景,而非直接删减。

Teaching copy is a third slot with its own rules

教学文案是独立模块,有专属规则

A tip, a tutorial notice, a HUD hint — a line under about twenty words whose job is to make a mechanic usable right now — is neither a vignette nor a branch label, and most of this skill does not apply to it. The compression rule and the rendered-detail floor are about scenes. Teaching copy is not a scene. It is an instruction competing with a threat for the player's attention.
Six rules, all checkable.
1. One concept per line. If the line teaches two things, the player retains the first and the second is spent. Split it or drop one.
2. No forward references. A line that names something the player has not met is a riddle, and a riddle in the teaching channel is worse than silence — it consumes the slot and teaches nothing. Ominous forward references are excellent and belong in the flavour channel, where a high miss rate costs nothing.
3. Canonical referents only. One word per game noun, every time. See the referent ledger in generated-content-quality; this is where its findings land.
4. No metaphor above the player's current model. "Light is ground you do not have to fight for" requires the player to already hold darkness is contested space. If the game has not taught that, the sentence is decoration wearing an instruction's clothes.
5. Do not negate a misconception the player may not have. "Gear comes out of your allowance, not out of the load you logged" is answering an unasked question, and it introduces the wrong answer in the same breath as the right one.
6. Actionable within ten seconds, using only what is on screen. This is the test:
Test: could the player act on this line in the next ten seconds, with only what is currently visible? If not, it is flavour. Move it to the flavour channel and free the slot.
提示、教程说明、HUD提示——这类约20词以内的内容,作用是让玩家立即掌握某个机制,它既不属于短篇故事也不属于分支标签,本技能的大部分规则不适用于它。压缩规则和具象细节底线针对的是场景,而教学文案不是场景,它是与游戏威胁争夺玩家注意力的指令。
以下六条规则均为可验证的标准。
1. 每行仅包含一个概念。 如果一行内容同时教授两个知识点,玩家只会记住第一个,第二个则会被忽略。拆分内容或删除其中一个知识点。
2. 禁止前置引用。 提及玩家尚未接触过事物的内容就像谜语,而教学环节中的谜语比沉默更糟——它占用了模块位置却没有传递任何信息。带有悬念的前置引用效果很好,但属于风格内容,放在风格模块中不会造成任何损失。
3. 仅使用标准指代。 每个游戏名词对应唯一的词汇,始终保持一致。详见generated-content-quality中的指代台账,此处是其规则的落地场景。
4. 避免超出玩家当前认知模型的隐喻。 “光明是无需争夺的领地” 要求玩家已经理解*“黑暗是需要争夺的空间”*。如果游戏尚未教授这一概念,这句话就只是披着指令外衣的装饰。
5. 不要否定玩家可能不存在的误解。 “装备来自你的津贴,而非你记录的负载” 是在回答一个没人问的问题,同时还会在传递正确答案的过程中引入错误答案。
6. 可在10秒内仅通过屏幕可见内容执行。 测试标准如下:
测试: 玩家能否在接下来的10秒内,仅通过当前屏幕可见内容执行这条指令?如果不能,那它属于风格内容。将其移至风格模块,释放当前模块位置。

The dependency order check

依赖顺序检查

The failure this catches is mechanical, invisible to per-line review, and I have now found it in two separate games on the first pass.
Build a two-column table: every teaching line, the concepts it introduces, and the concepts it uses. Sort by fire order. Any line that uses a concept a later line introduces is a bug.
Worked example. A logging game fires
haul
first —
WOOD IN YOUR ARMS IS NOT WOOD ON THE TRUCK. ONLY THE TRUCK COUNTS.
— and
quota
second, which is the line that introduces the idea of counting toward anything. For the length of one notice the player holds a scoring rule for a score that does not exist yet. Neither line is wrong; the order is.
The same bug appears in prose. A dungeon crawler says "THE COURT EXPECTED SOMEONE" on floor three and "THE PROCESSION ENDS AT A COURT" on floor four — definite article before the referent exists. Grep your corpus for
THE <NOUN>
and check each first occurrence against the fire order.
这种问题是机械性的,逐行审查无法发现,我已在两款不同游戏的首次审查中发现了此类问题。
制作一个两列表格:列出每条教学文案、它引入的概念,以及它使用的概念。按出现顺序排序。任何使用后续模块才引入概念的内容都是错误。
示例:一款伐木游戏先显示
haul
相关内容——
你怀里的木材不算在卡车上,只有卡车上的木材才算数
——然后显示
quota
相关内容,而后者才是引入“计数”概念的模块。在这段提示显示期间,玩家持有一个针对尚未存在的分数的计分规则。两条内容本身都没有错,错的是顺序。
这种错误也会出现在散文中。一款地牢爬行游戏在第三层显示*“法庭在等某人”,在第四层才显示“队伍终点是一座法庭”*——定冠词出现在指代对象之前。在你的语料库中搜索
THE <NOUN>
,并检查每个首次出现的内容与显示顺序是否匹配。

Density and pressure

密度与时机

Teaching lands or fails on when it arrives, not only on what it says.
  • Under threat, teaching is not received. A line that fires during combat is competing with survival and will lose. Either fire it before the threat or accept that it is flavour.
  • Count the lines per location and per minute. Three panels for one building, seven seconds apart, is not three lessons — it is one lesson and two interruptions.
  • Measure hit rates, and read the zeroes both ways. A line that never fires may have a broken trigger or may be describing a state the game never produces. Those need opposite fixes, and the counter cannot tell them apart.

教学内容的效果取决于出现时机,而非仅取决于内容本身。
  • 处于威胁状态时,玩家无法接收教学内容。 在战斗期间显示的内容会与生存需求争夺注意力,最终会被忽略。要么在威胁出现前显示,要么接受它作为风格内容。
  • 统计每个位置每分钟的教学内容数量。 同一建筑显示三个面板,间隔7秒,这不是三个知识点——而是一个知识点加两次干扰。
  • 统计点击率,双向解读零点击情况。 从未显示的内容可能是触发条件损坏,也可能是描述的状态游戏从未出现。这两种情况需要完全相反的修复方案,但计数器无法区分。

The information-state ledger

信息状态台账

The crux of AI-written game narrative. The model holds the whole design document; the player holds forty fragmented minutes from three days ago. Every recap-bloat and every unearned reveal traces to that asymmetry.
Before writing any passage, fill four columns. Two minutes, in a scratch file or in your head, but actually fill them:
columnquestion
CertainWhat has the player been shown directly and unambiguously?
Seen, not understoodWhat have they observed without an explanation?
Told, unreliablyWhat has an NPC, document, or rumor asserted?
Assumed by this passageWhat does the draft require the reader to already hold?
Anything in column 4 that is not in columns 1–3 is the miss. Either seed it earlier, move it to column 3 by having someone say it, or cut the sentence that depends on it.
AI生成游戏叙事的核心问题。 模型掌握完整的设计文档,而玩家只记得三天前碎片化的四十分钟内容。所有冗长的回顾和无根据的揭秘都源于这种信息不对称。
在撰写任何内容之前,填写以下四列。只需两分钟,可以写在临时文件中或在脑中完成,但必须实际填写:
问题
确定已知玩家直接、明确看到的内容是什么?
见过但未理解玩家观察到但未得到解释的内容是什么?
被告知但不可靠NPC、文档或传言声称的内容是什么?
本段内容假设草稿要求读者已经掌握的内容是什么?
第4列中未出现在第1–3列中的内容就是问题所在。 要么提前铺垫,要么通过让角色说出将其移至第3列,要么删除依赖该内容的句子。

Reorientation is a structural slot, not a prose duty

重新定位是独立结构模块,而非散文职责

Both corpora refuse to recap in prose, and both solve re-entry structurally instead:
  • AHLCG references state by name and trusts the player to hold it — "If William Dyer is crossed out:" — because the campaign log carries continuity as a physical artifact the player maintains.
  • Failbetter builds re-entry surfaces on purpose: quality-linked descriptions, dedicated reminder branches, and explicit
    [advisory text in square brackets]
    for players who engage sporadically.
Rule: never write "as you recall" or "having previously discovered." If the player needs reorientation, give it a slot of its own — a log line, a journal entry, a bracketed note, a reminder branch — and keep the prose clean.
This is also what makes the reference-by-name style possible. The prose can say "If Dyer is crossed out" with no explanation precisely because the log is doing the remembering.

两个语料库都拒绝在散文中回顾内容,而是通过结构设计解决重新定位问题:
  • AHLCG通过名称引用状态,信任玩家自行记忆——“如果威廉·戴尔被划掉:”——因为战役日志是玩家维护的实体道具,承担了连续性记录的功能。
  • Failbetter特意构建了重新定位的入口:与品质挂钩的描述、专门的提醒分支,以及针对不定期游玩玩家的显式
    [方括号中的提示文本]
规则:绝不要写“如你所记得”或“之前发现的”。如果玩家需要重新定位,为其设置独立模块——日志条目、日记内容、方括号提示、提醒分支——保持散文内容简洁。
这也是名称引用风格可行的原因。散文可以直接说“如果戴尔被划掉”而无需解释,正是因为日志承担了记忆的功能。

Player agency in the sentence

句子层面的玩家能动性

Both corpora forbid the same thing and draw the line in different places. The prohibition is craft; the line is a dial.
Shared rule: never assign the player a decision, a conviction, or an opinion in narration. Choice is exposed as choice. "You realize you have to stop him" is the single most common failure in AI game prose.
The dial — how much interiority may narration assign?
positionpermitscorpus
StrictNothing internal. Only images and incident. "Wary of putting words in the player's mouth, thoughts in their head, or feelings in their heart."Failbetter
SensoryPhysical reaction and uncertainty. "chills you to your core", "You're still unsure what to make of all this." Never conviction.AHLCG
Pick one per project and write it down. Strict suits games where the player authors a character; sensory suits games with a defined protagonist or a party. Mixing them mid-project is what makes a script feel like several people wrote it, because it means several people did.
Failbetter's corollary, worth adopting in either position: don't assume player gender, clothing, or skin colour.
两个语料库都禁止同一种做法,但具体界限有所不同。禁止的做法属于创作技巧,界限则是可调整的参数。
通用规则:绝不要在叙事中为玩家分配决策、信念或观点。 选择应明确呈现为选择。“你意识到必须阻止他”是AI生成游戏文本中最常见的错误。
参数——叙事可赋予多少内心活动?
档位允许内容语料库
严格无任何内心活动。仅呈现画面和事件。“避免替玩家说话、思考或感受。”Failbetter
感官层面生理反应和不确定性。“让你毛骨悚然”“你仍不确定这一切意味着什么”。绝不能出现信念。AHLCG
为每个项目选择一个档位并记录下来。严格档位适合玩家自定义角色的游戏;感官档位适合有固定主角或团队的游戏。项目中途切换档位会让脚本感觉像是多人撰写,事实也确实如此。
Failbetter的补充规则值得在任何档位采用:不要假设玩家的性别、服装或肤色。

Choices are dialogue, not menu items

选项是对话,而非菜单项

Write the option as a first-person line the character says, in quotes:
"I believe you… but if what you say is true, should we not investigate these findings further?"
Not
Option A: Investigate further.
The choice becomes an act of characterization instead of a selection. Costs nothing, changes the entire texture.
Where the choice is an action rather than speech, Failbetter's rule applies: the branch must make unambiguously clear what the character will do. A mysterious branch label is not intrigue, it is a broken control.

将选项写成角色说出的第一人称引语:
“我相信你……但如果你说的是真的,我们难道不应该进一步调查这些发现吗?”
而非
选项A:进一步调查。
这样选择就变成了角色塑造的行为,而非单纯的选择。无需额外成本,却能彻底改变文本质感。
当选项是动作而非对话时,适用Failbetter的规则:分支必须明确说明角色将做什么。模糊的分支标签不是悬念,而是失效的控制。

Branch the frame, not the plot

框架分支,而非情节分支

Divergent paths that reconverge should share their content and differ in framing. In the AHLCG prologue, the two paths — the player believed the warning, or dismissed it — share three verbatim-identical paragraphs, reach the same destination, and apply the identical mechanical outcome. Only the frame around them differs.
AI writing will not do this unprompted. It writes two genuinely divergent branches, doubles the content debt, and buys no additional felt agency.
Rule: when paths reconverge, write the shared middle once and vary only the frame. Budget divergence for the moments the player will remember.
See narrative-design for the architecture this serves (hub/diamond, branch budget, reactive narrative).
重新汇合的分歧路径应共享核心内容,仅在框架上有所不同。在AHLCG的序章中,玩家相信警告或无视警告这两条路径,共享三段完全相同的段落,到达同一目的地,产生完全相同的机制结果。仅围绕核心内容的框架有所不同。
AI不会主动这么做。它会写出两条真正分歧的分支,翻倍内容成本,却无法提升玩家的能动性体验。
规则:当路径重新汇合时,核心内容只写一次,仅调整框架。将分歧预算留给玩家会记住的瞬间。
详见narrative-design中对应的架构(枢纽/菱形结构、分支预算、响应式叙事)。

Failure branches are different content, not lesser content

失败分支是差异化内容,而非降级内容

The highest-value technique in either corpus, and the one AI most reliably inverts.
When the scholar is alive, you get a conversation with him. When he is dead, you do not get a diminished version of that conversation — you get his sketchbook, an archway with five glyphs, and a drawing whose lines "disintegrate into a tangle of light strokes and splotches of ink." The dead branch is better material than the live branch, and it grants a card the live branch does not.
Rule: draft the worst outcome first. Draft the success path first and every other branch becomes a degradation of it — which is exactly how you get this backwards. Start with the branch where the character died, the mission failed, the resource ran out. Ask what that state makes available that success does not.
Test: if every failure branch is the success branch minus something, no failure branch has been designed.

这是两个语料库中价值最高的技巧,也是AI最容易搞反的部分。
当学者活着时,你会与他对话。当他死后,你不会得到对话的简化版本——你会得到他的速写本、带有五个符号的拱门,以及一幅线条“分解成杂乱的光痕和墨渍”的画。失败分支的内容比成功分支更优质,还会提供成功分支没有的卡牌。
规则:先起草最坏的结局。 如果先起草成功路径,其他所有分支都会变成成功路径的降级版本——这正是你搞反的原因。从角色死亡、任务失败、资源耗尽的分支开始起草。思考这种状态能提供哪些成功状态没有的内容。
测试: 如果每个失败分支都是成功分支的删减版,那说明失败分支并未经过设计。

Callbacks

回调

Plant a specific, unexplained detail; return to it hours later without explanation; return once more at the end. In the AHLCG corpus a student's half-remembered Poe recitation appears in the prologue, again in a mid-campaign interlude, and again in the epilogue. It is never glossed.
Rule: three appearances, hours apart, zero explanation. Explaining the callback on its second appearance destroys it. If you are worried the player missed it, that worry is what the log line is for.

植入一个具体的、未解释的细节;数小时后再次提及,仍不解释;在结尾第三次提及。在AHLCG语料库中,一名学生半回忆起的爱伦·坡诗句出现在序章、中期战役插曲和尾声中,从未被解释。
规则:三次出现,间隔数小时,零解释。 在第二次出现时解释回调会毁掉它。如果你担心玩家错过,日志条目就是为此准备的。

The state schema is the narrative's API

状态模式是叙事的API

Both corpora make the same structural claim from opposite directions.
  • Failbetter calls it quality parsimony: use as few unique state variables as possible; two is the magic minimum for content with an engaging interactive structure; excess qualities complicate the economy, cause bugs, and clutter the UI.
  • AHLCG achieves rich branching on a campaign log holding almost nothing: who is alive, a handful of flags, the contents of a bag.
Rich prose over a small typed state. If the state sprawls, the branching becomes unwritable and the writer will paper over it with recap — which reintroduces the information-state failure above.
Rule: design the log before the prose. Write down every state variable the narrative may branch on. If the list exceeds what you can hold in your head, cut it before you write a word.

两个语料库从相反方向提出了相同的结构主张。
  • Failbetter称之为品质简约性:使用尽可能少的独特状态变量;两个变量是构建具有吸引力的交互内容的神奇最小值;过多的品质会使经济系统复杂化、导致错误并使UI混乱。
  • AHLCG通过几乎只记录关键信息的战役日志实现了丰富的分支:谁活着、几个标记、背包内容。
在小型结构化状态之上构建丰富的散文内容。如果状态过于繁杂,分支会变得无法撰写,作者会用回顾内容来掩盖问题——这会重新引入上述的信息状态错误。
规则:在撰写散文前设计日志。写下叙事可能分支的所有状态变量。如果列表超出你的记忆范围,在撰写任何内容前删减。

Entropy

Model output for creative content converges hard. Two seeding moves, both cheap:
  1. Seed from real entropy, not imagined randomness. "Pick something random" has a basin of its own. Take entropy from the environment — a commit SHA,
    openssl rand -hex 6
    , a die rolled in the analysis tool, the low bits of a file hash — and spend it on a constraint: which of five registers, which sense leads, which object is present, which branch gets drafted first. Never ship the seed as output.
  2. Roll the draft order. Combined with the failure-first rule above: rolling which branch you write first is the difference between designed branches and degraded ones.
For character, faction, and place names specifically, this is a deeper problem with its own procedure — models converge on the same names across unrelated projects. Name the two or three candidates you would have defaulted to and rule them out before generating, and apply the portability test: if the name would work equally well for a different project in a different genre, it is a mood, not a name.

模型生成的创意内容会严重趋同。以下两种植入熵的方法都很简单:
  1. 从真实熵而非想象的随机性中获取种子。 “随机选择”本身就有固定倾向。从环境中获取熵——提交SHA值、
    openssl rand -hex 6
    、分析工具中掷骰子的结果、文件哈希值的低位——并将其用于约束:选择五种风格中的哪一种、哪种感官引导、存在哪个物体、先起草哪个分支。绝不要将种子作为输出内容发布。
  2. 调整起草顺序。 结合上述的先起草失败分支规则:调整起草分支的顺序是设计分支与降级分支的区别所在。
对于角色、派系和地点名称,这是一个更深层次的问题,有专门的解决流程——模型在不同项目中会生成相同的名称。列出你默认会选择的两三个候选名称并排除它们,然后应用可移植性测试:如果这个名称同样适用于不同类型的其他项目,那它只是一种氛围,而非专属名称。

Perspective

视角

Three questions before any passage. They take fifteen seconds and they are the difference between a scene and a report.
  1. Whose eyes? Not "third person limited" — which person, in this room, right now.
  2. What do they not know? A perspective is defined by its gaps.
  3. What does the player know that they don't — or the reverse?
Question 3 is where the content usually is. The scene of a broken man reciting Poe to himself works because the player recognizes the quotation's weight and he is past recognizing anything. That gap is the scene. Without it there is a man muttering.

撰写任何内容前先思考三个问题。只需15秒,但这是场景与报告的区别所在。
  1. 谁的视角? 不是“第三人称有限视角”——而是这个房间里的具体某个人,就在当下。
  2. 他们不知道什么? 视角由认知缺口定义。
  3. 玩家知道而他们不知道的是什么——或者反过来?
第三个问题通常是内容的核心。一个崩溃的男人自言自语背诵爱伦·坡诗句的场景之所以有效,是因为玩家意识到诗句的分量,而他已经无法识别任何事物。这个认知缺口就是场景本身。没有它,就只是一个喃喃自语的男人。

AI tells

AI文本特征

Fix these before anything else; they are what makes drafted prose read as drafted.
Structural
  • The summary-instead-of-scene (see the compression rule) — the big one.
  • Recap of what the player already did.
  • Every paragraph ending on a portentous short sentence. And then it moved.
  • Perfectly symmetrical branch outcomes.
  • Explaining the mystery, the callback, or the joke.
  • Every NPC speaking in the same register.
Sentence-level
  • Asserting the effect instead of causing it: the weight of the moment settled over you, a chill ran down your spine, you can't shake the feeling that…
  • Adjective stacks doing the work of an image: strange, unsettling, eerie.
  • Tricolon on every beat: the cold, the dark, the silence.
  • Passive voice as a retreat. Failbetter: passive "drains energy from prose" and signals a writer who has got distant from the text. Treat it as a reminder to get back down there.
  • Single-sentence paragraphs used only to control pace. Failbetter calls this "precious," and it is.
  • Em-dashes at AI density. They are the clearest tell in published prose.
Dialogue
Failbetter's test, adopted verbatim because nothing else is as fast: dialogue must pass the say-this-shit test. Read the line aloud. If no human would say it in that situation, it is exposition wearing quotation marks.

优先修复这些问题;正是这些特征让生成的文本看起来像是AI写的。
结构层面
  • 总结而非场景(详见压缩规则)——最常见的问题。
  • 回顾玩家已经做过的事。
  • 每个段落都以故作高深的短句结尾。然后它动了。
  • 完全对称的分支结局。
  • 解释谜团、回调或笑话。
  • 所有NPC说话风格一致。
句子层面
  • 直接断言效果而非营造效果:那一刻的沉重笼罩着你一阵寒意顺着你的脊梁骨爬下你无法摆脱一种感觉……
  • 用形容词堆砌替代具象画面:奇怪的、令人不安的、诡异的
  • 每个节拍都使用三重并列:寒冷、黑暗、寂静
  • 用被动语态逃避。Failbetter认为被动语态“会耗尽散文的能量”,表明作者与文本脱节。将其视为提醒,让自己重新贴近文本。
  • 仅为控制节奏使用单句段落。Failbetter称之为“矫揉造作”,确实如此。
  • AI密度的破折号。这是已发布文本中最明显的特征。
对话层面
直接采用Failbetter的测试,因为没有比这更快的方法:对话必须通过“说人话”测试。大声朗读台词。如果没有人会在那种情况下说出这句话,那它就是披着引语外衣的背景介绍。

Story bible vs. in-game text

故事设定集 vs 游戏内文本

One source, two products, and the compression between them is a deliberate step, not a hope.
  • The bible may be long. It holds the state schema, the voice sheet, the callback plants, the frame for each branch, and everything the player will never read.
  • The in-game text is the band. Draft in the bible, then compress by scope reduction into the band, with the word ceiling written down before you start.
Do not draft in-game text directly from the bible in one pass. That is the step where abstraction gets in.
同一来源,两种产物,二者之间的压缩是刻意步骤,而非侥幸。
  • 设定集可以很长。它包含状态模式、风格指南、回调植入、各分支框架,以及玩家永远不会阅读的所有内容。
  • 游戏内文本需符合字数区间。先在设定集中起草,然后通过缩小范围压缩至字数区间内,起草前需明确写下字数上限。
不要直接从设定集一步起草游戏内文本。这一步正是抽象内容混入的环节。

The voice sheet

风格指南

Three lines per speaking character, written once, kept beside the draft:
  1. What they want in this scene, in six words.
  2. How they talk — sentence length, formality, one verbal habit.
  3. What they never say — the subject they route around.
Line 3 does the most work and is the one AI omits. It is also where phonetic dialect belongs, if at all: one character rendered phonetically is characterization, three is noise.

每个说话角色写三行内容,只写一次,放在草稿旁边:
  1. 本次场景目标,六个字以内。
  2. 说话风格——句子长度、正式程度、一个口头习惯。
  3. 绝不会说的内容——刻意回避的话题。
第三行作用最大,也是AI会忽略的部分。如果使用方言,也应放在这里:一个角色使用方言是塑造形象,三个角色使用方言就是噪音。

Review checklist

审查清单

Run against any drafted passage.
  • Could this be a design-doc bullet without loss? → summary, not a scene.
  • Is there one photographable thing in it?
  • Word count inside the declared band?
  • Does it assume anything not in the ledger's first three columns?
  • Does narration assign the player a decision, conviction, or opinion?
  • Is interiority consistent with the project's declared dial position?
  • Are choices written as dialogue or as actions the player can predict?
  • For reconverging paths: is shared content written once?
  • Is the failure branch different content, or the success branch minus?
  • Any callback explained on this appearance? Unexplain it.
  • Any recap that belongs in a log line, journal entry, or reminder branch?
  • Read all dialogue aloud — does it pass the say-this-shit test?
  • Scan the AI-tell list.

针对任何起草内容进行检查。
  • 这段内容能否直接作为设计文档要点而不丢失信息?→ 是总结,而非场景。
  • 内容中是否包含至少一个可拍摄的事物?
  • 字数是否在规定区间内?
  • 是否假设了台账前三列中没有的内容?
  • 叙事是否为玩家分配了决策、信念或观点?
  • 内心活动是否符合项目规定的档位?
  • 选项是否以对话或玩家可预测的动作形式呈现?
  • 对于重新汇合的路径:核心内容是否只写了一次?
  • 失败分支是差异化内容,还是成功分支的删减版?
  • 本次出现的回调是否被解释?取消解释。
  • 是否存在应放在日志条目、日记内容或提醒分支中的回顾内容?
  • 大声朗读所有对话——是否通过“说人话”测试?
  • 对照AI文本特征列表检查。

Cross-references

交叉引用

  • narrative-design — quest architecture, branch budget, agency spectrum, pacing. The layer above this one.
  • cosmic-horror-register — tone, diction, and sensory palette for cosmic horror. Instance one of the register template; the same six slots build folk-horror, noir, or comic registers.
  • experience-design — session-level pacing and emotional arc.
  • player-ux — where information lives on screen, which is the delivery half of the information-state problem.

  • narrative-design——任务架构、分支预算、能动性范围、节奏。本内容的上层内容。
  • cosmic-horror-register——宇宙恐怖的基调、用词和感官基调。风格模板的一个实例;相同的六个模块可构建民间恐怖、黑色电影或喜剧风格。
  • experience-design——会话层面的节奏和情感弧线。
  • player-ux——信息在屏幕上的位置,这是信息状态问题的呈现层面。

Cross-References

交叉引用

Three tight links. Everything else routes through the map, so adding a skill touches one file rather than twenty:
references/routing-map.md
(in game-design).
  • narrative-design — Architecture and branch budget: the layer above
  • cosmic-horror-register — Tone, and the template for other registers
  • generated-content-quality — When the writing happens at volume
三个紧密关联的内容。其他所有内容通过映射关联,因此添加一个技能只需修改一个文件,而非二十个:
references/routing-map.md
(位于game-design下)。
  • narrative-design——架构与分支预算:上层内容
  • cosmic-horror-register——基调,以及其他风格的模板
  • generated-content-quality——批量生成内容的场景