← ドキュメント一覧

Kaede Script — kaedevn のスクリプト言語

kaedevn で物語を動かすための独自スクリプト言語です。1 つの言語に、作者の書きやすさに合わせた 2 つの記法を用意しています。どちらを使っても同じ実行結果が得られ、同じ作品の中で自由に混ぜて使えます。

「Kaede Script」という呼び方について

本プロジェクトは TyranoScript(.ks ファイルをタグ記法で書き、[iscript] で JavaScript を埋め込む)の系譜を踏襲しています。そのため「スクリプトの総称は 1 つ、記法が 2 つ」という構造にしています。用途によって記法を選ぶだけで、別言語を学び直す必要はありません。


2 つの記法

🏷️ タグ記法(.ks)

タグ記法(KS)をブロック編集で扱う画面

@コマンド 属性="値" のシンプルな記法でシーンを宣言的に描写します。TyranoScript / KAG 系の書き味に近く、シナリオライターにとって自然です。ブロックエディタで作った内容は自動的にタグ記法(.ks)へ双方向同期されます。

@bg id="classroom" fade=1000
@ch name="sakura" pose="smile" pos="C"
#sakura
「おはよう!」
#
@choice text="返事する" target="*reply"
@choice text="黙っている" target="*silence"

特徴:

  • 1 行 = 1 アクション。読み下しやすい
  • 条件分岐やジャンプもタグで書ける(@jump / @if
  • コンパイラ方式で一度命令列に変換してから実行 — ランタイムは軽量
  • 向いているのは シーン描写・台詞主体のノベル本編

💻 コード記法(.ksc)

コード記法(KSC)エディタ

TypeScript 風の 手続き的な構文で、複雑なロジックを書けます。関数・配列・オブジェクト・while ループ・プロパティアクセスまで対応。KSC 専用のエディタで直接編集・実行できます。

// 恋愛イベントのフラグ管理
if (affection >= 50 && flags.firstDate == false) {
  call("*date_event")
  flags.firstDate = true
} else if (affection >= 30) {
  #sakura
  「もう少し…」
  #
}

// パーティーメンバーを順に回復
while (i < party.length) {
  heal(party[i], 100)
  i = i + 1
}

特徴:

  • プログラマの直感がそのまま通じる
  • インタプリタ方式で行単位に逐次実行 — デバッグ時にブレークポイント・変数ウォッチが効く
  • 向いているのは ミニゲーム・ステータス管理・動的シナリオ分岐

どちらを使うか

やりたいことおすすめ記法
セリフとキャラ表示、素直に進む物語タグ記法(.ks)
シーン転換・BGM・立ち絵の演出タグ記法(.ks)
条件分岐(フラグ 1〜2 個で完結)どちらでも可
複雑なフラグ管理・ステータス計算コード記法(.ksc)
ミニゲームやパズル的な処理コード記法(.ksc)
ループや配列・オブジェクト操作コード記法(.ksc)

混在も OK: 1 作品の中でページごとに .ks.ksc を使い分けられます。例えば「本編シナリオ = タグ記法、戦闘ロジック = コード記法」という構成が一般的です。


同じ処理を 2 つの記法で

例:ヒロインの好感度が 10 以上なら告白イベント、そうでなければ「また今度」。

タグ記法

@if exp="affection >= 10"
  @jump target="*confess"
@else
  #hero
  「また今度でいいかな…」
  #
@endif

コード記法

if (affection >= 10) {
  jump("*confess")
} else {
  #hero
  「また今度でいいかな…」
  #
}

どちらも同じ VM 上で動き、結果も同じです。好きな書き味を選んでください。


実行モデルの違い

内部的には、2 つの記法は別の経路で実行されますが、最終的に同じエンジン API(IEngineAPI)を叩きます。作者はこの違いを意識せずに書けます。

タグ記法 (.ks)
    ↓
[Compiler] → 命令列
    ↓
Runtime ──→ プラットフォーム共通 API ──→ Web / Switch / ...

コード記法 (.ksc)
    ↓
[Interpreter] ────────────────↑
    逐次実行(Tokenizer → Parser → Evaluator)

重要: どちらの記法も同じ共通 API 経由でプラットフォームに描画を委譲するため、Web と Switch で同じスクリプトが動作します。


ファイル拡張子と略称

拡張子略称記法実行方式
.ksKSタグ記法コンパイラ方式
.kscKSCコード記法インタプリタ方式
  • 「Kaede Script」 は両方を含む総称
  • 「KS / KSC」 はファイル形式を指すときの略称(例:「この処理は KSC ファイルに書こう」)

よくある質問

Q. どちらの記法から始めればいい?

まずは タグ記法(.ks) から始めるのをおすすめします。シンプルで、ノベル作品の大半はタグ記法だけで十分です。ロジックが複雑になったら必要なページだけコード記法に切り替えれば OK です。

Q. タグ記法の中に少しだけコードを混ぜたいときは?

現状はページ単位で記法を分ける設計です。タグ記法ページから @call target="*logic_page" でコード記法のページ(.ksc)を呼び出し、戻ってくるパターンが実用的です。

Q. エディタのブロック編集との関係は?

ブロックエディタで作った内容は自動的にタグ記法(KS)に変換されます。つまり ブロック ↔ タグ記法 は双方向同期で、コード記法 は「ブロックでは表現しきれない処理を書くための手書き領域」という位置付けです。

Q. Switch 移植で両方動く?

はい。Switch 移植ゾーンでは KS / KSC のいずれも同じ Core コマンドセットしか使わない前提で設計されています。プラットフォーム共通 API の Switch 実装が両記法を受け取ります。


関連資料

Ad: inContent (336x280)
Ad: stickyBottom (728x90)
kaedevn - ノベルゲームを作れるプラットフォーム