ティラノスクリプトを自力で拡張していきたい人のための記事
ティラノスクリプトティラノスクリプトのプラグインとか、少し高度なことをしているksファイルを覗いてみると「tyrano.plugin」「TG」「TYRANO」といった単語が目につくようになると思います。 この記事ではこの単語たちについて触れていきます。
内容としてはHTML/CSS/javascriptが少しだけわかる人向けになっています。 ティラノスクリプトでの開発をしているうちにちょっとjavascriptの知識がついた人で、もっと高みに登りたい! そう思っている人の役に立てば幸いです。
※僕もティラノスクリプトのことをすべて理解しているわけではありません。間違っている内容が含まれている可能性もありますので、ご了承の上読み進めてくださいませ。
ティラノスクリプトの根幹
ティラノスクリプトについて、javascriptやこれを使った拡張について説明します。
ティラノスクリプトはjavascriptで動いている
そもそもティラノスクリプトとは、シケモクMK氏が開発しているHTML5/CSS3/javascriptを使用して動くゲーム制作に特化したツール(フレームワーク)です。 ただ、HTMLとCSSがわからないとjavascriptはちんぷんかんぷんだと思いますので、ここではHTML/CSSには触れません。 「javascriptによってティラノスクリプトは動いている」と思ってください。
javascriptはホームページのアニメーションや3Dなどのリッチな表現をするためのプログラミング言語で、JavaやC言語などよりは比較的わかりやすいとされています。
※名前は似ていますが、Javaとjavascriptは別モノです。
若干語弊がありますが、ホームページにスライドショーなどの動きをつけているのはほぼ100%javascriptだと思ってもよいでしょう。
javascriptが分かればティラノスクリプトの拡張がなんでもできる
tyranoフォルダに入っているファイルを見てみてください。ほとんどjs(javascript)ファイルです。
とくにtyrano/plugins/kagフォルダに入っているjsファイル群はティラノスクリプトの動作に大きく関係しています。
ティラノスクリプトがjavascriptによって動いているということは、javascriptがわかれば自由に拡張していくことができるということです。
拡張と言えば、プラグインがありますよね。
ティラノスクリプトのタグだけでは対応しきれない範囲をカバーしているプラグインだったり、あるいはタグを自ら生成しているプラグインなんかは、たいていjavascriptのコードを書いています。
本題「tyrano.plugin」ってなに?
「tyrano.plugin」とは、「ティラノスクリプト本体が管轄している世界」のようなものです。
javascriptではこの世界のことをオブジェクトといいます。
これがなんなのかなんとなくでも理解していると、ティラノスクリプトでできることが大幅に広がると思います。
ティラノスクリプトにおけるオブジェクトとは
ティラノスクリプト内でのjavascriptの実行は、大半がこの「tyrano.plugin」という名前のオブジェクト内でおこなわれています。
また、この世界の中には、さらに世界を生成することができます。
地球の中に日本があって、日本の中に都道府県があり、その中に市区町村があるようなイメージです。
そして同じオブジェクトにある変数やオブジェクトには、先頭部分を省略してアクセスすることができるようになっています。 例えば日本に住んでいる知り合いに何かを郵送するとき、住所に「地球東アジア日本国東京都台東区秋葉原~」なんて書きませんよね。 あなたが日本に住んでいれば「東京都台東区~」、東京に住んでいれば「台東区秋葉原~」から書き始めるはずですし、さらに台東区に住んでいれば「秋葉原~」と書き始めるはずです。
オブジェクトもこれと同じで、同じオブジェクトにアクセスする際は省略してもよいことになっています。
本来、ティラノスクリプトでゲーム変数やらシステム変数と呼ばれているものにも「tyrano.plugin~」で始まる長い文字列をつけなければならないのですが、シナリオファイルのための世界(オブジェクト)をあらかじめティラノスクリプトが作ってくれているので、記述する必要がありません。 iscriptの中やevalの中と考えるとわかりやすいと思います。
また、以下のようなコードを実行することでtyrano.pluginの中身をコンソール上で確認できます。
[iscript]
console.log(tyrano.plugin);
[endscript]
画像はtyrano.plugin.kag.configというオブジェクトの中身をのぞきこんでみたものです。 また、このtyrano.plugin.kag.configというオブジェクトは覚えておくと便利なので、詳しい説明を後述しています。
tyrano.pluginという記述はどのようなときに活躍するのか
先ほど同じオブジェクト内にアクセスするときは省略してもよいと言いました。
ではtyrano.pluginという記述はどのようなときに活躍するのでしょうか。
iscriptやevalには、すでにこのタグたちのための世界が用意されています。 逆に言うと、この世界の外にある変数にアクセスしたい場合は、tyrano.plugin~から書き始めることでまずその世界を呼び出す必要があります。
先ほどの秋葉原の郵送先の住所の記載に例えると、大阪府からの場合は「東京都台東区~」と書き始めないと届きません。 まぁ秋葉原は有名なので郵便屋さんが気を効かせてくれることがほとんどだと思いますが、javascriptさんはそうはいきません。プログラムが気を効かせてくれるなんてことはありえないのです。
知っておくと便利なオブジェクト
知っておくと便利なオブジェクトを解説します。
TYRANO.kag.tmpとTYRANO.kag.ftag
data/system/keyConfig.jsを開いてみてください。 (ちなみにファイル内に__tyrano_key_configという記述がありますが、これもオブジェクト名です。キーコンフィグのための世界を生成しているということになります。)
デフォルトでは以下のような記述がコメントアウトしてあります。
if (TYRANO.kag.tmp.sleep_game != null) {
return false;
}
TYRANO.kag.ftag.startTag("sleepgame", {storage:"config.ks"});
これは皆さんご存知コンフィグを呼び出すためのコードです。javascriptで書かれています。 ここではtyrano.pluginではなくTYRANOと書かれていますが、どちらも同じ意味です。 この世界ではTYRANOという変数の中にtyrano.pluginが代入されているため、このような記述ができます。
この記述で出てくるオブジェクトは2つ。 TYRANO.kag.tmpとTYRANO.kag.ftagです。
つまりこのコードではTYRANO.kag.tmpという世界の中にあるsleep_gameという変数と、TYRANO.kag.ftagという世界の中にあるstartTagという関数にアクセスしているわけですね。
TYRANO.kag.tmp.sleep_gameに関しては使いみちが限定されますが、TYRANO.kag.ftag.startTagはとても使い勝手のいい関数です。
普通にシナリオを作る分には知らなくても困ることなんてないのですが、glinkのパラメータのexpやらiscriptの中からティラノスクリプトのタグを呼び出したいことってありませんか? 僕はありました。
glinkでconfig.ksを開きたい【ティラノスクリプト】
そんなとき便利なのがこの関数です。
あまりたくさん例をあげると長くなってしまうので詳しくは割愛しますが、このような使い方ができます。
TYRANO.kag.ftag.startTag("showload");
//[showload]を実行
TYRANO.kag.ftag.startTag("sleepgame", {storage:"config.ks"});
//[sleepgame storage="config.ks"]を実行
TG.config
次にもう一つ知っておくと便利なオブジェクトがTG.configです。 (ちなみに例によってTGとtyrano.plugin.kagは同じものです。) 中身のいじっていないdata/scenario/config.ksとdata/system/Config.tjsを開いてみてください。
【config.ks】
tf.current_bgm_vol=parseInt(TG.config.defaultBgmVolume);
tf.current_se_vol=parseInt(TG.config.defaultSeVolume);
【Config.tjs】
// ◆ BGMの音量 0 ~ 100 で指定します。
;defaultBgmVolume = 100;
// ◆ SEの音量 0 ~ 100 で指定します。
;defaultSeVolume = 100;
それぞれの中に、上記のようなスクリプトがあります。
見てお気づきになった方もいると思いますが、TG.configにアクセスすることでConfig.tjsの中身を参照することができます。
例えばconfig.tjsで設定しているscWidthやscHeghtをimageタグで指定したい場合、このような記述をすることができます。
[iscript]
sf.scWidth = TG.config.scWidth; //Config.tjsから数値を取得
sf.scHeight = TG.config.scHeight; //Config.tjsから数値を取得
[endscript]
[image storage=image.png width=&sf.scWidth height=&sf.scHeight ]
おわりに
ちょっとややこしい話を長々としてしまいました。 ここまで読んでくれた方、ありがとうございます。お疲れ様でした。
ティラノスクリプトというツールは非常に便利なもので、javascriptがどうとかオブジェクトがどうとか気にしなくてもたいていのことはできるようになっています。 なので無理に覚えようとする必要はないと思います。
冒頭でも触れましたが、ティラノスクリプト中級者以上の存在になりたい人の役に立てば幸いです。
広告