5. 奖励照料,并写出两个结局
本课将完整的 0.3 草稿升级为 0.4。只修改 protocol_version 不够:还要加入 progression,并检查素材访问规则。完成稿新增一张标记为 reward_only 的幼苗纪念图,避免让尚未解锁的奖励图进入普通故事发现路径。
让奖励能够真正达成
Section titled “让奖励能够真正达成”增加公开布尔值 left 和 kept_seed,默认均为 false。为观察 action 增加 leave 与 accept_seed。实际离开后,record_departure 规则设置 left;只有共同照料已达到 2 且读者接受种子时,accept_seed 才设置 kept_seed。回合前的引导让 Rowan 提供种子,但读者可以拒绝。
这个单选观察在同时发生多项行动时,优先记录离开,其次收下种子,最后照料。因此要进入种子结局,应先在一轮中收下,再在下一轮离开。如果故事需要同时记录多个行动,应重新设计观察并验证它们之间的关系,不能假定单选会记录所有行动。
greenhouse_friend 成就在共同照料达到 2 时解锁。对应的 seedling_pin 收藏品使用 storyorbit.pin-badge/1、round-pin/1 模型、整图正方形裁剪及 holo/1 表面效果。Pin 是已获得结果的收藏呈现,不是公开状态计数器。
为每个结局写清条件
Section titled “为每个结局写清条件”| 路径 | 作者指定的观察序列 | 预期结果 |
|---|---|---|
| 短暂来访 | leave |
quiet_goodbye |
| 共同照料 | tend、tend |
获得成就,故事仍可继续 |
| 把种子带回家 | tend、tend、accept_seed、leave |
seed_home |
礼物路径最后会同时满足两个结局。seed_home 的优先级为 20,quiet_goodbye 为 10,因此更具体的种子结局胜出。结局会结束旅程,成就不会。测试会演练这些指定观察序列,也检查过早接受种子不生效,以及照料值不超过 2。
guidance.requirements[].condition_ref 指向当前结果的 when 条件树内部。空字符串指向根条件;/conditions/0 和 /conditions/1 指向种子结局的两个叶条件。标签与提示应说明有用的行动,不能在条件尚未满足时承诺已经成功。这些路径不是从整个 Pack 根部开始的。
将修订号设为 6,使用附带的 0.4 Schema 校验。私有试玩时检查成就时机、奖励显示、两条结局与提示文字。仅修改展示文字时保留结果和徽章 ID。改变达成条件、结局优先级、奖励图片、徽章关联或收藏配方会改变身份,应创建新 ID 并更新引用。服务会以 PROGRESSION_ID_REUSED 拒绝复用旧 ID 却改变奖励语义的修改,以保护已有收藏。可选的复用角色功能见角色选角。
原创教学素材
以下是下载包中真实图片的静态预览。立绘帧分别展示便于对照,这里不是真实播放器。

greenhouse_art
rowan_neutral
seedling_reward在本地检查作品
在解压目录中创建环境并安装一次固定版本的依赖,然后检查两份文件。修改之后再次检查起始稿。每课都可以使用相同命令。
macOS / Linux
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python check.py start/pack.json
.venv/bin/python check.py finished/pack.jsonWindows PowerShell
py -3 -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt
.venv\Scripts\python.exe check.py start/pack.json
.venv\Scripts\python.exe check.py finished/pack.json完成稿的预期输出: Structural check passed: Creator Pack 0.4 随后显示确切 Schema SHA-256。这是结构检查,不代表服务准入或真实试玩通过。
完成稿中的可用片段
此片段直接取自经过检查的下载文件,并非完整 Pack。请在 start/pack.json 中修改相应字段,或对照 finished/pack.json。
{
"achievement": {
"id": "greenhouse_friend",
"title": "一起照料的片刻",
"description": "与 Rowan 一起照料幼苗两次。",
"when": {
"op": "gte",
"path": "/trust",
"value": 2
},
"artwork_asset_id": "seedling_reward",
"badge_id": "seedling_pin",
"guidance": {
"summary": "分享两次小小的照料。",
"next_step": "与 Rowan 分别完成两次照料行动。",
"requirements": [
{
"id": "care_twice",
"condition_ref": "",
"label": "与 Rowan 分别完成两次照料行动。",
"hint": "与 Rowan 分别完成两次照料行动。"
}
]
}
},
"ending_conditions": [
{
"id": "quiet_goodbye",
"priority": 10,
"when": {
"op": "eq",
"path": "/left",
"value": true
}
},
{
"id": "seed_home",
"priority": 20,
"when": {
"op": "all",
"conditions": [
{
"op": "eq",
"path": "/left",
"value": true
},
{
"op": "eq",
"path": "/kept_seed",
"value": true
}
]
}
}
],
"pin": {
"id": "seedling_pin",
"title": "温室纪念",
"description": "一个安静午后的纪念。",
"collectible": {
"protocol": "storyorbit.pin-badge/1",
"model": "round-pin/1",
"front_asset_id": "seedling_reward",
"crop": {
"x": 0,
"y": 0,
"width": 1,
"height": 1
},
"finish": "holo/1"
}
}
}查询相关字段: progression