ティラノで困っていたことは kaedevn でどうなるか
ティラノスクリプト(TyranoScript)でゲームを作ってきた方が、「あの困りごとは kaedevn でどうなるの?」を確認するための読み物です。具体的なタグの置き換えは ティラノスクリプトからの移行ガイド にまとまっているので、ここでは「作っていて辛かったところ」がどう変わるかに絞って紹介します。
前半(1〜7)はやさしく、後半の「技術編」は仕組みに踏み込みます。後半は読み飛ばしても作れますが、プラグインや拡張に詳しい方ほど刺さる内容です。
結論から言うと、ティラノで多くの人がぶつかる「アップデートでセーブが壊れる」「重い・止まる」「素材管理が破綻する」「プラグイン地獄」といった困りごとは、kaedevn では作りの段階から起きにくい構造になっています。
1. アップデートしてもセーブデータが壊れない
ティラノで一番こわいのが、マクロを直したりアップデートすると、プレイヤーの過去のセーブが読めなくなること。「不正なセーブデータの改変を検知しました」で起動が止まってしまう、という報告も知られています。
kaedevn のセーブデータは、「どこまで読んだか」と「変数」だけを記録します。スクリプトそのものや内部の処理位置をセーブに焼き込みません。だからシナリオを書き直しても、過去のセーブはそのまま読める——アップデート前提で長く運営したい作品ほど、この差は効いてきます。
2. 重くない・スキップで止まらない
ティラノは、スキップやオートを速くすると画像切替と重なってフリーズする、会話シーンが重くなる、起動時にプロジェクト全体を一時フォルダへ展開して大容量だと起動が遅い、といった「重さ」が起きがちでした。
kaedevn は、演出(背景・立ち絵・エフェクト)をゲーム向けの描画基盤で動かしています。揺れ・カメラ・パーティクル・フィルターといった重めの演出も、プラグインに頼らず標準で持っているので、ぬるぬる動く前提で作れます。
3. 素材とプロジェクトが散らからない
ティラノでは素材が増えると、エディタ上でインポート順にしか並ばず目的のファイルを探せない、ファイルを移動するとスクリプトのパスがズレて手直しが必要、といった「管理の破綻」が起きます。
kaedevn は素材をID で管理します。ファイル名や置き場所を変えても、ID が同じならスクリプトを直す必要はありません。背景・立ち絵・BGM などのカテゴリで絞り込めるので、数百点に増えても迷子になりません。
はじめから使える公式素材(背景・立ち絵)を多数同梱しています。商用利用OK・改変OK・クレジット表記不要なので、自分の絵が用意できなくてもすぐ作り始められます(詳しくは公式アセットのライセンス)。
4. かんたんに始めて、本格的になっても作り直さなくていい
ティラノには「ティラノビルダー(GUI)で作り始めると、凝りたくなったときにスクリプトへ移れず、作り直しになる」という有名な落とし穴があります。経験者が新人に「最初からスクリプトで始めなさい」と勧めるのはこのためです。
kaedevn は、ブロックエディタ(GUI)・タグ記法・コード記法が、同じプロジェクトの別の見え方になっています。GUI で作り始めて、慣れてきたらタグやコードに進んでも、作り直しは発生しません。入口はやさしく、その先で行き止まりにならない設計です。
5. 凝った演出が「標準装備」
ティラノでカメラ・パーティクル・Live2D などを使うには、プラグインを探して入れたり、有料版が必要だったりしました。
kaedevn では、これらが最初から標準コマンドとして入っています。
- カメラ(寄り・パン・揺れ)
- パーティクル / エフェクト(JSON で宣言するアニメーション効果)
- 高品質フィルター
- Live2D、さらに VRM(3D キャラ) まで同じ書き味
表情・口パク・モーションは、2D でも Live2D でも 3D でも同じコマンドで扱えます。
6. ブラウザの外まで、同じ原作で届く
ティラノはブラウザ(HTML5)で動かす前提のエンジンです。kaedevn は、1 本の原作を Web だけでなく Nintendo Switch でも動かすことを視野に入れています。「Web で公開して終わり」ではなく、同じシナリオをそのままコンソールでも完成形にできるのが大きな違いです。
7. 正直なところ(これからのところ)
良いことばかりではありません。乗り換えを検討するなら、ここも知っておいてください。
- まだ無いコマンドがあります — ルビ、本文への変数差し込み、ルール画像ワイプ、動画再生などは現状未対応で、対応を進めているところです(移行ガイドの対応表に最新状況をまとめています)。
- 多言語対応(翻訳)は準備中 — ティラノが苦手とする海外展開を、テキストと演出を分けて管理できる強みで楽にしていく方針です。
- コミュニティ・解説記事の数はこれから — ティラノは長年積み上がった解説やコミュニティがあります。そこはこれから育てていく段階です。
「ふつうの 2D ノベルをサクッと 1 本」だけなら、慣れたツールが一番です。kaedevn が特に向いているのは、長く運営したい・凝った演出をしたい・3D やゲーム要素も入れたい・将来コンソール(Nintendo Switch)まで見据えたい——そんな作品づくりです。
技術編(わかる人向け)
ここから先は「なぜそうなるのか」を仕組みから説明します。読み飛ばしても作品は作れます。プラグイン開発や拡張に踏み込んだことがある方向けの内容です。
A. なぜティラノはプラグインが要るのか/kaedevn はどう違うか
ティラノは KAG / 吉里吉里の系譜で、本体に無い機能はプラグインで足します。その実体は [iscript] で生の JavaScript を書き、ブラウザの DOM を直接操作すること。とても自由ですが、裏返しに 2 つの代償があります。
- ブラウザ専用になる — DOM や JS グローバルに手を伸ばすので、その作品はブラウザの外(コンソール等)へ持っていけません。
- セーブが壊れやすくなる — プラグインやマクロの状態がセーブに書き込まれるため、アップデートで過去のセーブが読めなくなる(§1 の原因のひとつ)。
kaedevn は 生 JavaScript のエスケープハッチを意図的に持ちません。スクリプトは一度 プラットフォーム非依存の命令列(Op 列)にコンパイルしてから実行します。だから同じシナリオが Web でも Nintendo Switch でも動きます。そのうえで拡張は次の 3 層で行います。
| 層 | 拡張のしかた | 例 |
|---|---|---|
| 1. 宣言データ | JSON を書く/配る | エフェクト定義・画面 JSON・フィルタープリセット・アセットパック・テンプレート |
| 2. 型付きコードのライブラリ | KSC(型チェック付き)で書いて配る | 共通ロジック |
| 3. 新コマンド | 本体にコマンドとして足す | @xxx |
どれも生 JS を使わないので、拡張を入れても移植は壊れず、セーブも汚れません。「プラグインを入れたら別環境で動かなくなった/セーブが死んだ」が構造的に起きない、というのが kaedevn の拡張モデルです。
言い換えると、ティラノの「プラグイン=ブラウザ内で何でもできる JS」を捨てる代わりに、移植性・セーブ安定・型安全を取っています。自由度を一段譲るトレードオフですが、長期運営とマルチプラットフォームではこちらが効きます。
B. 演出は「部品 × 3つの出し方」で組み立てる
ティラノでプラグインとして作られている演出の大半は、kaedevn では プリミティブな演出部品(揺れ・フラッシュ・感情アイコン・パーティクル・フィルター・効果音 など)を、3 つのトリガーで出す組み合わせで表現できます。
- (a) 文中に書く — テキストの進行に合わせて発火(後述 C)。
- (b) 時間で並べる — 時間軸に沿って振り付け(複合演出・カットシーン・コマ送り)。「再生位置に合わせて表情を変える」ようなボイス連動も、音声の再生開始からの経過時間で並べれば実現できます。
- (c) 反応で出す — クリックした位置・ボイスの再生など、イベントに反応して出す(例:タップした場所にエフェクト)。
この「部品 × 3トリガー」で、ティラノでプラグイン頼みだった演出を標準の組み合わせとして書けます。単発の演出は @shake のように一行で、凝った振り付けは時間軸で、というふうに使い分けます。
C. 本文の途中にコマンドを書ける
kaedevn は本文テキストを「文字の断片+途中に挟まれた命令」の列として扱います。ティラノの [l] [p] [r](クリック待ち・改ページ・改行)に相当するものを、より一般化した形です。
おはよう。@se(ドキ)……今日、ちょっと話せる?@l
このように本文の途中で効果音や表情変更を差し込む書き方ができます。タイプ音(文字送りに合わせた効果音)や、本文への変数差し込みも、同じ「文中に命令を挟む」仕組みの応用です(一部は対応を進めている段階)。
D. カスタム画面(ギャラリー・メニュー・設定)は宣言的 UI で
ティラノで「プラグイン」や「自作 HTML / CSS」でやっていた専用画面——CG ギャラリー、回想モード、コンフィグ、実績、キャラ図鑑、おまけ部屋、タイトル改造——は、kaedevn では 画面そのものを JSON で宣言して作れます(MomijiUI)。
使える部品は、パネル・画像・ラベル・ボタン・スライダー・トグル・スクロール・グリッド・モーダルなど。変数に応じた表示の出し分け(「解放したCGだけ表示」など)も書けます。これらは本編とは別レイヤの「画面」として持てるので、ノベルの作法に縛られない自由なレイアウトが組めます。
宣言した画面は、エディタを介さずそのままプレイ画面で確認できます。「画面を JSON で書く → 動かして確認」という、プラグインを探して入れるのとは別のワークフローです。
E. ティラノのプラグイン → kaedevn での扱い(対応表)
実際にティラノで配布されている代表的なプラグインが、kaedevn ではどの層で実現されるか。◎=標準で対応 / ○=対応 / △=部分的・対応予定 / ✕=これから。
| ティラノでのプラグイン | kaedevn での扱い | 状況 |
|---|---|---|
| カメラ(パン・ズーム) | 標準コマンド @camera | ◎ |
| パーティクル | 標準コマンド @particle / @effect | ◎ |
| Live2D | 標準コマンド(ネイティブ対応) | ◎ |
| VRM / 3D キャラ | 標準コマンド @vrm*(ティラノには無い領域) | ◎ |
| 口パク(音量連動) | 標準コマンド @ch_lip | ◎ |
| 好感度管理 | 変数+条件分岐(フラグ) | ○ |
| セーブ/ロード画面・コンフィグ・実績・CGギャラリー | 宣言的 UI(D の画面 JSON) | ○ |
| 通知ポップアップ | オーバーレイ/宣言的 UI | ○ |
| 終了確認ダイアログ | モーダル(宣言的 UI) | ○ |
| ボイス連動でタグ実行 | 時間トリガー(B-(b)、音声開始からの経過で並べる) | △ 対応予定 |
| 漫符(感情アイコン)・吹き出し | キャラに付随する表示として追加予定 | △ 対応予定 |
| タップエフェクト | イベントトリガー(B-(c)) | △ 対応予定 |
| ルビ・本文の部分装飾 | 本文のリッチテキスト対応として追加予定 | △ 対応予定 |
| 名前入力欄 | 入力部品の追加が必要 | ✕ これから |
| VOICEVOX 等の外部サービス連携 | 抽象境界越しのホスト連携として設計 | △ 設計中 |
| 生 JS / HTML の差し込み | 意図的に非対応(移植性・セーブ安定のため) | ✕ |
ねらいは、「ティラノでプラグインを探して入れていたもの」を標準コマンドか宣言データで先回りして持つこと。そうすればプラグイン探し・相性問題・バージョン追従が消え、しかも移植もセーブも壊れません。長い尾(ニッチなもの)は、生 JS ではなく「宣言データ」や「型付きコードのライブラリ」として安全に共有できる形にしていきます。
F. まだこれからの部分(技術編・正直に)
上の表の △ / ✕ がそのまま「これから」のリストです。特に、
- 本編とカスタム画面をつなぐ橋(ノベルの途中でミニゲームやギャラリーを挟んで結果を持ち帰る)
- 名前入力などの入力部品
- ルビ・本文の部分装飾(本文のリッチテキスト基盤)
- 一部の本編演出(吹き出し・タイプ音・漫符)
このあたりは設計の延長線上にあり、順次組み込んでいく段階です。「もう全部入っている」ではなく「この仕組みなら無理なく足していける」というのが正確なところです。
はじめの一歩
まずは ティラノスクリプトからの移行ガイド の対応表で、手元のティラノの 1 シーンを置き換えてみてください。[bg]→@bg / [chara_show]→@ch / [glink]→choice{} の 3 つだけで、ほとんどの会話シーンが動きます。