【Tyranoscript】最初に考慮しておくこと
今回の反省とこれから制作を始める方への転ばぬ先の杖。
時間の指定は変数で行う
waitやchara_showなどのtime指定は数字を直打ちではなく、sfなどの変数経由で行った方がよい。
その方が全体の統一ができるし、あとでタイミングを微調整をする際にかなり楽になる。
waitやanimなどをラップしておく
waitやanim、chara_moveなど時間指定を伴うタグは自前のマクロでラップしておいた方が良い。
なぜかというと、スキップをした際にテキストは高速で流れるのに、演出がそのままということが発生してしまうから。
以下のようにスキップ中はtimeを短くするか、そもそもタグの呼び出し自体をしないようなマクロにしておくと、スキップ中のストレスが減る。
[macro name="wait2"]
[iscript]
tf.is_skip = TG.stat.is_skip == true;
if (tf.is_skip) {
mp.time = Math.min(100, Number(mp.time));
}
[endscript]
[wait *]
[endmacro]
現在実行中のシナリオファイル名を保持しておく
あるマクロ内で現在実行中のシナリオファイルに応じて処理を変える必要が生じた。
パラメーターでファイル名を渡しても良いのだけど、量が多いのでできれば手間は省きたい。
検索してみると、以下の方法でファイル名を取得できるという情報を発見。
var storage = tyrano.plugin.kag.stat.stack.macro[0].storage;
しばらくは問題なく動いていたのだが、何かの拍子にmacro[0]
が取得できなくなってjsの処理が止まることがあった。
仕方ないので、各ファイルの冒頭でf変数にファイル名を保持するようにした。
(シナリオファイルの途中にジャンプしまくるような作りだとこの方法は無理です。)
シナリオのテンプレの作り方
以下のようなシナリオのテンプレを作って、それを元に開発をしていた。
------------------
■初期化処理
------------------
会話
------------------
■背景切り替え
------------------
イベント
------------------
■終了処理
------------------
■の部分はほとんど共通なのだが、このファイルをコピペ増殖してシナリオを量産してしまい、後になって■の部分の修正が発生したときに非常に面倒だった。
共通になる部分はマクロかサブルーチンにまとめるべきだろう。
Tyranoscript本体への変更
割とゴリゴリ変更を入れてしまったが、そうすると本体の重要なバグフィックス等があってもアップデートができなくなるので、別のjsファイルを作って修正したい関数を上書きするのが良いのだと思う。(最近のバージョンはパフォーマンスが上がっているらしいぜ!…とほほ)