← 仕様書・設計書一覧

エンジン概要説明書

エンジン概要

かえでノベルゲームエンジンは、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スプライトのフェード
playBgmBGM 再生
playSe効果音再生
playVoiceボイス再生
wait待機(click / timeout / voiceend)

WebOnlyCommand(Web 専用)

メニューやナビゲーション等、Web 固有の機能に限定して使用します。メインシナリオでは使用禁止です。

コマンド説明
openUrlURL を開く
shareSNS 共有
analyticsアナリティクスイベント送信
webOnlyUIWeb 専用 UI コンポーネント表示

コア抽象化

Switch 移植時の全面書き換えを回避するため、以下の3つのインターフェースを介してプラットフォーム機能にアクセスします。

インターフェース目的Web 実装
IInput全入力ソースの統一アクション配信PixiJS ポインタ/キーボードイベント
IAudioBGM/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 不可)
アニメーション FPS12〜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 フィールドで管理されます。