ゲーム制作記 2024/2月②ビルダーでティラノスクリプト使う話
この記事はゲーム開発知識皆無のティラノビルダー初心者が
自分用につけている備忘録です。
今回も本当にビルダーの基礎の基礎の基礎みたいな内容です。
書くほど需要があるのか?といわれたら多分無い
今月は
・スチルを見れる機能のひな型作り(CGモード)・・・前回のnote
・本編の最序盤の半分くらいまで
形にしてました
この記事ではティラノスクリプトでちょこちょこ記述する系のものがメインです。(ビルダー初心者むけでは)
ビルダー使ってる人がティラノについて調べものしているときにぶち当たる壁だと個人的に思っているのが
ティラノスクリプトではこうやるらしい。
でもビルダーではどう入れればいいのかわからない。
そこまでやるならスクリプトの方使えばよいのでは?と思う気持ちと
タイピング苦手激遅の自分からするとビルダーとスクリプトの良いところどりしたいなって思う気持ちの両方があったり。
ビルダーの中身はティラノスクリプト
つまりティラノスクリプトでできることの多くはビルダーでもできる。
よし公式タグリファレンスを読もうってなるわけですね。
※ただし現ビルダー内のティラノスクリプトはverが古い可能性があり、かつ
ビルダーの仕様で面倒なことになってる部分もあるので一丸に一緒とは言えません。
最たる例としてビルダーはfirst.ksが初期化されることとかでしょうか。
スクリプトユーザー:自分の場合first.ksに書いたらいけました
ビルダーユーザー:そうなんだ!じゃあ自分もそうしよ→ぎゃああああ
first.ksみるに読み込んでるksに書いたりすればいいのかもしれない?
今回使った機能関連
■複数回しらべると会話などが変わるイベント
あくまでこのnoteは自分の為の備忘録なので簡素に。
・イベントをループさせる
これは簡単。
分岐させたルートの最後にジャンプでループ開始のラベルに飛ばすだけ。
ループの為にジャンプで戻る際、背景やキャラなどの画像は画面上にすでに出てる状態のままでいくので
ループ開始用のラベルを用意しておくと戻るたびに画面がスムーズなループが作れます。
【通常のラベル】既読/未読の判定はラベルが基準なのでこまめが吉
・背景・キャラ・画像・ループ直前までのイベントテキスト
【ループ用のラベル】
・分岐ボタンやクリッカブル配置 ループのたびに再配置されるように
〈ゲーム停止〉
あとは先に進まない分岐の最後に【ループ用のラベル】へのジャンプいれればいいです。
・調べた回数をカウントする
何回調べたのかについては変数でその箇所を通った回数なり数の代入なりで記録し、その数を条件にジャンプ先のラベルを変える、これでいいですね。
もし「いいえ」選択後の会話に差分を入れたいならそのラベルの先で
個別にテキスト変えたりすればいいのでそこまでトラブルはないかと。
このゲームでは
あくまで一例ですが、「はい」「いいえ」の二択のうち「いいえ」を選び続けると怒られるイベントがあります。
いいえを一定回数選んでしまうとキャラが怒ってへそを曲げてしまい、
その後の対応が冷たくなる・・・みたいなのを入れたいと思ったので
特定の変数の値が〇以上のときは塩対応、それ以外の時は通常仕様という
分岐が必要になってきます。つまりifの出番。
■ifを使う
ifの使い方はこのnote見るより公式のタグ解説やifそのものについて説明しているものなどを見た方がわかるかと。
ざっくりと説明すると
[if]:もしこの時は~っていうifを開始するための基本。当然だけど必ずある。
[elsif]:[if]で書いた以外の他条件のときも指定したいとき
[else]:[if]や[elsif]のどれにも当てはまらない条件のとき
[endif]:大事な締め、ここで全部おしまい。これも必須 最後に忘れがち
一応:スクリプト記述するとき忘れがちになる注意事項
各変数 sf.○○:システム変数 f.○○:ゲーム変数 tf.○○:一時変数
target=の後は*(半角アスタリスク)を入れてラベル名を入れないとラベル名を認識してもらえません。例:target=*nameでnameというラベルに飛ぶ
数字ではなく変数に文字列を代入しているときは’(シングルクォート)で囲む必要がある。’はキーボードの7をshift押しながらで打てます
例:f.hensuu='inu'でhensuuという変数にinuという文字が代入され
ifで条件に指定するときも
[if exp="f.hensuu=='inu'"] で有効になるという感じ
ビルダーの機能で変数の追加・変数への代入や四則演算などはできるので
これらの知識が必要になるのはスクリプトで書くときだけになりそうな。
・テキストを分岐させる
前項目の続き。
1つのテキストの中で変数によって1部内容が変わりまた共通部に戻るみたいに部分的な差分があるとき
ビルダーのコンポーネントのみでやるなら、
共通部までのテキストで区切り、分岐部分からは変数で条件ジャンプした先のラベルA or ラベルB→後続の共通ラベルにジャンプ合流ってやるとできます。
しかしifができるなら
このようにテキストボックスの中で使うことができます。
if以外にもテキストのスタイルを変える[font]なども入れると反映されます
ただし
これをやると右上にある「入力モード」の設定が行末に自動で入ってしまうため、[if][endif]などの行に差し掛かると[p]などによって
プレイ時にメッセージウィンドウが空白の状態で1クリック分入ってしまいます。
そういう時は画像のように
入力モードを「何もしない」にして各文末に自分でタグをいれていけば通常通りの仕様になります。慣れるまで行末にタグ忘れて・・になりがち。
(本来は[p]:クリック待ち+改ページなどをいれる仕様なのを入れなくてもいいようにしてくれているが入力モードです)
ちなみに
コンポーネント:ティラノスクリプトでも画像のようにいれると同じようにできます。
テキストの分岐以外に、キャラの表情変えるとか移動を加える音を鳴らす、ラベルジャンプさせるなどの他の追加要素があるときはスクリプトでやった方が良いかと。
・ifで複数の変数を同時に扱う
2つの変数が特定の組み合わせの時に発生するイベントやらテキスト差分をつくりたいとき、
ビルダーだと1回のジャンプでは1つの条件でしか使えないので
変数Aと変数Bが共に1の時だけ起こるイベントなどを作ろうとすると
変数Aが1の時にジャンプし変数Bが1の時だけ条件ジャンプを~って大変です。変数の数や条件が多いほど振り分けるためのラベルが増えていき地獄です。
そういうときも素直にif使った方が見やすくなります
何言ってんだ?と混乱しそうなので
[if exp="f.A==1 && f.B==1"]
/変数Aが1 かつ 変数Bが1のとき
[if exp="f.A==5 || f.B==5"]
/変数Aが5 または 変数Bが5のとき
[if exp="f.A==1 && f.B==2 || f.C>=3 || f.D=='おでん’”]
/変数Aが1かつ変数Bが2のとき、
または変数Cが3以上(3も含む)
または変数Dにおでんという文字が代入されているとき。
意味わからない感じですけどこの場合、
変数Aが1かつ変数Bが2を満たしているときは、変数Cが1でも、変数Dがおでん以外の文字になっていようと該当する
ということになります。 ややこしいですねえ。
■スクリプトでキャラ登場させる
キャラの登録はビルダーの機能ですでに終わっている。
立ち絵の差分もすでに入っている。
じゃあキャラ登場をティラノスクリプトで記述するにはどうしたら?
(こういうのは基本コンポーネントで良い)
[chara_show]タグです。しかしリファレンスにはnameが必須とあります。
キャラについているnameは
これが各キャラのnameになります。
そしてその下に入っているのがキャライラストの差分絵です。
じゃあstorage=で登場時のイラスト指定するときはこれをいれればいいんだ
と思ったのですが
[chara_show name="unko" storage="cgmi.png" ~]
でやるとビルダーからパスがあってないと怒られます
ビルダーのコンポーネントを見ると
画像の名前cgmi.pngの前にcharaとか1とか入ってます
[chara_show name="unko" storage="chara/1/cgmi.png" ~]
できちんと表示されるようになりました。
実際にキャラのファイルがある場所を見ると
確かに解説に書いてある配置先のdata/fgimageのあとはこのパスになっていますね。
キャラ変更で別の絵に変えるときも同じ要領です。
ティラノスクリプトのように1から自分でやっていない分
こういう時にそういえばこれどうなってんの?ってなることも増えるので
情報として残しておいた方が、自分の為になるかもなので載せておきます。
とどのつまり
公式タグリファレンス と ビルダーのコンポーネント欄マジ助かる
もっといろんなことやったんですけど長くなるのでそれはまた来月にします。
この記事が気に入ったらサポートをしてみませんか?