events.json(イベント一覧)
events.json は「このMODにどんなイベントがあるか」を列挙するファイルです。ここにイベント(通常イベント)とエンディング(31日目の結果イベント)を登録し、実際の中身は script_file で events/*.json に分けて書きます。
ページ概要
- 対象ファイル:
events.json - 役割: イベント/エンディングの「一覧メタデータ」を定義します(タイトル、条件、優先度、スクリプトファイルの場所など)。
- どこで使われるか: イベント発火判定(
required_conditions)、イベント一覧の読み込み、エンディング選出(31日目) - 最小構成: このページの「最小構成(コピペ用)」
- よくあるミス: ID不一致(
EVENT_ID_MISMATCH/ENDING_ID_MISMATCH)、script_fileの書き間違い、条件JSONの型違い(dayは配列)
最小構成(コピペ用)
まずは「イベント1つ+エンディング1つ」だけで動く形を作り、増やしていくのが安全です。
{
"events": [
{
"id": "hello_event",
"title_ja": "はじめての会話",
"title_en": "First Talk",
"description_ja": "",
"description_en": "",
"type": "story",
"required_conditions": {
"day": [{"operator": ">=", "value": 1}],
"time": ["morning"],
"locations": ["school_classroom"]
},
"script_file": "events/hello_event.json",
"once_only": true,
"priority": 10
}
],
"endings": [
{
"id": "ending_normal",
"title_ja": "いつもの日常",
"title_en": "As Usual",
"description_ja": "",
"description_en": "",
"type": "normal",
"required_conditions": {},
"script_file": "events/endings/ending_normal.json",
"priority": 0
}
]
}
重要: IDは2箇所で一致させます
events.jsonのidと、スクリプト側(events/*.json)のevent_idを一致させてください。- 一致しない場合、検証で
EVENT_ID_MISMATCH/ENDING_ID_MISMATCHが出ます。
events(通常イベント)
events は「平常時に発生するイベント」を並べます(会話、デート、ランダムイベントなど)。
イベント定義のフィールド
| フィールド | 型 | 説明 |
|---|---|---|
id | string | イベントの一意ID(スクリプトの event_id と一致が必須) |
title_ja / title_en | string | 一覧表示用タイトル(未指定でも動作しますが推奨) |
description_ja / description_en | string | 一覧表示用説明(任意) |
type | string | イベント種別(例: story, date, random など) |
required_conditions | object | 発生条件。詳細は イベント発生条件(required_conditions) を参照 |
script_file | string | イベントスクリプトへの相対パス(例: events/hello_event.json) |
once_only | boolean | true なら一度だけ発生(推奨) |
priority | number | 候補が複数ある場合の優先度(大きいほど優先) |
cooldown_days | number | 同じイベントの再発生までのクールダウン日数(任意) |
default_bgm | string | イベント開始時のBGM指定(任意)。詳しくは 音声(BGM/SE/Voice) |
endings(エンディング)
endings は「31日目に評価として再生されるイベント」を並べます。基本的には、条件を満たしたものの中から priority の高いものが選ばれ、キャラクターごとに1つ再生されます。
エンディングの設計(分岐の作り方、優先度の考え方)は エンディングの作り方 を参照してください。
エンディング定義のフィールド
| フィールド | 型 | 説明 |
|---|---|---|
id | string | 一意ID(スクリプトの event_id と一致が必須) |
title_ja / title_en | string | エンディング名(必須) |
description_ja / description_en | string | 説明(任意) |
type | string | エンディング種別(例: bad, normal, good, best, true_end など) |
required_conditions | object | 発生条件(例: 関係性やフラグ)。詳細は イベント発生条件 |
script_file | string | エンディングスクリプトへの相対パス |
priority | number | 複数候補がある場合の優先度(大きいほど優先) |
thumbnail_image | string | ギャラリー等に使うサムネイル画像(任意) |
default_bgm | string | エンディング開始時BGM(任意) |
よくあるミス
- ID不一致:
events.jsonのidと、スクリプトのevent_idが違う(EVENT_ID_MISMATCH) - script_file が存在しない: パスの書き間違い、フォルダ名の揺れ(
MISSING_EVENT_SCRIPT/MISSING_ENDING_SCRIPT) - 条件JSONの型が違う:
dayは[{...}]の配列。statsは{ "affection": { ... } }のマップ - once_only を忘れる: 同じ会話が何度も出てしまう(意図通りならOK)