8. 理解并迁移旧版 0.2 Pack
这是独立的迁移练习,不是 VN Pack 的下一次修订。下载本课的 start(0.2 宿主配置,修订 20)和 finished(0.3,修订 21)。它们描述同一个温室情境。之后的发布练习会回到第 7 课的作品分支。
先理解旧版模型
Section titled “先理解旧版模型”旧版 Pack 将读者命名为角色 visitor,在 actors 中声明 Rowan,在 canon 中记录初始干燥土壤,并提供 shared_care 事件卡。入口连接出场角色、已确立事实与读者已知事实。experience 描述角色扮演约定;instructions 是对象,与 0.3 的字符串形式不同。
使用本站确切的 0.2 宿主配置 Schema。便携 Playground 的 0.2 Schema 可能不同。新的教学校验器支持附带的宿主快照,但不能取代旧版服务的准入审核。来源记录保留 proposed,因此示例有意保持未达到准入条件的状态。
迁移含义,不只是改字段名
Section titled “迁移含义,不只是改字段名”| 0.2 概念 | 本练习在 0.3 中的处理 |
|---|---|
actors 与参与者 persona |
Rowan 变成角色读者卡;读者自主性与 Rowan 的行为写入 instructions |
公开的初始 canon 事实 |
dry_soil 变成始终选取的公开内容块,表述为到来时的事实 |
event_cards.shared_care |
已完成照料的观察答案、状态更新规则与引导;不强制结果 |
opening_text |
entries[].opening 的段落列表,以及准确的对话标注 |
| 入口角色与知识关系图 | 明确的指令、公开内容与稳定入口/卡片 ID;不是直接复制关系图 |
完成稿有意把照料重新设计为可重复的状态增量,上限为 2;旧版事件则只能发生一次。这是作者选择的行为变化,不是自动向后兼容。干燥土壤的历史事实在浇水后仍然成立,因为它说的是土壤在到来时很干。当前湿润度则由状态表达。
对照两份完整 JSON,在身份含义未变的地方保留 pack_id、arrival 和 rowan。移除过时的旧版结构,不要将它们留在新协议旁边。拆分文字后重新计算段落摘要,将新修订号设为 21。
两边分别使用自己的 Schema
Section titled “两边分别使用自己的 Schema”分别校验 start/pack.json 与 finished/pack.json,工具会选择各自对应的确切 Schema。试着只修改起始稿的 protocol_version,它应当失败;随后撤销这次实验。手动检查隐私和知识假设:本练习只有公开事实,没有展示秘密信息的迁移。
真实迁移时保留备份,记录有意改变的行为,执行服务语义检查,并私下重放重要选择。已有旅程保留原来的 Pack 修订;发布新修订并不会自动迁移它们的保存状态。
在本地检查作品
在解压目录中创建环境并安装一次固定版本的依赖,然后检查两份文件。修改之后再次检查起始稿。每课都可以使用相同命令。
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.3 随后显示确切 Schema SHA-256。这是结构检查,不代表服务准入或真实试玩通过。
完成稿中的可用片段
此片段直接取自经过检查的下载文件,并非完整 Pack。请在 start/pack.json 中修改相应字段,或对照 finished/pack.json。
{
"legacy_canon": [
{
"id": "dry_soil",
"entry_ids": [
"arrival"
],
"statement": "访客到来时,幼苗的土壤是干的。",
"kind": "initial_state",
"origin": {
"basis": "creator_design",
"source_refs": [],
"review": "proposed"
},
"disclosure": "public",
"reveal_condition": {
"literal": true
}
}
],
"migrated_content": [
{
"id": "dry_soil",
"entry_ids": [
"arrival"
],
"text": "访客到来时,幼苗的土壤是干的。",
"selection": "always",
"when": {
"op": "literal",
"value": true
}
}
],
"migrated_actor": {
"id": "rowan",
"kind": "actor",
"display_name": "Rowan",
"introduction": "耐心的温室照料者,还愿意为一株幼苗和一位访客留些时间。",
"entry_ids": [
"arrival"
],
"reveal_when": {
"op": "literal",
"value": true
}
}
}查询相关字段: content · reader_cards · runtime