ティラノスクリプト(TyranoScript)で制作してきた方が、Kaede Script(KS) をすぐ書けるようになるためのガイドです。まず「タグの対応表」を載せ、その下に書き方の違いと機能の差をまとめています。対応表だけ見れば、ほとんどのシーンは移植できます。
kaedevn のスクリプトはティラノ / KAG 系の書き味を受け継いでいます。@コマンド でシーンを宣言的に描写する感覚はそのままに、1 本の原作から Web でも Nintendo Switch でも出力できるのが大きな違いです。
1. まず押さえる 4 つの違い
ティラノと書き方が変わる点はこの 4 つだけです。ここを押さえれば対応表がそのまま読めます。
| ティラノスクリプト | kaedevn(KS) |
|---|
| コマンドの書式 | [bg storage="room.jpg" time=1000]([] と 属性="値") | @bg room fade=1000(@ とスペース区切り、クォート無し) |
| 属性の渡し方 | storage=, time= など名前付き | 位置引数+ key=value(例 @ch 赤音 smile C fade=500) |
| 話者 | #名前 / [chara_show] 連動 | #名前 を直前行に置く、または 名前:セリフ(全角コロン) |
| 選択肢・分岐 | [glink] / [if][endif] タグ | ブロック構文 choice { ... } / if (条件) { ... } |
; ── kaedevn(KS)の基本形 ──
@bg classroom fade=1000
@ch 赤音 smile C
#赤音
おはよう!今日もいい天気だね。@l
choice {
"一緒に帰る" { @jump go_home }
"図書館で勉強" { @jump library }
}
- 行末の
@l(クリック待ち)・@p(改ページ)・@r(改行)だけはテキストに埋め込めます。ティラノの [l] [p] [r] と同じ役割です。
- コメントは
; または //。
- ラベルは
*ラベル名(ティラノと同一)。
2. タグ対応表(ティラノの分類順)
◎ = ネイティブで対応(より強力)/ ○ = 対応 / △ = 別の経路で対応 / ✕ = 現状なし
テキスト・メッセージ操作
| ティラノ | kaedevn KS | 対応 | メモ |
|---|
[l] クリック待ち | @l | ○ | テキスト末尾に埋め込み可 |
[r] 改行 | @r | ○ | |
[p] 改ページ待ち | @p | ○ | メッセージをクリアして次へ |
[cm] / [er] メッセージ消去 | @p に統合 | △ | 改ページで実質クリア |
| 話者名表示 | #名前 行 / 名前:セリフ | ○ | カギ括弧 名前「…」 は話者抽出されない |
[font] 文字装飾 | @text_style(枠色のみ) | △ | 本文の部分装飾は未対応 |
[ruby] ルビ | — | ✕ | 未対応(要望の多い項目) |
[emb exp=] 変数埋め込み | — | ✕ | 表示テキストへの変数差し込みは未対応 |
[graph] インライン画像 | — | ✕ | |
[delay] / [nowait] 表示速度 | エンジン設定側 | △ | タグでの局所制御は弱い |
[mtext] アニメテキスト | @scroll_text(スクロール) | △ | スタッフロール用途 |
キャラクター(立ち絵)
| ティラノ | kaedevn KS | 対応 | メモ |
|---|
[chara_new] キャラ定義 | エディタ/アセットで定義 | △ | スクリプト外で管理 |
[chara_show] 表示 | @ch 名前 ポーズ 位置(L/C/R) | ○ | |
[chara_hide] 非表示 | @ch_hide 名前 | ○ | |
[chara_mod] / [chara_face] 表情 | @ch_expr 名前 表情 | ◎ | 2D / Live2D / VRM 共通コマンド |
[chara_move] 移動 | @ch_move 名前 位置 time=N | ○ | |
[chara_part] 差分パーツ合成 | @ch_state 名前 レイヤ 状態 | △ | レイヤ状態で表現 |
| 全キャラ消去 | @ch_clear | ○ | |
| 口パク | @ch_lip 名前 auto/voice/off | ◎ | ティラノには無い |
| Live2D(プラグイン) | @live2d / @live2d_motion / @live2d_expression | ◎ | ネイティブ対応 |
| 3D / VRM(不可) | @vrmShow / @vrmExpression / @vrmPose | ◎ | kaedevn 独自 |
背景・画像・レイヤー
| ティラノ | kaedevn KS | 対応 | メモ |
|---|
[bg] 背景 | @bg id [fade=N] | ○ | |
[image] レイヤ画像 | @overlay id [fade=N] | △ | 前景オーバーレイ |
[freeimage] / [free] 消去 | @overlay_hide [id] | ○ | |
[layopt] レイヤ設定 | — | △ | レイアウトは @layout_set |
トランジション(画面切替)
| ティラノ | kaedevn KS | 対応 | メモ |
|---|
[bg ... time=] フェード切替 | @bg id fade=N | ○ | |
| 黒/白フェードアウト | @fade_black / @fade_white | ○ | |
| 黒/白からフェードイン | @black_in / @white_in | ○ | |
[trans method=rule rule=] ルール画像ワイプ | — | ✕ | 任意ワイプは未対応 |
[backlay] / [wt] 裏レイヤ準備 | 不要(内部処理) | △ | |
音楽・効果音・ボイス・動画
| ティラノ | kaedevn KS | 対応 | メモ |
|---|
[playbgm] | @bgm id [vol=N] [fade=N] | ○ | ループ再生 |
[stopbgm] / [fadeoutbgm] | @bgm_stop [fade=N] | ○ | |
[playse] | @se id [vol=N] | ○ | |
| ボイス再生 | @voice id | ○ | |
| ボイス終端まで待機 | @wait_voice_end | ◎ | |
[movie] / [bgmovie] 動画 | — | ✕ | 動画再生は未対応 |
演出効果
| ティラノ | kaedevn KS | 対応 | メモ |
|---|
[quake] / [wq] 揺れ | @shake [intensity= duration=] | ○ | |
| フラッシュ | @flash [duration=] | ○ | |
[anim] 汎用トゥイーン | @ch_move / @camera / @fade_* | △ | 対象別コマンドに分かれる |
| カメラ寄せ(プラグイン) | @camera [zoom= x= y= time= easing= shake=] | ◎ | ネイティブ対応 |
| パーティクル(プラグイン) | @particle / @effect(JSON宣言型) / @slash | ◎ | ネイティブ対応 |
| 画面フィルター(CSS) | @filter / @filter_mix / @color_adjust | ◎ | 専用シェーダで高品質 |
分岐・ラベル・ジャンプ
| ティラノ | kaedevn KS | 対応 | メモ |
|---|
*label | *label | ○ | 同一 |
[jump target= storage=] | @jump ラベル | ○ | |
[call] / [return] | @call ラベル / @return | ○ | |
[if] / [else] / [endif] | if (条件) { } else { } | ○ | ブロック構文 |
[macro] ユーザー定義マクロ | @call_template ID(コモンイベント) | △ | 引数付き自作はKSC関数で |
選択肢・ボタン・リンク
| ティラノ | kaedevn KS | 対応 | メモ |
|---|
[glink] 選択肢リンク | choice { "テキスト" { @jump … } } | ○ | 条件付き選択肢: "…" if (条件) { } |
[button] 画像ボタン | 宣言的UI(MomijiUI) | △ | 画面JSON側で構築 |
[link] / [endlink] インラインリンク | — | △ | |
変数・スクリプト
| ティラノ | kaedevn KS | 対応 | メモ |
|---|
変数 f.x / sf.x | x(変数名を直接) | ○ | KS の変数は数値中心 |
[eval exp="f.x=1"] 代入 | x = 1 / x += 1 / x -= 1 | ○ | |
| 複雑な式・関数・ループ | KSC(コード記法) | ◎ | 型チェック付き |
[iscript] / [html] 生JS/HTML | — | ✕ | 意図的に不採用(後述) |
システム
| ティラノ | kaedevn KS | 対応 | メモ |
|---|
[wait time=] 待機 | @wait sec | ○ | 秒指定 |
[save] / [load] / [menu] | エンジン/UIが提供 | △ | スクリプトタグでは出さない設計 |
[history] 履歴 | エンジンが提供 | △ | |
kaedevn 独自(ティラノに無いもの)
ノベルに加えて、同じ記法で RPG/ソーシャルゲーム量産まで射程に入ります(RPG レイヤーは開発中・順次公開)。
| 機能 | KS コマンド |
|---|
| マップ読込/退出 | @map_load / @map_exit |
| プレイヤー/イベント移動 | @player_move / @event_move |
| アイテム増減 | @item_add / @item_remove |
| コマンドバトル | @battle troopId onWin= onLose= |
| 3D / VRM キャラ | @vrmShow / @sceneMode |
3. 移行で「楽になる」ところ・「気をつける」ところ
楽になる(ティラノでプラグインが要った演出が標準装備)
- カメラ(パン・ズーム・揺れ)が
@camera 一発。
- パーティクル / エフェクトが
@particle @effect(JSON宣言型)で標準。
- 高品質フィルターが
@filter / @filter_mix で専用シェーダ。CSS フィルターより表現が広い。
- Live2D がネイティブ、さらに VRM(3D キャラ) まで同じ書き味で扱える。
- 表情・口パク・モーションが 2D / Live2D / VRM 横断で同じコマンド(
@ch_expr 等)。
気をつける(ティラノにあって現状 KS に無いもの)
| 項目 | 現状 | 回避策 |
|---|
ルビ [ruby] | 未対応 | 当面は本文で表現/対応予定 |
本文への変数埋め込み [emb] | 未対応 | セリフを分けて構成 |
ルール画像ワイプ [trans rule=] | 未対応 | @fade_* / @filter で代替 |
動画再生 [movie] | 未対応 | OP/ED は別手段で |
本文の部分装飾 [font] | 枠色のみ | — |
生 JS / HTML [iscript] | 非対応(設計上) | ロジックは KSC(型付きコード)で |
[iscript] のような生 JS を持たないのは制約ではなく設計です。KS を一度プラットフォーム非依存の命令列(Op[])にコンパイルすることで、同じシナリオが Web でも Nintendo Switch でも動くようにしています。複雑なロジックは型チェック付きの KSC に書けば、生 JS なしで同じことができます。
4. 仕組みの違い(読みたい人向け)
ティラノはスクリプトを 1 行ずつ解釈して実行するインタプリタ方式です。kaedevn の KS は、スクリプト全体を先に命令列(Op[])へコンパイルしてから実行します。
.ks → Tokenizer → Parser → Transformer → Op[](プラットフォーム非依存)→ 実行
この Op[] が「1 本の原作から複数媒体へ出力する」基盤になっています。ライト層はタグ記法(KS)、ロジック重めは型付きのコード記法(KSC)と、用途で書き分けられます。
5. はじめの一歩
- ティラノの 1 シーンを、上の対応表でそのまま置き換えてみる
[bg]→@bg / [chara_show]→@ch / [glink]→choice{} の 3 つだけで、ほとんどの会話シーンが動く
- 揺れ・カメラ・エフェクトは KS のネイティブコマンドで足していく
詳しい全コマンドは KS 仕様書、ロジックを書きたくなったら KSC 仕様書 へ。
関連ドキュメント