跳转到内容

5. 奖励照料,并写出两个结局

本课将完整的 0.3 草稿升级为 0.4。只修改 protocol_version 不够:还要加入 progression,并检查素材访问规则。完成稿新增一张标记为 reward_only 的幼苗纪念图,避免让尚未解锁的奖励图进入普通故事发现路径。

增加公开布尔值 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 是已获得结果的收藏呈现,不是公开状态计数器。

路径 作者指定的观察序列 预期结果
短暂来访 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 几何教学肖像。
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.json

Windows 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

下一课