エンジン概要
かえでノベルゲームエンジンは、Nintendo Switch(プライマリ)と Web(セカンダリ、PixiJS/WebGL)をターゲットとするクロスプラットフォーム・ビジュアルノベルエンジンです。
コンパイルパイプライン
KS スクリプトからランタイム実行可能な Op 命令列への変換は、以下の5段階で処理されます。
KS ファイル
│
▼
┌──────────┐
│ Tokenize │ 行単位でトークンに分割
└──────────┘
│
▼
┌──────────┐
│ Parse │ トークン列を AST に変換
└──────────┘
│
▼
┌───────────┐
│ Transform │ 意味解析・最適化
└───────────┘
│
▼
┌──────────┐
│ Finalize │ ジャンプ先解決・整合性チェック
└──────────┘
│
▼
Op[] (JSON 中間表現)
| フェーズ | 処理内容 |
|---|
| Tokenize | .ks ファイルを行単位で解析し、COMMAND / TEXT / VAR_SET 等のトークンに分類 |
| Parse | トークン列を構造化。選択肢ブロックや条件分岐のネスト解決 |
| Transform | テキスト連結、キャラクター名抽出、インラインコマンド分離 |
| Finalize | ラベル→命令位置のマッピング、ジャンプ先の PC 値解決 |
コマンド体系
CoreCommand(Switch 保証)
メインシナリオで使用可能なコマンドです。Switch と Web の両方で動作保証されます。
| コマンド | 説明 |
|---|
text | テキスト表示(キャラクター名付き可) |
choice | 選択肢の表示 |
jump | ラベルへのジャンプ |
set | 変数の設定 |
if | 条件分岐 |
show | スプライトの表示 |
hide | スプライトの非表示 |
move | スプライトの移動 |
fade | スプライトのフェード |
playBgm | BGM 再生 |
playSe | 効果音再生 |
playVoice | ボイス再生 |
wait | 待機(click / timeout / voiceend) |
WebOnlyCommand(Web 専用)
メニューやナビゲーション等、Web 固有の機能に限定して使用します。メインシナリオでは使用禁止です。
| コマンド | 説明 |
|---|
openUrl | URL を開く |
share | SNS 共有 |
analytics | アナリティクスイベント送信 |
webOnlyUI | Web 専用 UI コンポーネント表示 |
コア抽象化
Switch 移植時の全面書き換えを回避するため、以下の3つのインターフェースを介してプラットフォーム機能にアクセスします。
| インターフェース | 目的 | Web 実装 |
|---|
IInput | 全入力ソースの統一アクション配信 | PixiJS ポインタ/キーボードイベント |
IAudio | BGM/SE/VOICE のカテゴリ別音量制御 | Web Audio API |
IStorage | セーブ/ロード抽象化 | IndexedDB |
入力システム
すべての入力は dispatch(Action) を通じてルーティングされます。イベントからゲームロジックへの直接配線は行いません。
| Action | 説明 |
|---|
OK | 決定 |
Back | 戻る |
Menu | メニュー表示 |
SkipToggle | スキップ切り替え |
AutoToggle | オート切り替え |
Log | テキストログ表示 |
QuickSave | クイックセーブ |
QuickLoad | クイックロード |
解像度とレイアウト
| 項目 | 値 |
|---|
| 論理解像度 | 1280 x 720 |
| セーフエリア | 全辺 5% マージン(水平 64px、垂直 36px) |
| UI 配置 | アンカーベースの相対座標(ハードコードピクセル禁止) |
| スケーリング | app.renderer.resize(w, h) + stage.scale.set(scale) でアスペクト比維持 |
アセット制約
| 項目 | 制約 |
|---|
| 背景/スプライト最大サイズ | 2048px(幅または高さ) |
| アニメーション | スプライトシートのみ(個別フレーム PNG 不可) |
| アニメーション FPS | 12〜15 fps(標準) |
| オーディオカテゴリ | BGM / SE / VOICE の3種 |
セーブデータスキーマ
バージョン 1 で固定。画像や音声データは埋め込まず、参照IDのみを保存します。
{
"save_schema_version": 1,
"engine_version": "",
"work_id": "",
"scenario_id": "",
"node_id": "",
"vars": {},
"read": {},
"timestamp": 0
}
後方互換性は save_schema_version フィールドで管理されます。