我方剧本框架 · 对齐 V3
任何剧本须符合本框架才能录入。校验规则见 script_validator.py,完整文档:剧本框架约束_V3.md。仅展示要点。
顶层结构
{ meta, starter?, scenes, events?, battles?, npcs?, items?, shop?, map, quota? }
必填:meta / scenes / map。其余可选。
meta(必填)
| 字段 | 必填 | 说明 |
| id | 必 | 全局唯一,拉丁/数字/下划线 |
| title | 必 | 标题 |
| version | 必 | 版本号 |
| initialScene | 必 | 开局场景,须存在于 scenes |
| chapters | 可缺省 | 章节定义(按章解锁商店/地图/AI),缺省按 sceneId 前缀自动归章 |
| completionScene | 可缺省 | 通关终点,触发跨剧本奖励;缺省回退识别 ending_ 开头无 options 场景 |
场景 scene
- 必填:id / name / desc;
options 分支。
- 可选增强:ambience(氛围)/ details(细节)/ hints(提示)/ interactables(可交互物件)。
- 选项的 goto/onPass/onFail 目标必须在 scenes 中存在。
- triggers 里 when.battleId 对应的战斗须存在。
战斗 battle · 金币
{ "id", "enemies":[{"monsterRef":"wolf","count":2}], "terrain",
"reward":{ "gold":50, "xp":100, "items":["potion"] }, "escapeDc":12 }
reward.gold=队伍局内金币(队级共用);reward.items 进整局共享背包;monsterRef 须在怪物库(D-1)。
两套金币区分:局内 progress.gold(战斗得,商店花) vs 跨剧本 characters.gold(通关钱袋)。剧本只写 reward.gold。
商店 shop(顶层可选)
"shop":{ "goods":[ { "id":"potion","price":50,"chapter":"phand" } ] }
goods[].id 须在 items;price 缺省用 items 的 value;chapter 可选(缺省全章可购,指定则仅该章节开放)。购买=团长操作,给指定成员,扣队级金币。
地图 map + 探索点
{ "gridW","gridH","cells":[{id,x,y,label,sceneId}],"paths":[{from,to}],"playerStart","exploreNodes":[] }
cells 非空;playerStart 在 cells;paths 两端在 cells。探索点 exploreNodes:id 唯一、type∈npc/chest/landmark/env、cellId 须是某格 sceneId、label/desc/info 有、effect 道具在 items。
AI 任意行动
局内左下可自由行动(走 AI)。引擎自动从「当前场景可直达 goto + 当前章场景」生成白名单,AI 只能跳白名单内场景,不能现造。作者只需保证选项 goto 指向真实场景。
分段式录入
可先建骨架(meta/map/主场景),再按章节分批上传 scenes/events/battles 等段。段内+段间引用须完整可解析。章节归属尽量让 sceneId 前缀与章节 id 一致。