# Game Script

> 游戏剧本创作方法论与体检工具。用于：(1) 从主题推导故事、设计角色与角色定位、构建世界， (2) 用开端/过程/高潮/结局四要素搭剧本结构并设计选项与分支， (3) 写台词/旁白/指示，产出程序和美术能直接执行的开发向剧本， (4) 用 scripts/script_lint.py 对已写好的剧本做机械体检（台词过长、说明文倾向、缺动作、无意义选项等）。 触发词：游戏剧本、剧情策划、game script、narrative design、写台词、角色设定、 角色定位、剧本结构、分支剧情、选项设计、多结局、剧本体检。

- Skill: `xiwan/game-script` (Agent Skill, multi-file: 13 files)
- Install (CLI): `npx skillmds@latest add xiwan/game-script`
- Raw SKILL.md: https://api.skillmd.com/api/skills/xiwan/game-script/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: xiwan (https://skillmd.com/u/xiwan)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/xiwan/game-script

---


# 游戏剧本创作方法论

## 与其他 skill 的分工

| 需求 | 用哪个 |
|------|--------|
| 玩法机制、游戏类型、生成 prompt | `game-design-coach` |
| 美术风格、调色板、像素规范 | `pixel-art-style-guide` |
| 主题/故事/角色/结构/台词/开发向剧本格式 | **本 skill** |

## 核心判断：游戏剧本 ≠ 小说/电影剧本

三个不可移植的差异，决定了所有方法上的取舍：

1. **主角要留白**。电影主角越有个性越好；游戏主角个性越强，玩家越难代入。
2. **有"失败"和"选项"**。剧本必须为失败重来、分支、多结局留出结构位置。
3. **剧本是生产文档**。台词只是其中一部分，还要写指示（BG/CH/BGM/SE/CG/跳转/flag），
   程序和美术要能直接照着做。写得再好但没法执行的剧本，在项目里等于零。

## 使用流程

按顺序走。每一步都有"过不去就别往下写"的硬门槛。

### 1. 主题 → 故事

主题有两种写法：一个词（生存 / 中二 / 黑道）或一个长句
（"一对吵架夫妻合作闯关的奇妙旅行" = 《双人成行》）。

**门槛（两问都必须是"是"）：**
- 主题里是否包含**游戏目的**？（玩家要干什么）
- 主题是否足以**撑起一个故事**？（能不能长出冲突）

任一为否，回去改主题，不要硬写故事。

**铁律：主题不能写在台词里。** 主题只能通过两条路径表现：角色的选择与行为、故事的发展与结局。
角色开口说"友情才是最重要的"，主题当场作废。

卡住时的三个出口 → `references/theme-and-story.md`

### 2. 角色设定

设定表分四类填，缺哪类补哪类 → `references/character-sheet.md`

- **基础**：姓名、年龄、职业、学识、关系网
- **外部**：相貌、体格、发型、服装、剪影
- **内部**：性格、优点、弱点、爱好、价值观
- **特殊**：剧本定位、口头禅、特殊技能、特殊装备

要点：年龄/职业/体格/发型都在借玩家的**刻板印象**省笔墨，也都可以反用来做反差。
弱点不是缺陷而是必需品——它让反派有深度、让主角可亲近。

### 3. 角色定位（本方法论里最实用的一块）

定位 = 角色在故事里的立场与功能。16 种定位、三类分组、以及"外观相似不算重复、定位相似才算重复"
的判据 → `references/character-roles.md`

**两条硬规则：**
- **一个角色可以有多个定位**，重要角色的定位数量天然更多；定位随剧情切换（敌人→伙伴→叛徒）是塑造重量级角色的标准做法。
- **不允许"挂起"角色**。敌人被击败的瞬间就用完了敌人定位，如果不立刻给他新定位
  （伙伴/贤者/缓冲…），就只能死亡/失踪把他清出故事。挂在场上不动的角色是剧本漏洞。

### 4. 世界

从"何时 / 何地"起手，用"世界如果是这样的呢"发散，最后**给世界定规则**
（基础理论/基础规律）。缺规则 = 缺说服力。

设定深度可以无限，**表现要取舍**——设定表不是每条都要在游戏里说出来。
系统文档（伤害公式、属性克制、环境交互）本身就是世界观的一部分。

→ `references/worldbuilding.md`

### 5. 结构

开端 / 通往高潮的过程 / 高潮 / 结局。四要素各自的职责、章节的 4 种类型、
"听者回应"8 段期待曲线 → `references/structure.md`

**开端必须同时完成三件事**（缺一件玩家就流失）：
1. 传达游戏目的（接下来该干什么）
2. 传达游戏玩法（教程）
3. 传达这是什么游戏（主角是谁、关系、世界）

**高潮的成败不在高潮本身，在通往高潮的过程。** 玩家在过程里投入的成本
（升级、装备、伙伴羁绊、解谜）决定了高潮那一刻的情感当量。过程无趣，高潮必哑。

**结论不能提前抛**。必须先把玩家推到"心理饥饿"状态再给结果；高潮之后立刻收尾，
玩家兴奋度会陡降。

### 6. 选项与分支

选项是游戏交互性的落点，也是最容易做砸的地方。

**两条铁则：**
- 设计**没有破绽**的选项（不让玩家问"为什么我不能选那个？"）
- **不给玩家压力**（不让玩家问"这选项有什么意义？""我到底该选哪个？"）

三类选项、插入时机、flag 变量、无意义选项的边界 → `references/choices-and-branching.md`

### 7. 文本：台词 / 旁白 / 指示

三者分工、台词的四大病（太长、说明性太强、缺乏动作、读不出情感）、修改前后对照、
言外之意与敬语的用法 → `references/dialogue-craft.md`

**一句台词只传一个关键信息。** 信息要拆开慢慢漏，不要一句话交代完时间地点人物动机。

### 8. 输出开发向剧本

剧本不是散文，是给程序和美术的执行文档。格式、字段、模板 → `references/script-format.md`

最小字段集：场景标题、BG、时间、CH 进出场、表情、BGM/SE、CG/动画、
台词（带角色 ID）、旁白、选项与跳转目标、flag 读写、字数上限与翻页点。

### 9. 体检

写完先跑机械检查，再做人工审读：

```bash
python3 scripts/script_lint.py assets/sample-script.md
python3 scripts/script_lint.py my_script.md --max-line 40 --theme 友情 正义
```

零第三方依赖。10 条规则对应本方法论里最容易违反的部分（台词过长、一句话塞太多信息、
连续台词无动作、独白过长、选项无差异、选项无后果、场景缺指示、主题写进台词…）。
输出行号 + 问题 + 建议，`--strict` 时有 ERROR 则退出码 1，可挂进 CI。

人工审读清单和反模式对照 → `references/antipatterns.md`

## 快速判断表：剧本出问题时先查哪一条

| 症状 | 大概率原因 | 去哪看 |
|------|-----------|--------|
| 玩家不知道该干什么 | 开端没传达游戏目的 | `structure.md` 开端 |
| 玩家跳过所有对话 | 台词太长/说明性太强 | `dialogue-craft.md` 四大病 |
| 打完 Boss 觉得"就这样？" | 过程投入不足，不是高潮没写好 | `structure.md` 高潮 |
| 玩家吐槽"选了跟没选一样" | 无意义选项 / 缺必然性结果 | `choices-and-branching.md` |
| 角色说教味重 | 主题写进了台词 | 本文 §1 铁律 |
| 某个角色后半段就没戏了 | 角色被挂起，没给新定位 | `character-roles.md` |
| 队友加入后毫无存在感 | 沉默角色 | `character-roles.md` 伙伴角色 |
| 世界观崩 | 没定规则，或规则被剧情打破没解释 | `worldbuilding.md` |
| 前 30 分钟像在读说明书 | 前置准备写成了说明文 | `structure.md` §9 |

## 参考文件索引

| 文件 | 内容 | 何时读取 |
|------|------|----------|
| `references/theme-and-story.md` | 主题→故事的推导、卡壳时的三个出口、主题表现的两条路径 | 立项/开题时 |
| `references/character-sheet.md` | 四类角色设定表、各字段的作用与反用手法 | 设计角色时 |
| `references/character-roles.md` | 16 种角色定位、三类分组、定位切换与挂起问题 | 排角色阵容时 |
| `references/worldbuilding.md` | 世界设定表、"世界如果是这样的呢"、世界规则 | 做世界观时 |
| `references/structure.md` | 四要素、章节 4 类型、8 段期待曲线、开端技巧 | 搭结构时 |
| `references/choices-and-branching.md` | 选项三类、两条铁则、时机、flag、分支管理 | 设计选项/多结局时 |
| `references/dialogue-craft.md` | 台词四大病、改写案例、言外之意/敬语/语境 | 写台词时 |
| `references/script-format.md` | 开发向剧本格式与模板、指示字段表 | 交付剧本时 |
| `references/antipatterns.md` | 反模式清单 + 人工审读检查表 | 交付前自查/评审别人的剧本时 |
| `scripts/script_lint.py` | 零依赖剧本体检脚本（10 条规则） | 写完任何一段剧本后 |
| `assets/sample-script.md` | 符合格式的示例剧本（lint 应 0 ERROR / 0 WARN） | 需要格式范例时 |
| `assets/sample-script-bad.md` | 故意踩满 10 条规则的反例（验证 lint 是否正常） | 想确认某条规则怎么报时 |

## 出处

方法论骨架来自佐佐木智广《游戏剧本怎么写》，以及该书的中文梳理笔记
<https://zhuanlan.zhihu.com/p/435413053>（作者在书之外补充了角色四类设定表、
章节类型的实践观点等）。本 skill 在此之上做了三件原书没有的事：
把散落的规则整理成可执行流程、给每条规则配了可查的症状表、把其中 10 条写成了机械可检的
lint 规则。原书更偏入门，实际项目里需要按品类（RPG/AVG/开放世界/手游）自行取舍。

