让预制配图进入当前场景
一次生成可以选中一张创作者预制图,铺到这一轮的所有旁白 block;对话继续使用角色舞台。读者手动触发 Imagine 后,生成图也直接进入当前页面,阅读和选择入口继续可用。
本教程从第 6 课的完整温室 Pack出发。先复用已有图片跑通规则,再替换成自己的横竖版作品。协议仍是 0.5,不需要迁移旧 Pack;但校验器、服务端和阅读器必须支持新增字段。本文核对的 Schema 快照 的 SHA-256 是 18756b09a11f4f234d1e2fcd5237a93be0b4bad8f9afae7d2a99243d7d9cd959。
1. 给画面一个稳定的身份
Section titled “1. 给画面一个稳定的身份”下载并解压第 6 课,编辑 finished/pack.json。把下面这个对象追加到已有 illustrations 数组,保留原来的开场插图。它引用课程已经附带的 greenhouse_art,所以这一步无需新增文件。
{ "id": "greenhouse_after_care", "asset_id": "greenhouse_art", "variant_asset_ids": [], "alt": "夕阳下,绿色窗框内的长凳上放着一株幼苗。", "actor_ids": [], "entry_ids": ["arrival"]}asset_id 是素材目录里的 ID;alt 如实描述画面。这里是无人场景,所以 actor_ids 为空。若换成画有 Rowan 的配图,把真实出现的角色卡 ID rowan 加入 actor_ids;有多个角色就全部列出。不要为了更早显示图片而省略人物。
素材必须是已声明的普通静态图片:access: "standard",且不能是 reference_only。PNG、JPEG、WebP 可用于配图;APNG 属于角色表演,不能放在这里。实际文件的 SHA-256、字节数、MIME 和上传附件必须与声明一致。
2. 先判断资格,再判断这一轮是否适合
Section titled “2. 先判断资格,再判断这一轮是否适合”保留已有 presentation.protocol 和 presentation.bindings,在 presentation.illustration_rules 数组中加入这条规则:
{ "id": "after_shared_care", "illustration_id": "greenhouse_after_care", "when": { "op": "all", "conditions": [ { "op": "gte", "path": "/trust", "value": 2 }, { "op": "eq", "path": "/left", "value": false } ] }, "match": "整轮旁白始终发生在黄昏的温室里,幼苗长凳适合作为场景全景;没有转到其他地点或时间。", "priority": 10}上面两段都是局部对象,不能代替完整 Pack。将 manifest.revision 从课程的 7 增加到 8;自己的作品使用更大的新修订号。保留其他故事、状态、开场和成长系统字段。
when 使用与成就相同的状态条件语法。这个示例要求共同照料达到 2,且读者尚未离开。它只决定规则能否成为候选,不代表画面一定符合当前故事。这里不能使用 observed;如果某个行动影响资格,先让现有运行时规则把行动记录到状态。
match 描述图片适合的当前场景。服务把合资格规则放进一次 JEV 语义判断,检查完整的一轮生成;不会为每个 block 分别调用。适合的描述应涵盖地点、时间、人物和关键行动,且能覆盖整轮旁白。仅提到温室、回忆温室、打算前往温室,或者叙述中途离开,都不足以命中这张图。匹配规则也不会命令叙述者把故事改成图里的内容。
显示资格不等于素材保密。 when 只管这条配图规则,图片本身仍受素材 reveal_when、入口和所画角色的披露条件约束。若图片含未揭露内容,应使用独立素材并正确设置这些条件;不要把它同时用作公开封面。同文件别名也受已声明的所画角色条件约束。每个素材 ID 和变体都需要正确配置 reveal_when;不要把私密文件换个 ID 同时登记为始终可见的公开素材。
3. 理解成就与配图的时间边界
Section titled “3. 理解成就与配图的时间边界”候选资格读取这一轮开始前的状态和披露范围。同一轮刚解锁的角色或素材,最早在下一轮成为候选。温室课程可以这样试玩:
| 轮次 | 开始时 /trust |
本轮发生的事 | 预期 |
|---|---|---|---|
| 第一轮 | 0 | 完成一次照料 | 状态升到 1;这条规则不参与匹配 |
| 第二轮 | 1 | 再完成一次照料 | 状态升到 2,成就可结算;这条配图规则仍不参与 |
| 第三轮 | 2 | 继续留在黄昏温室 | 规则有资格;语义也匹配时展示配图 |
| 后续一轮 | 2 | 叙述从温室转到回家路上 | 单张图无法覆盖整轮,保留普通舞台 |
配图不会创建成就、永久解锁或额外状态。开场也不会自动运行这条续写规则;固定开场插图继续使用 opening_illustrations 的准确段落位置,开场舞台继续使用 opening_stages。
4. 为同一场景准备横竖版
Section titled “4. 为同一场景准备横竖版”先把真实横竖版文件分别加入 assets,再把主图 ID 放在 asset_id,另一张放进 variant_asset_ids。两张必须是同一场景、同一组人物、同一件事的不同构图。白天与夜晚、告白前与告白后,应该使用不同的 illustration 和匹配规则。
variant_asset_ids 最多 8 个,不含主图;ID 不能重复。一个候选的主图和全部变体都要满足披露条件,因此不能把未解锁人物藏在横版里。阅读器根据图片实际尺寸和当前视口选择构图,没有 ios_asset_id 或 web_asset_id 字段。
为手机准备接近竖屏的画面,为桌面准备横构图。Web 保留完整构图,并用模糊延展填补比例差;iOS 对比例相近的图可能裁剪以填满视口,比例差较大时使用模糊延展。让人脸和关键细节远离边缘,竖版素材能减少手机上的构图差异。旋转屏幕只会选择适合的已有配图变体,不会生成新图。
5. 图片多时,怎样保持匹配清楚
Section titled “5. 图片多时,怎样保持匹配清楚”先用 entry_ids 和已有状态条件缩小候选范围,再写简洁、可区分的 match。例如分别按当前章节、地点和关系阶段组织,而不是把所有图片都设成始终可用。entry_ids 属于 illustration;状态条件写在 rule 的 when 中。
多个规则命中时,取最高 priority,范围为 -1000 到 1000,默认 0。最高优先级若仍对应不同 illustration,系统放弃选图;数组顺序不会打破平局。若最高优先级的规则都指向同一个 illustration,则可以选择该图。优先级负责命中后的选择,不能减少送去匹配的候选数量。
当前每个 Pack 最多 128 条规则、128 个 illustration 和 128 个素材;变体也占素材额度。一次配图判断只有一次 provider 尝试、6 秒预算,候选问题与整轮文本合计最多 60,000 字节。没有合资格候选或没有旁白时不发起判断;超限、超时、失败或有歧义时,故事继续,使用普通舞台。系统不会自动把大目录拆成多批请求。
6. 在 iOS 和 Web 中看到什么
Section titled “6. 在 iOS 和 Web 中看到什么”读者可以在整轮仍流式生成时开始阅读。配图在整轮成功接纳后确定:若还停留在这一轮的旁白,图片直接进入当前舞台;已经读过去,则回看该 block 时显示。图片到达不会移动阅读位置。
选中的图覆盖本轮所有旁白,包括结束语;对话保留角色舞台。进入或回到相应页面时,画面淡入并逐渐放大到舞台全屏,文字和阅读控制保留;普通刷新不会重新播放,打开覆盖界面时动画暂停。“减少动态效果”开启时静态显示。缺失图片不会阻断阅读。
Imagine 仍由读者主动触发。完成后直接使用相同的场景表面,无需再点一次查看;该页面的 Imagine 图优先于预制图,但不会覆盖同轮其他页面。iOS 根据实际竖屏视口请求合适的竖版尺寸,Web 也根据自身视口选择。output_size 是 Imagine 请求字段,不要放进 Creator Pack。回看或旋转继续复用已生成图片,不会再次购买。
7. 校验并私有试玩
Section titled “7. 校验并私有试玩”在解压目录运行 .venv/bin/python check.py finished/pack.json;Windows 使用 .venv\Scripts\python.exe check.py finished/pack.json。尚未安装校验依赖时,先按第 6 课下载内的 README 完成安装。确认使用的是本文快照或支持相同字段的更新快照;旧版 0.5 Schema 可能拒绝新增字段。
本站测试把本文两个 JSON 对象合并进中英文第 6 课完成稿,验证 Schema、引用和上述状态资格边界。它们没有发起真实 JEV 或 Imagine,也不代表你的画作已通过服务端试玩。使用兼容主机创建一个新修订的私有旅程后,检查:
- 连续照料两次,再留在温室续写;确认“具备资格”和“语义命中”是两个步骤。
- 混合旁白和对话,确认预制图只覆盖旁白;换地点、只回忆或提及温室时不应误配。
- 图片晚到时阅读位置不变;离开再回到该页面,图片复用且入场效果重播。
- iOS 竖屏、横屏及 Web 都能继续阅读;主动 Imagine 完成后直接显示,旋转与回看没有新生成。
排查不出图时,依次核对确切 Schema、入口、轮前状态、所有变体和所画角色的披露、整轮是否换景,以及优先级平局。记录实际试玩结果与客户端版本,再按第 9 课发布修订。规则修改不会追溯重新匹配已接纳的旧段落;旧旅程保留它开始时的 Pack 修订。