NovelADV_iOS_Help

NovelADV シナリオテンプレート JSON仕様書

1. ファイル形式概要

2. ルートオブジェクト構造

JSONのルート(一番外側)は以下のキーを持つオブジェクトです。

キー名 必須 説明
name String YES シナリオテンプレート名
アプリ内での識別子として使用されます。既存のテンプレートと同じ名前の場合、上書き確認が表示されます。
settingPlace String No 場所
物語の主な舞台(例:「新宿の雑居ビル」「魔法学校の寮」)。
settingEra String No 時代
時代背景(例:「現代日本」「西暦3000年」「中世ファンタジー風」)。
settingBackground String No 背景ストーリー
世界観の深い設定や、物語開始以前の経緯。
writingStyle String No 文体・AIへの指示
AIの描写スタイルやナレーションの口調(例:「ハードボイルド調で」「三人称視点で客観的に」)。
mysteryGenerationTrend String No 謎・伏線の傾向
AIが自動生成する謎のジャンル指定(例:「人間関係のトラブルを中心に」「SF的ガジェットの謎」)。
openingScene String No オープニングシーン
ゲーム開始時にAIが最初に出力する描写テキスト。
mysteryScale Integer No 謎のリアリティレベル
1〜5の整数で指定します(詳細は後述)。省略時は 2 (Grounded) が適用されます。
characters Array No 登場人物リスト
キャラクターオブジェクトの配列(詳細は後述)。

2.1 mysteryScale (謎のリアリティレベル) の値

| 値 | レベル名称 | 説明 | | :— | :— | :— | | 1 | Mundane | 日常・ラブコメ。超常現象なし、平和的。 | | 2 | Grounded | 本格ミステリー・現実。物理法則遵守、論理的解決。 | | 3 | Ambiguous | 都市伝説・微ファンタジー。解釈の余地がある不思議、高度な科学。 | | 4 | Supernatural | 伝奇・ハイファンタジー。魔法や異能が実在し、謎の核になる。 | | 5 | Eldritch | コズミックホラー・シュール。論理崩壊、不条理。 |

3. Characters (登場人物) オブジェクト構造

characters 配列の中に含める各キャラクターの定義です。

キー名 必須 説明
name String YES キャラクター名
gender String No 性別
job String No 職業・役割(例:「探偵」「王女」)。
personality String No 性格・特徴
AIがロールプレイする際の指針となる性格描写。
content String No 自由記述・背景
生い立ちや目的などの詳細情報。
firstPerson String No 一人称(例:「私」「俺」「ボク」)。
playerAlias String No 主人公の呼び方(例:「あなた」「先輩」「お兄ちゃん」)。
relationshipWithPlayer String No プレイヤーとの関係
(動的情報)初期状態の関係性。
recentEvents String No 最近の出来事
(動的情報)物語開始時点での状況。
isPlayerCharacter Boolean No 主人公フラグ
true の場合、このキャラがプレイヤーの分身として設定されます。

4. JSONサンプル

以下をコピーして .json ファイルとして保存するか、「テキストからインポート」機能に貼り付けて使用してください。

{
  "name": "洋館ミステリー",
  "settingPlace": "嵐の孤島にある古い洋館",
  "settingEra": "1920年代、イギリス",
  "settingBackground": "富豪が遺した遺産を巡り、親族たちが集められた。外は嵐で連絡手段は絶たれている。",
  "writingStyle": "アガサ・クリスティ風の古典的なミステリー小説のトーン。三人称視点で、重厚な雰囲気を描写してください。",
  "mysteryGenerationTrend": "密室トリック、アリバイ崩し、隠された血縁関係",
  "openingScene": "激しい雷鳴が轟き、館の照明が一瞬明滅した。大広間に集まった人々の顔に不安の色が浮かぶ。「…さて、皆さんに集まっていただいたのは他でもありません」弁護士が重い口を開いた。",
  "mysteryScale": 2,
  "characters": [
    {
      "name": "アーサー・ヘイスティングス",
      "gender": "男性",
      "job": "私立探偵",
      "firstPerson": "私",
      "playerAlias": "君",
      "personality": "冷静沈着で論理的。パイプを嗜む紳士。",
      "content": "かつてロンドン警視庁に協力していた名探偵。招待状を受け取りこの島へ来た。",
      "isPlayerCharacter": true
    },
    {
      "name": "エレノア・ヴァンガード",
      "gender": "女性",
      "job": "富豪の長女",
      "firstPerson": "わたくし",
      "playerAlias": "探偵様",
      "personality": "高慢だが、どこか怯えている様子。",
      "content": "遺産相続の第一候補。妹たちとは仲が悪い。",
      "relationshipWithPlayer": "探偵としての腕を見定めている。",
      "recentEvents": "昨晩、何者かに部屋を覗かれたと主張している。",
      "isPlayerCharacter": false
    },
    {
      "name": "セバスチャン",
      "gender": "男性",
      "job": "執事",
      "firstPerson": "私(わたくし)",
      "playerAlias": "アーサー様",
      "personality": "忠実で無口。館の秘密を何か知っているようだ。",
      "content": "長年この屋敷に仕えている老執事。",
      "isPlayerCharacter": false
    }
  ]
}

5. インポート時の注意点

  1. 無料プランの制限:
    • characters 配列に 2名以上 のキャラクターが含まれている場合、無料プランのユーザーはインポートに失敗します(Premiumへの加入が必要です)。
  2. 重複時の挙動:
    • アプリ内に既に同じ name のテンプレートが存在する場合、ダイアログが表示され「上書き」するかどうかを選択できます。
  3. IDについて:
    • JSON内に id (UUID) や createdAt (Date) を含めることも可能ですが、必須ではありません。含まれていない場合、インポート時にアプリ側で自動生成されます。共有目的の場合は含めないことを推奨します。