NovelADV_iOS_Help

NovelADV キャラクターテンプレート JSON仕様書

1. ファイル形式概要

2. データ構造

JSONのルート(一番外側)は、「単一のキャラクターオブジェクト」 または 「キャラクターオブジェクトの配列 [] のどちらでも受け付けます。

オブジェクトのフィールド定義

各キャラクターオブジェクトは以下のキーを持ちます。

キー名 必須 説明
name String YES テンプレート名(キャラクター名)。
アプリ内での識別子になります。重複時は上書き確認が表示されます。
gender String No 性別
job String No 職業・役割(例:「私立探偵」「執事」)。
firstPerson String No 一人称(例:「私」「俺」「ボク」)。
AIがセリフを生成する際の一人称として使用されます。
playerAlias String No 主人公の呼び方(例:「あなた」「マスター」「お兄ちゃん」)。
AIがプレイヤーに呼びかける際に使用されます。
personality String No 性格
AIのロールプレイ指針となる性格描写や口調の指定。
content String No 自由記述・背景
生い立ち、目的、外見的特徴などの詳細情報。

Note: id (UUID) や createdAt (Date) はJSONに含めることも可能ですが、必須ではありません。共有・配布用テンプレートの場合は含めない(アプリ側でインポート時に自動生成させる)ことを推奨します。

3. JSONサンプル

パターンA:単一のキャラクター

1名分のデータをインポートする場合の形式です。

{
  "name": "クリス・アンダー",
  "gender": "女性",
  "job": "秘書官",
  "firstPerson": "私",
  "playerAlias": "課長",
  "personality": "常に冷静沈着で、事務的な口調。しかし、時折主人公への気遣いを見せる。",
  "content": "主人公が配属された特務課の専属秘書。非常に優秀で、スケジュール管理から戦闘のバックアップまでこなす。実は組織から主人公の監視を命じられているが、本人は主人公に恩義を感じている。"
}

パターンB:複数のキャラクター(配列)

組織やチームなど、複数のキャラクターをセットで配布する場合の形式です。 この形式でインポートすると、アプリ内で自動的にフォルダが作成され、その中に格納されます。

[
  {
    "name": "勇者アルス",
    "gender": "男性",
    "job": "勇者",
    "firstPerson": "俺",
    "playerAlias": "お前",
    "personality": "熱血漢で正義感が強い。考えるより先に体が動くタイプ。",
    "content": "伝説の剣に選ばれた少年。魔王を倒すために旅をしている。"
  },
  {
    "name": "聖女セシリア",
    "gender": "女性",
    "job": "僧侶",
    "firstPerson": "私",
    "playerAlias": "アルス様",
    "personality": "穏やかで慈愛に満ちている。怒らせると怖い。",
    "content": "教会から派遣された回復役。幼馴染のアルスを放っておけない。"
  },
  {
    "name": "ガンドルフ",
    "gender": "男性",
    "job": "魔法使い",
    "firstPerson": "ワシ",
    "playerAlias": "若造",
    "personality": "偏屈な老人だが、知識は豊富。",
    "content": "古代魔法を研究する賢者。世界の危機を察知して一行に加わる。"
  }
]

4. インポート時の挙動と注意点

  1. フォルダの自動作成:
    • 配列形式(パターンB)でインポートした場合、ファイル名または現在時刻に基づいた名前で新しいフォルダが作成され、キャラクターはその中に保存されます。
    • 単一形式(パターンA)の場合は、ルート階層に保存されます。
  2. 無料プランの制限:
    • インポートしようとしているキャラクター数と、現在所持しているキャラクター数の合計が 2名 を超える場合、無料プランのユーザーはインポートできません(Premiumへの加入が必要です)。
  3. 重複の処理:
    • 同名のテンプレートが既に存在する場合、単一インポート時はダイアログで「上書き」か「キャンセル」を選択します。複数インポート時は、同名のものについてのみ上書き確認が行われます。