ティラノスクリプトにおけるマクロの活用


1.はじめに

初めての方は初めまして。
たまと申します。
今回は以前のMindRenderの記事とは趣向を変え、ティラノスクリプトに関する記事を書いていきたいと思います。

というのも、学校でティラノスクリプトに触れる機会がありまして。ノベルゲームを作ろうと色々調べていたところ、顔グラの表示方法で躓いてしまいました。

現在作成中の作品「生き残りゲーム」

画面左下に表示されている、キャラクターの顔のイラスト(赤丸で囲った部分)が顔グラです。
マクロに関する理解を深め、今後に生かしていくためにも、今回はティラノスクリプトにおけるマクロの活用方法について記事を書いていきます。

今回もよろしくお願いします。

2.ティラノスクリプトとは

ティラノスクリプトは、パソコンで使うことができる、ノベルゲームに特化した一種のゲーム制作アプリです。
私は現在このアプリを利用し、「生き残りゲーム」という作品を作成しています。

3.ティラノスクリプトの特徴

このアプリの特徴は、次の2つだと思っています。
1.ノベルゲーム制作に特化したアプリである点
2.タグを用いて文章を制御する点
順番に解説していきます。

3-1.ノベルゲーム制作に特化したアプリである点

このアプリは、ノベルゲームの制作に特化しています。
ノベルゲームに特化しているということもあり、ノベルゲームを作っていくにあたって必要になってくる機能のほとんどが最初から実装されています。

例えば、メッセージウィンドウの表示・非表示の切り替えでしたり、ボタンを押しているときのボタン表示の変化などがあります。
これらの機能は自分たちでも簡単に再設定ができるようになっています。

3-2.タグを用いて文章を制御する点

ティラノスクリプトでは、主にタグと呼ばれるものを駆使して、ノベルゲームを作成していきます。
そのタグ自体も、実際によく使うものはそこまで数があるわけではありません。様々な種類のタグを使うというよりは、いくつかのタグを組み合わせていくといった印象です。

4.マクロとは

マクロを一言で説明すると、様々な処理を1つにまとめたものです。
私の認識としては、C言語やJavaなどのプログラム言語でいうところの関数のようなものだと認識しています。
例えば、「ボタン1を画面に表示させて!」という処理と「ボタン2を画面に表示させて!」といった処理を「ボタン」というマクロとして処理をまとめるといった具合です。
このようにマクロとしてまとめることにより、実際にコードを書く際は、ボタンマクロを呼び出すだけで、ボタン1と2が画面に表示させるようになります。書くコードの量が圧倒的に減るため、かなり便利な機能です。

5.マクロの使い方

参考資料
サブルーチンとマクロ-使い方&チュートリアル- ティラノスクリプト|スマホ対応のノベルゲームエンジン。無料

ティラノスクリプトでマクロを扱う際は、マクロを呼び出す前(できればゲーム開始時)に下記のように記述します。

[macro name="マクロの名前"]
処理1
処理2
 ・
 ・
 ・
[endmacro]

マクロの名前:各自で設定可能。以降はこの名前を記載することで、このマクロ内の処理が実行させる
処理1処理2:マクロとしてまとめたい処理。上記の例だと、ボタン1・ボタン2を表示させる処理

[macro name="マクロの名前"]から[endmacro]までがマクロとなります。

コードの例

先ほど例に挙げた「ボタン」マクロをコードにするとこんな感じです。

[macro name="button"]
[locate x=830 y=430]
[button graphic="button1.png" storage="gamestart.ks"]
[locate x=830 y=580]
[button graphic="button2.png" storage="loadstart.ks"]
[s]
[endmacro]

locate:画面上のどこに配置するかを設定
button:locateで設定した位置にボタンを配置
graphic:ボタンの見た目をイラストで指定
storage:ボタンの場合、押したらどのシナリオに移動するかを指定
[s]:ゲーム内の時間を停止

実際に使うイラストやシナリオの名前、ボタンの配置などは異なってくると思いますが、大体こんな感じに落ち着くはずです。多分。

6.実際のコード

私が「生き残りゲーム」で用いているマクロは、ロールボタン(メニュー、セーブ、ロードなどのボタン)に関するものです。実際のコードは以下の通り。

;ロールボタンのマクロ
[macro name="role_button"]
[button name="role_button" role="menu" graphic="menu_new.png" entering="button_menu_hit1.png" x="1170" y="705"]
[button name="role_button" role="save" graphic="save_new.png" entering="button_save_hit1.png" x="1330" y="705"]
[button name="role_button" role="load" graphic="load_new.png" entering="button_load_hit1.png" x="1470" y="705"]
[button name="role_button" role="window" graphic="buton_delete.png" entering="button_delete_hit.png" x="1730" y="710"]
[endmacro]

ロールボタンはメッセージウィンドウと連動して表示・非表示を行うので、マクロを利用しなかった場合、かなり面倒なコーディングになることが予想されます。
たとえコピー&ペーストを使ったとしても、決して見やすいコードにはならないでしょう。マクロの中身を毎回書くことになるので当然です。

6.問題点

先ほどのように、マクロ内の数値すべてが定数(場面によらず一定な値)であれば何も問題はありませんでした。
しかし、今回の顔グラのように、定数でない場合は上記のようにはいきません。呼び出すところによって使用するイラストを変更しなくてはいけませんからね。
無知だったこともあり、下記のようなコードを顔グラが変わるたびに毎回書いていました。

[freeimage layer=message1]
[image layer="message1" x=0 y=555 storage="イラストの名前" zindex=999 wait=false]

freeimage:指定したレイヤーを開放
layer:表示するレイヤーを指定
storage:イラストの場合、表示するイラストの名前を記載
zindex:重なり方を指定。値が大きいほど手前に描画される
wait:この処理中にほかの処理を行うかを設定。trueで同時にほかの処理を行わない

見てみると、使用するイラスト以外の要素(表示させるレイヤー、表示位置、前後関係、表示までの時間)が定数になっています。今後何度も書いていくことを考えると、何とかして短くしたいわけです。このままではあまりにも非効率的ですし。

7.調査

わからないことは調べます。調査とか言ってますけど、やることはただの検索と一緒です。
調べてみると、先ほどの公式サイトに加え、こ・ぱんだ氏のブログにもヒントがありました。
ティラノスクリプト:maskタグを使ったフラッシュ効果マクロ

どうやら「%」をうまく用いるとできるみたいですね。
下記のコードで試してみます。

;顔グラのマクロ
[macro name="fgraphic"]
[freeimage layer=message1]
[image layer="message1" x=0 y=555 storage="%storage" zindex=999 wait=false]
[endmacro]

問題点で記したとおり、storage以外は場面によって変更されないため、storageの要素のみを「%storage」としました。
公式サイトとこ・ぱんだ氏のブログによれば、今回でいうfgraphicマクロを呼び出す際、下記のように記載すればよさそうです。

[fgraphic storage="イラスト名"]

このようにすることによって、このマクロが呼び出された際、顔グラのマクロで表記した「%storage」の部分がファイルに保存されているイラスト名に置き換わります。
呼び出す際のコードは、下記のとおりです。

;顔グラに葵の表情を表示
[fgraphic storage="face_aoi_talk.png"]
;顔グラを飯島のものに変更
[fgraphic storage="face_ijima_normal.png"]

こうすることで……

顔グラ部分が無事に変わりました。
やはり「%」を用いる方法は間違いなさそうですね。
画質がガビガビになってしまい申し訳ないです…。
それにしても画質粗すぎでは?

8.まとめ

今回はティラノスクリプトにおけるマクロの使い方について調べました。
場面によって処理内容が一定のマクロは処理をただまとめるだけでよいのですが、今回扱った顔グラのマクロなど、場面によってマクロの内容が変化する場合は「%」を用いることで実現できます。

ティラノスクリプトでのマクロについて調べていた時、以前から私が利用していたMindRenderにもマクロが存在していたことを思い出しました。知ってはいましたが未だ使ったことのない機能だったので、これを機会にMindRenderのマクロについても調べ、今後の開発に利用していこうと思います。

9.参考URL

ティラノスクリプト公式サイト

こ・ぱんだ氏のブログ

この記事が気に入ったらサポートをしてみませんか?