解析できる物語
すべてのステップが終了するか、選択肢が行き詰まらないか、到達できないシーンはないか、各ステップの画面が一貫しているかをコンパイラが検査します。
ビジュアルノベルエンジン
Kagari の物語は有限のデータの上の pushdown fn として書きます。そのためコンパイラは、汎用のスクリプトでは答えられない問いに答えられます。
#[scene]
#[entry]
pushdown fn Day1() -> Ending {
s!(t!["The school festival starts today."]);
StallA();
StallA();
Ending::Normal
}
#[scene]
pushdown fn StallA() {
if VISITED_A {
s!(t!["The stall is already packing up."]);
return;
}
VISITED_A = true;
s!(who = "Hanako", render = at_stall_a, t!["Welcome to stall A!"]);
}すべてのステップが終了するか、選択肢が行き詰まらないか、到達できないシーンはないか、各ステップの画面が一貫しているかをコンパイラが検査します。
物語も演出もゲームシステムも一つの言語で書きます。演出(const fn)とゲームシステム(fn)は自由に計算できます。
kagari コマンドで検査、ビルド、整形を行い、言語サーバーと Zed 拡張で編集し、Windows、macOS、Linux のランタイムで実行します。