ティラノビルダー→ティラノスクリプト移植

ティラノビルダー→ティラノスクリプト移植

ノベルゲームつくりたい

イラストレーターさんと、なにかやろう!ということになり、ノベルゲームを作ってみることにしました。

まずは完成させることを目標に、ティラノビルダーというゲームビルダーで5分ほどでプレイできるシナリオを考えて制作しましたが、 ほぼ完成したところで色々欲が出ました。

ティラノビルダーの無料版では幾つか制限があるのですが、声をやりたいと言って下さる方たちがいましたので、BGM無制限で使えるティラノビルダーPro(1480円)か、ティラノスクリプト(無料)を使ってみることにしました。

これらのティラノシリーズは、ノベルまたはADV形式のゲームビルダーですが、こんなものをほぼ無料で提供してくれるなんてとてもありがたいです!
tyranoVRなどもあったので、いつか挑戦してみたいです。

ティラノビルダー無料版無料初心者向け。GUIでドラッグ&ドロップで視覚的に制作できる。
ティラノビルダーPro1480円無料版では使えるキャラ数やBGM数に制限があるが、Pro版は無制限。
ティラノスクリプト無料上級者向け。ティラノビルダーより多機能で色々なことができる。
スクリプト(コード)を書いていくタイプ。

元々、ティラノビルダーに慣れたらティラノスクリプトを使ってみたいと思ってたので、早速作ってみることにしました。

何だか Dreamweaver やホームページビルダーみたいなので作られたHTMLページの中身を見た時のようなガチガチな感じです。
機械的にコーディングされたものはみな同じ印象を持ちますね。

ティラノスクリプトはHTMLのようなマークアップ言語+少しのロジカルな文法という感じで、プログラミング経験者ならさほど難しくなさそうです。

もちろん非エンジニアでも、プログラム言語を覚えるよりわかりやすいと思います。

プログラム言語複雑な論理的(ロジカル)な処理を書くことができる
マークアップ言語表示や構造を記述するための言語

ネットで調べると、スクリプト→ビルダーという記事はありましたが逆はなかったのでメモとしてブログに書いてみることにしました。

移植メモ

以下、ティラノビルダーをTB、ティラノスクリプトをTSとします。

TB のシナリオファイルの中身を見てみると、 TS で書いてあります。フォルダ構成も同じです。
ほぼファイルコピーでいけそうだけど、あとはエラーを修正していく形でやってみます。

TB の myproject >プロジェクトフォルダ配下の必要そうなフォルダ・ファイルを、 TS の同構成フォルダ配下にコピーします。

赤枠を TS にコピーします。
サンプルプロジェクトをもとに作っていきます。

エラー処理

この状態で、ティラノライダーからプロジェクトを起動するとエラーメッセージが出ました。

OKするとタイトル画面が出ましたが、「はじめる」をクリックするとまたエラーがでました。

このエラーもOKすると、普通にゲームが進行できそうですので、まずはこの2つを調べます。

[stop_keyconfig]を、Atomのプロジェクト内検索(秀丸のgrepみたいな)すると、1か所 data\scenario\system\builder.ksの中でヒットしました。

該当の部分のIF文(start_keyconfigも含む)をコメントアウトしてもとりあえず問題なさそう。

これらは TS のコマンドにあるようですが、なぜエラーなのかよくわからないのでまた不具合がでたら考えることにします。(まだ 勉強不足w)

進めていくと、進行が止まりブラックアウトするエラーがありましたが、これは既に退場しているキャラをまた退場させるという矛盾したコードが入っていたからでした。
TB はこういった矛盾もエラーを出さずスルーしてくれていたようです。

次に、キャラの表情が違うものが出ているので対処します。
画像のパス指定は正しいようですが、なにかダメなようです。

調べるとTBでは、data\scenario\system\chara_define.ks でキャラの定義をしているようなので、 wikiに従ってそこを修正すると正しく表示できました。

表情の指定がないと、 chara_define.ks のchara_newで設定した画像がdefaultとしてでるようです。

シナリオの中の画像のパス指定は正しいのに違う表情の画像が出る
;おばあさん
[chara_new  name="おばあさん"  jname="おばあさん"  storage="chara/5/granma.png"  ]
[chara_face name="おばあさん" face="glay" storage="chara/5/GLAY.png"]

他の表情も chara_define.ks 内に定義。コードが美しくないけどここできれいにしてしまうと他でエラー出まくると思うので我慢。
シナリオの方のコードもTBのままchara_newなのだが時間があれば後できれいにしよう。

次に、フォントが当たってないので調べると、TBで入れたフォントファイルはdata\others 配下にあったので、TSの同フォルダ配下にコピーし、wiki に従ってtyrano\font.cssの中を修正します。

※ttf woff eotは最低限用意して下さい。

とありますが、ttfしかなかったので FONT-FACE GENERATORでwoff, eot, svgを生成し data\others に入れました。

そしてfirst.ks にフォント指定文を入れると、フォントが変わりました。
サンプルの指定は size=20 bold=true だったので、太字を止め、フォントサイズも変えました。

[deffont size=24 face=mfrules bold=false][resetfont]

Webでのエラー

TB、TSはWebブラウザからでも起動できます!スバラシイ
Webにアップしてブラウザ起動すると、起動時にローカルでは出なかったエラーが出ました。

file not found;./data/scenario/system/plugin_third.ks

plugin_third.ksが無いと言ってます。
Webサーバにプロジェクトフォルダを一括アップロードする際、0KBなのではじかれたような感じです。

システムさん的には、中身は空でも有れば満足するのでアップすればOKでした。
または新規ファイル作成して名前をつけてもOKです。

さらにローカルのティラノスクリプトでは音楽が再生されてたのに、Webにアップしてブラウザから起動すると音楽が再生されない問題がありました。

調べると、、ふむ、クリック後でないと音楽が…?
と思ったら私の場合違う問題のようです。

Webサーバーにアップしたファイルを見ると、日本語のファイルが軒並み文字化けしています。

全部半角英語に直すと問題なくブラウザでもBGMが再生されました。
これはWebサーバさんが日本語を許してくれなかったんですね。

エンジニアあるあるなので、作るときもいいのかな?と思ってましたが、やはりファイル名は半角英数字がいいですね。

その他思ったこと

デバッグ時に、やたら始まるのが遅い!と調べてみると、そこで使っている背景画像がpngで2.4MB以上ありました。

アプリはサイズ大事…!と、jpgにしたら350KBになりました。
(拡張子の選定についてはそれぞれ適材適所で)

ついでに全部のpngファイルのサイズ縮小対応したら、遅い原因はサイズではなく、tb_show_message_windowが無いことでした…。

でもアプリサイズのエコは大事です!

プロジェクトフォルダ構成

これは最初にTSをいじろうとして悩んだところです。

複数のシナリオを作る想定で、まずTSのプロジェクトフォルダ構成を知りたいと思ったのですが、知りたい答えがピンポイントで無く変に悩んでしまいました。。

TBだとmyprojectの下にプロジェクトが複数入ってきますが、TSはmyprojectというフォルダもないし、TSのフォルダの下のドコに作ればいいんだ?と。

なんのことはなく、単にサンプルプロジェクト自体が myproject 配下にあるものと同じで、どこに置いてもいいということでした。

私はtyranoscript_gameというフォルダを作ってその中にサンプルや自分のプロジェクトを置きました。

TBが特殊で、TSのプロジェクトを視覚的に作成するために後から作られたGUIツールで、TSフォルダを中に置いているイメージと思います (たぶん) 。

この概念が分からなかったので、無駄に戸惑ってしまいました…。

TBのフォルダ構成を参考に、TSのひな型が作れそうです。
後で作成していきたいと思います。

おわりに

TS初心者なので、かなりやっつけ感があります。
無駄なものがあったり、コード汚いとソワソワしますね…。

まだテストも不十分で、参考にする際は自己責任でお願いします。

でもいきなりTSのコード勉強するのめんどくさ~という人は、TBで作って移植するのもアリだと思います。

TSとTBを入れる→シナリオ一区切り(ファイル)ごとTBで作ってTSにコピペ。
(全移植すると私のようにコードが汚くなります)

文章にすると面倒そうだけど、あまり考えずに作れます!
やってるとTSに目が慣れてくるので、慣れたらTSでガリガリやる。

それくらいTBは視覚的にわかりやすく、作るまでの学習時間があまりかからなかったのです。
また追記あれば書きます。

作ったアプリ置き場