- .agents/skills 25 件全量 frontmatter 规范化与评审修入(含 prompt-governance 大修);.claude/skills 7 件薄壳按双层方案①落位 - 新增 skill:agentic-seat-context-design(agentic 席位与 context 工程设计基线,2026-07-05 探索蒸馏) - 设计波三件落档:复杂游戏北极星件(W-NSTAR 终审稿待拍)/黄金模板规格件(W-TPL 定稿待批)/生成侧过程蒸馏回路(W-GENLOG 骨架) - protocol/在飞板/作战清单/数据飞轮 SoT/契约 prompts 索引同步;breakout 九门证据刷新 - .gitignore 补 /localagents.md 真实忽略行(该文件自声明绝不提交,此前声明未被机器执行) - 刻意不入库:nacos-data/ 与 _tier2-gen、c2v-*、amgen-* 生成产物(可重生成,忽略行格式待拍) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
18 KiB
name, description
| name | description |
|---|---|
| narrative-game-design | 当为剧情互动/文字冒险/恋爱剧情类 brief 产设计阶段故事方案或评审时使用:分支/属性/多结局范式、文本与分支预算红线、结局 latch 与取证契约、替代成长轴申报(章节+图鉴)、品类 rubric 指针与金标锚点。 |
skill: narrative-game-design —— 剧情互动小游戏「玩法设计」作业手册(给生成 agent 的设计阶段)
定位:这是 生成 agent 设计阶段(AgentScope)造"好玩的剧情互动玩法设计"的唯一作业手册。它回答 "设计什么才好玩"(故事结构/分支/属性/结局/美术/音/UI 范式),与
littlejs-game-dev.md(回答"代码怎么写")配对:设计阶段产故事概念 → 代码生成阶段照 littlejs-game-dev 产代码。体例与sim-business-game-design.md(经营品类)同构。铁律(创始人 2026-06-21):"好玩 = 上游设计层职责",不在 runtime/插件。插件只让设计能被 juice 出手感;这份 skill 负责让故事本身好玩。
可达性边界:产出必须落得到 A-model 轻量运行时——LittleJS 2D 手机竖屏(390×844)、单/少场景、便宜模型可生成的多文件代码、11 注入插件能力域。故事再好,落不到这个运行时就是空想——见 §9 红线。
上位标准:分层质量与观测线对齐
docs/architecture/架构/生成引擎/游戏质量与爆火能力.md(四层模型 / §4 rubric 计分制 / §7 便宜档档位)。剧情是纯叙事品类:按其 §7 申报机制,以「章节推进 + 结局图鉴」为品类替代成长轴(替代理由与判定见 §2、§10)。证据基:范式蒸馏自近年微信/抖音「互动叙事 / 文字冒险 / 恋爱养成剧情」品类的成熟模式(训练知识,非实时榜单);范式稳定可用,具体举例供参照。
0. 为什么这一品类爆(底层动机 —— 设计要击中这些)
剧情互动小游戏的"爽"来自 6 个心理引擎,好玩 = 同时点燃尽量多个;无趣 = 一个都没点燃:
- 选择自主权:"这是我选的路"——每个选项都可感知地改变走向,玩家为自己的故事负责。
- 好奇心钩子:"选另一个会怎样?"——分支的未知面比已知面更勾人;结局图鉴的 ??? 就是钩子实体。
- 代入感:第二人称短句 + 具体细节(风灯、脚印、火漆)让玩家 3 句话入戏。
- 属性养成:勇气/机智/好感随选择累积、肉眼可见地涨——"我在变强/她更喜欢我了"。
- 收集欲:多结局图鉴凑齐的强迫感(已解锁 2/5,还差 3 个)。
- 低门槛零操作压力:读一段、点一下,通勤碎片 3 分钟一局,无手速无失败焦虑。
反"无趣"总纲:剧情类的无趣几乎总是因为——选项没有重量(选啥都一样)/ 文本又长又抽象 / 单结局一本道 / 属性是死数字(不影响剧情)/ 无画面感纯文字墙。§10 是落地清单。
1. 核心玩法范式(可达子集 —— design 优先从这里选)
| 范式 | 一句话 | 我们运行时怎么落(插件) |
|---|---|---|
| 分支选择(品类地基) | 场景文本 + 2~3 选项,不同选择通向不同节点,任选皆推进 | core 节点图 + hud-ui 选项按钮 + session-score 计推进 |
| 属性累积 | 选择给属性 +1(勇气/机智/好感…),over 屏回顾"这一局的我" | core applyEffects + hud-ui 属性 HUD |
| 属性检定 | 关键节点按属性开门:勇气 ≥3 才出现「正面迎上」选项(差一点=重玩钩子) | core 节点图 choices 加 require 条件 + 灰选项露出"差一点" |
| 多结局图鉴 | 结局 ≥3(win/lose 都有),over 屏露出「已解锁 x/N + ???」 | save 持久结局集合 + over 屏图鉴行 |
| 线索收集 | 某些选项拾取线索,持线索解锁隐藏分支/真结局 | core stats 当布尔线索位 + 检定同机制 |
| 章节推进 | 一局 = 一章(3~6 幕);「第 N 幕」进度可见 | stepCount 计幕 + hud-ui 顶栏 |
| 好感路线 | 恋爱/伙伴线:好感度决定结局归属(A线/B线/单人线) | 属性累积 + 结局判定按属性分流 |
组合配方(经验):一款轻量剧情 = 分支选择(地基)+ 1 个属性轴系(2 轴起步)+ 多结局图鉴 + 检定或线索择一。别堆超过 2 个附加机制(便宜模型 + 单屏扛不住,也稀释代入感)。
2. 故事结构 / 进度 / 留存设计
- 微型三幕:引子(1 节点,给目标:取信/逃生/赴约)→ 发展(2
4 层分支,给两难)→ 结局(35 个)。深度 3~5 步一局(2~4 分钟),宁短勿拖。 - 首 3 分钟(决定生死):① 0–10 秒:menu 引子 ≤3 句即点开始(零阅读门槛靠短);② 10–60 秒:第一次分支 + 属性首涨(立刻"我在塑造这个故事");③ 1–3 分钟:走完首局到一个结局,图鉴露出 ??? 的未解锁位——"还有别的结局"是剧情类的"下一个解锁"。
- 留存钩子(纯叙事品类的成长轴替代,上位标准 §7 申报):剧情没有数值滚雪球,替代轴 = 章节推进(幕数可见)+ 结局图鉴(x/N 收集);检定"差一点"(勇气还差 1 点才开这扇门)制造定向重玩;申报判定:图鉴分母 ≥3 且 ??? 可见、每局 ≤4 分钟可重开,替代轴才成立。
- 重玩设计铁律:分支要早分(起点就分,别第 3 步才分)——首选项不同就进不同场景,重玩第一分钟就有新内容;汇流要省着用(全汇流=假分支)。
- 节奏:两难选项(都想选)与安全选项(明确好坏)交替;lose 结局也要"有味道"(死得精彩=想再来),别写成惩罚。
3. 数值与文本节奏(剧情类的 balance)
- 属性轴 2 个起步(勇气/机智、好感/理智、侠义/内力),每选择 +1;检定门槛设在满值 -1(如深度 4 的局,门槛 3)——"差一点"的张力,同 sim-business 卡点原则:是诱惑不是墙。
- 文本红线(design 必须给目标值,别让 code agent 拍脑袋):节点正文 ≤3 短句 / ≤60 字(手机竖屏 6 行内);选项 label ≤10 字;结局正文 ≤4 句。超长 = 玩家跳读 = 代入感清零。
- 分支预算:节点总数 7~12 个(含结局)、结局 3~5 个、深度 3~5 步——便宜模型一稿写得完、玩家一局读得完。无回环(任意路径有限步必达结局),汇流 ≤2 处。
- 结局配比:win : lose ≈ 2:1;至少 1 个"藏得住"的结局(需特定路径/检定),图鉴才有收集感。
- 看广告点位(可选,自愿不打断):解锁结局提示(指一条没走过的路)/ 直接解锁图鉴一格。剧情类别做复活付费(没有失败复活语义)。
4. 美术风格范式(可达 + mmx 可产 + 程序化兜底)
| 风格 | 调性 | 配色 | 适合 |
|---|---|---|---|
| 氛围剪影(主流首选) | 悬疑/夜色 | 深底 + 单点暖光(烛光橙/月白) | 悬疑/探险/古宅 |
| 治愈水彩 | 温暖日常 | 奶油底 + 低饱和粉绿 | 恋爱/日常/童话 |
| 国风水墨 | 雅致留白 | 宣纸底 + 墨黑 + 朱砂点 | 武侠/古风/志怪 |
| 像素夜景 | 复古 | 有限色板 | 轻怀旧(谨慎) |
- 场景 = 底色氛围 + 1~2 个剪影元素(宅邸/灯/月),换场景换剪影——程序化就能做出"到了新地方"。
- 一致性之根:全程共用一组"风格词"(mmx 每图都带);剧情类再加一条:各场景同一画师同一光源调性,否则换场景像换了游戏(见
_template-story/assets/gen-ledger.md)。 - 程序化兜底:无 mmx 时,深色底 + 剪影矩形 + 亮窗点 + 羊皮纸文本卡就成立(_template-story 纯程序化即过门);别因美术阻塞可玩性。
5. UI 范式(hud-ui 全可达)
剧情游戏 UI 套路(都用 hud-ui 落):
- 文本卡:羊皮纸/卡片底 + 描边,正文逐字换行(中文无空格,按字宽断行);
- 选项按钮:纵排 2~3 个、宽 ~80% 视口、高 ≥48(手指友好);命中区=绘制区=取证 targets 三者同源(经 core.layoutChoices 一处算,见 §9);
- 属性 HUD:顶部一行"勇气 2 机智 1",涨的瞬间配粒子(particles-juice);
- 幕数进度:右上角「第 N 幕」——章节推进可见(替代成长轴的可见性);
- 结局结算屏:结局称号大字(「果敢信使」)+ 结局正文卡 + 属性回顾 + 图鉴行(已解锁亮称号、未解锁 ???) + 再读一次;
- 呼吸提示:选项区上方"▼ 你的选择"缓缓明灭——引导视线,也让静态文本屏有活帧。
6. 音乐 / 音效范式(audio-music 可达)
- BGM:低速氛围循环(悬疑 bpm ~70 / 治愈 bpm ~90);可按幕切情绪(audio-music
setIntensity)。mmx:mmx music generate --prompt "夜色悬疑,弦乐低音,克制" --instrumental --bpm 70。 - 音效(代入感命脉,务必有):选项确认「嗒」(click)· 属性上涨「叮」· 检定通过号角(win)· lose 结局低音(fail)· 结局达成欢呼(win)。每次选择必有确认音——剧情类的"即时反馈"一半靠它(audioMusic
playSfx语义名自动映射,无声卡静默降级不崩)。 - 红线:宁可程序化音效,也别没有反馈音(无声翻页 = 无趣的隐形元凶)。
7. 首屏 / 留存视觉钩子(通用,MVP 也用)
- 首屏 3 秒抓人:标题 + 引子 ≤3 句 + 一个悬念(「屋里似乎还有别人」),立即可点开始——别放长背景设定墙;
- 结局图鉴 ??? 当门面(未知结局的诱惑);
- 属性回顾的"这一局的我"(勇气 3 机智 1 = 我的人格镜像);
- lose 结局也精彩(「误入陷阱」的戏剧性 > 惩罚感)。
8. 设计阶段输出配方(生成 agent 据 brief 产出这些 → 喂代码生成)
给定一句话 brief,设计阶段应产出一份结构化故事设计,逐项落到运行时:
- 题材与引子(标题 + ≤3 句开场,含目标与悬念);
- 属性轴 2 个(轴名要贴题材:武侠=侠义/内力,恋爱=好感/理智);
- 故事节点图(7
12 节点含 35 结局:每节点 = 正文 ≤60 字 + 2~3 选项〔label ≤10 字 + next + effects〕;标死:无死链、无回环、win/lose 都有); - 检定/线索(择一,可选):哪个节点检定哪个属性、门槛多少(满值-1)、差一点时露什么;
- 结局表(id / 称号 / outcome / 正文 ≤4 句;至少 1 个藏得住);
- 美术风格词(一组,全场景共用同调性)+ 场景剪影清单(标 mmx 或程序化);
- 音效清单(选择确认/属性涨/结局 win/lose)+ BGM 情绪;
- UI 布局(文本卡/选项区/属性 HUD/图鉴行,§5);
- 首 3 分钟脚本(逐步:引子→首分支→首属性涨→首结局→图鉴 ??? 露出)。
MVP-first 铁律(关乎 code agent 能否收敛):设计聚焦可玩核心 —— 分支选择 + 1 属性轴系 + 3 结局 + 图鉴 + 基础音效,节点 ≤10 个起步。语音演出 / 立绘系统 / 章节解锁付费 / 存档树回溯 / 打字机逐字动画 等一律标「后续·MVP 不做」,别一稿堆满 —— 设计太满 → code agent 实现负担过重 → read-thrash 不收敛。先出能玩的一章,再谈长篇。
这份设计 = 代码生成阶段的"图纸";生成 agent 照 littlejs-game-dev 把它实现为多文件代码(剧情品类从
game-runtime/games/_template-story/骨架起步,故事数据落 core.js 参数空间)。设计阶段把"好玩"想清楚,代码阶段只管正确实现。
9. 可达性红线(落不到运行时的设计 = 废稿,必剔除/简化)
- ❌ 长文本墙 / 全屏小说页 → 节点 ≤60 字 + 文本卡(§3 红线)。
- ❌ 语音演出 / 视频过场 / 立绘表情系统 → 程序化剪影 + 少量 mmx 静态图。
- ❌ 存档树 / 回溯任意节点 UI → 一局一路走到结局,重玩靠「再读一次」+ 图鉴钩子。
- ❌ 自由输入对话(打字回复)→ 全部预设选项(2~3 个)。
- ❌ 计时逼选 / QTE 限时选项 → 剧情类零时间压力(它的爽点是"想清楚再选");要紧张感用文案不用倒计时。
- ❌ 选项做成「先选中再确认」两步:零-LLM 自动验收 driver 只会单击
occupied:true目标、跟不动两步 → 九门 H 验不到进展 = 好游戏被误判 → ✅ 选项单击即推进;深度靠分支/检定/图鉴,不靠交互步数。 - ❌ 结局后自动跳回菜单/自动重开 → 结局必须 latch(phase 驻留 over,取证 targets 清空),「再读一次」只在玩家点按钮时触发。
- ✅ 取证契约(九门可达,钉死):
_forensicsView().state()的targets在 play 态列当前每个选项(中心坐标occupied:true)、menu/over 态空数组;score= 已做选择数,随推进单调 +1;选项命中区=绘制区=取证 targets 必须同源一处算(_template-story 的core.layoutChoices即此;三者一旦分叉,driver 点的坐标就不再是真命中区)。场景名钉死menu/play/over。 - ✅ 留下的:分支选择、属性累积/检定、线索、多结局图鉴、章节推进、好感路线 —— 全在 11 插件 + 单屏 + 便宜模型可生成范围内。
10. 反"无趣"落地清单(design 自检,逐条必过)+ 品类 rubric
通用 8 条自检(与 sim-business-game-design.md §10 同一张表,所有品类通用):①即时反馈 ②可见成长 ③下一个解锁 ④30 秒爽点 ⑤数值滚雪球 ⑥情感锚 ⑦放置回归 ⑧音反馈。剧情类的对位:①=选择确认音+粒子;②=属性 HUD 上涨 + 幕数推进;③=图鉴 ??? 与检定"差一点";⑤⑦天然弱(纯叙事无滚雪球/放置,按上位标准 §7 申报以「章节推进+结局图鉴」为替代轴,不硬凑)。
剧情品类扩展 rubric(5 条,喂 LLM 丰富度验证 agent · 非阻塞)。规范来源 = 质量模型 SoT §4:每条 0/1 + 层标(L2 内容丰富 / L3 留存结构 / L4 传播钩子),与通用底座 12 条分母分开、独立小计(通用底座第 12 条「核心操作非无脑」的剧情对位 = 检定/分流即真实选择代价,选错落 lose 结局);条目形状 =(编号 / 层标 / 一句可判定判据 / 一对正反例),与 cheap-worker/cheap_verify.py 的 RICHNESS_CHECKLIST 三元组同形,供品类扩展评分接线时直接注入;纯 LLM 评分,绝不写成代码校验、不进九门、不进脚手架(创始人红线):
五条(选择有重量 / 场景有画面感 / 结局图鉴钩子 / 属性塑造可见 / 结局可炫耀)的机器版 = 单源 cheap-worker/fixtures/genre-rubrics/narrative.json(2026-07-04 迁出,判据与正反例一字不动;改条目只改 fixture,本节不再维护表格副本——评分尺变更的金标复验纪律见下段)。
金标锚点(质量模型 SoT §4 规范三:每品类 ≥1 金标正例 + ≥1 薄反例;rubric 文本或评分 prompt 变更须金标复验,单款分组小计漂移超 ±1 即回退)——2026-07-03 C1 欠账清偿,以 12 条口径正式重锚(生产口径 genre=narrative,同输入复采样 n=3 取中位,评分入口 cheap_verify.verify_richness):
- 金标正例 =
p11a-s1(「深渊回声」深海科考题材,brief 同cheap-worker/fixtures/golden-samples/narrative/p11a-s1/evidence/run-summary.json,源已固化入仓cheap-worker/fixtures/golden-samples/narrative/p11a-s1/)。12 条口径基线 = 8/12:L2 5/7 · L3 1/3 · L4 2/2;第 12 条「核心操作非无脑」命中(属性检定开门 + 结局按属性分流构成真实选择代价,选错落 lose 结局);品类扩展 5/5。 - 薄反例 =
_template-story骨架原样(轻起点「古宅一夜」演示故事,无 run-summary,brief 取演示题材一句话)。12 条口径基线 = 7/12:L2 4/7 · L3 1/3 · L4 2/2;第 12 条命中;品类扩展 4/5。刻意保持"能过门但未丰富",丰富是生成 agent 的活。 - 正反例分差(重述):通用 8/12 vs 7/12 差 1、品类 5/5 vs 4/5 差 1,比旧尺(7/11 vs 3/11 差 4)大幅收窄。收窄不是评分尺退化,而是纠了旧尺对薄反的两处高估:① 旧薄反 3/11 系空 brief + 单发 stingy 观测,低于骨架真实地板——该骨架恒有 juice(即时反馈)+ playSfx(音反馈)两个 L2,真实 L2 地板 ≥2;② 纯叙事天然缺数值成长类判据(可见成长/数值滚雪球/放置回归),judge 在这几条上跨样摇摆,通用 L2/L3 噪声大(替代轴按 §2 以「章节推进 + 结局图鉴」申报)。故本品类稳定判别信号不在通用 12 条、而在品类扩展段 + L4(跨样最稳)与内容深度;通用分只作粗档观测,别当紧数字读。
- 方差纪律:M3 单发方差 ±2~4 实测复现(p11a-s1 genre=None 隔离三样 8/5/5、中位 5/12,而生产口径 genre=narrative 三样 8/8/8),故一律取中位、且以品类-coeval 生产口径为锚(本轮更稳)。品类段(正例 5/5、薄反 4/5)与 L4(均 2/2)跨样稳定,是回退判定最可靠的观测维。
- 史注(旧尺):2026-07-02 首批曾以 11 条旧尺记 正例 7/11(L2 4/6·L3 1/3·L4 2/2)/ 薄反 3/11(L2 1/6·L3 0/3·L4 2/2)、差 4 分;旧尺薄反 L2 1 低于骨架地板已如上纠正,12 条口径为现行正式基线。
相关
- 代码层实现 →
littlejs-game-dev.md(11 插件 API / 结构 / 资产-mmx / 工厂契约) - 品类骨架(few-shot 过门正例)→
game-runtime/games/_template-story/(从它起步换故事;README 有「你写什么 vs 调什么」边界) - 便宜模型生成 worker / 九门 →
cheap-model-game-generation.md - 经营品类对照(体例同构)→
sim-business-game-design.md - 上位质量标准 →
docs/architecture/架构/生成引擎/游戏质量与爆火能力.md(§4 rubric 计分制 / §7 档位观测线)