Contents
ページ内目次
1. Minimum
最小構成
{
"version": "1.5",
"engine": {
"name": "retro-adv",
"version": "1"
},
"metadata": {
"title": "Minimal Sample",
"rating": "全年齢"
},
"config": {
"start_scene": "start"
},
"flags": {},
"inventory": [],
"scenes": {
"start": {
"text": ["ようこそ。"],
"exits": {}
}
}
}
最低限は metadata.title、metadata.rating、config.start_scene、scenes が必要です。
2. Root Keys
ルートキー一覧(実装準拠)
| path | type | 必須 | 補足 |
|---|---|---|---|
$.version | string | 任意 | 制作者メモ用。エンジン挙動には影響しない |
$.engine | object | 任意 | 推奨: name/version |
$.metadata | object | 必須 | title と rating 必須 |
$.config | object | 必須 | start_scene 必須 |
$.flags | object | 任意 | 進行フラグ初期値 |
$.inventory | array | 任意 | 初期所持品 |
$.scenes | object | 必須 | 1件以上必要 |
version は制作者が任意で管理するための値です。現行エンジンはこの値で動作を切り替えません。
3. metadata
公開情報
title: 必須。公開タイトル。rating: 必須。全年齢/R15/R18。ai_generated: 任意。主要構成要素(シナリオ本文・画像・音声/BGM など)の全部または一部に生成AI利用がある場合はtrue推奨。summary: 任意。公開あらすじ。作品ページ表示の品質向上のため入力推奨。thumbnail: 任意。ZIP内相対パス。一覧/詳細の視認性向上のため設定推奨。
4. config
開始位置と基本挙動
start_scene: 必須。開始シーンID。unknown_message: 任意。不明入力の表示。未指定時は何も起こらない。help_message: 任意。helpで追加表示(string/array)。move_aliases/verb_aliases/object_aliases: 任意。入力同義語。asset_paths: 任意。ファイル名のみ指定時の補完先ディレクトリ設定(thumbnail/image/overlay/bgm/sound)。
例: asset_paths.image = "assets/scenes" を設定すると、image: "hall.png" は
assets/scenes/hall.png として解決されます。/ を含む値はそのまま優先されます。
後方互換のため旧キー editor_asset_paths も読み込みますが、今後は asset_paths を推奨します。
"config": {
"start_scene": "start",
"asset_paths": {
"thumbnail": "assets/thumbs",
"image": "assets/scenes",
"overlay": "assets/overlays",
"bgm": "assets/audio",
"sound": "assets/audio"
}
}
5. aliases
同義語(入力エイリアス)
"config": {
"move_aliases": {
"north": ["n", "北", "きた"]
},
"verb_aliases": {
"look": ["みる", "見る"]
},
"object_aliases": {
"door": ["扉", "とびら"]
}
}
入力は正規化(NFKC・空白正規化・小文字化)後に判定されます。別代表語への重複エイリアスは検証エラーです。
6. scenes / exits
シーン構造と移動
"hall": {
"text": ["広いホールだ。"],
"image": "assets/scenes/hall.png",
"bgm": "assets/audio/opening.mp3",
"overlays": [
{ "id": "cover", "image": "assets/overlays/cover.png" }
],
"commands": [],
"exits": {
"south": "entrance"
}
}
text: 必須。1件以上の文字列配列。image/bgm: 任意。ZIP内相対パス。overlays: 任意。初期重ね画像(idとimage)。exits: 任意。入力文字列から遷移先シーンIDへのマップ。commandsとexitsが両方空の場合、そのシーンは終端扱いです。
7. commands
コマンド詳細(実装準拠)
共通必須: type, inputs。inputs は1件以上の文字列配列。
| type | 必須キー | 任意キー |
|---|---|---|
message | text | change_background/show_overlay/overlay_image/remove_overlay/sound/next |
move | target | text + 上記任意キー |
set_flag | flag | text + 上記任意キー |
unset_flag | flag | text + 上記任意キー |
add_item | item | text + 上記任意キー |
remove_item | item | text + 上記任意キー |
conditional | conditions/success/failure | text/next |
{
"inputs": ["open door", "扉を開ける"],
"type": "conditional",
"conditions": [
{ "item": "key", "has": true }
],
"success": {
"type": "move",
"target": "hall",
"text": ["鍵を使って扉を開けた。"]
},
"failure": {
"type": "message",
"text": ["鍵がない。"]
}
}
overlay_image は実装済みキーです。show_overlay と同時指定も可能です。
8. Built-in Commands
組み込み入力コマンド
look: 現在シーン本文を再表示inventory: 所持品一覧を表示help: 基本コマンド +config.help_messageを表示save: セーブコード発行load: セーブコード入力で状態復元
これらはJSONの type ではなく、プレイヤー組み込み処理です。
9. Save / Load
セーブ/ロード対象データ
current_sceneflagsinventorycurrent_backgroundactive_overlays
- ログ表示履歴(transcript)
- BGM再生状態などの一時UI状態
- クライアント内部制御状態
10. Validation
検証エラーと最終チェック
metadata.title/metadata.rating必須ratingは全年齢 / R15 / R18のみscenes必須、1件以上scenes.<id>.textは必須、文字列配列config.start_sceneはscenes内に存在必須commands[].typeは許可値のみcommands[].inputsは必須、1件以上- 参照アセット(画像/音声)の実在チェックあり
start_sceneから最後まで到達できるか- 主要コマンド(look / inventory / help / save / load)を試したか
- アイテム増減とフラグ分岐が想定どおり動くか
- 画像/音声パスの大文字小文字まで一致しているか
Next