見出し画像

「タイトルに戻る」と「タイトルへ飛ぶ」の違い/ティラノビルダー備忘録

※ティラノビルダー初心者向けのお話です※



タイトルに戻る?飛ぶ?


「タイトルに戻る」「タイトルへ飛ぶ」の違い……
分かります……?

私は分からないまま2年くらいティラノビルダー使ってました爆
実はこれ、「変数」を使う者にとっては密かに落とし穴だったりします。

なぜなら「タイトルに戻る」と"システム変数以外の変数がリセット"され、「タイトルへ飛ぶ」と"全ての変数がリセットされない"からです!

その理由はすべてfirst.ksにあった…!!
知ってる人は当然のように知ってるけど知らないと結構な罠なので、今回は少し詳しく見てみます!


「タイトルに戻る」とは


「タイトル画面に戻る」=「Back to titleを押す」です
ティラノの標準機能であるメニューから、タイトル画面に戻るボタンを押してタイトル画面へ戻る動作のことを言います!

これな

ティラノビルダーのプレビュー上ではスッとタイトル画面へ戻りますが、実際にノベルゲームコレクションでブラウザ公開した場合は「タップしてスタート」が挟まることにお気づきでしょうか

これはタイトル画面へ戻るという動作が「ゲームを起動し直す」と同じだからなんです。
ゲーム起動時、裏では何が起こってるかというと

「first.ks」→「title_screen.ks」

という順番でシナリオファイルが実行されています。

ティラノスクリプトの起動時とメニューからのタイトルに戻るは、必ずfirst.ksから始まります。

引用元は下の記事


ノベコレではブラウザ公開する際にタイトル画面での音再生対策で自動的に「タップしてスタート」が挿入されています。つまり

メニュー→タイトルに戻る→タップしてスタート+first.ks→title_screen.ks(タイトル画面)

というゲーム再起動のフローが起きてます。
ちなみにfirst.ksはプロジェクトファイルのsenarioファイルの中に居ますがビルダー上には表示されません。編集できないからです!
起動に必要なアレコレを読み込む大事なファイルゆえ、エディタソフトで変更してもプレビューのたびに元の状態へ戻されます。

さて、タイトルに戻る際にこの「first.ks」を通過すると何が起こるのか…?
そう!「chara_define.ksの再読み込み」が発生します!

……え、なに?chara…?キャラってキャラの立ち絵の…?
と私も思いました ええ。

まずfirst.ksの中身をエディタソフト(私は未だにATOM…)で開くとこうです

chara_define.ksがcallで呼び出されている

そしてchara_define.ksの中身はこうです
(data→scenario→systemの中にあります)

その名の通りキャラ情報が定義されています

しかしこの下に……!

おるんですよ、変数の定義コーナーが…!!

ビルダー上の「変数管理」で作成した変数がずらっと並び、ここで初期値が代入されています!
だから標準機能でタイトルに戻るとfirst.ksを通過するからchara_define.ksが再読み込みされ、毎回必ず普通の変数(ゲーム変数)が初期値へリセットされるという仕組みなんです。

ただし「システム変数」はゲームを閉じても保存される変数。
リセットされるわけにはいかないのでここには居ません。
ではどこに?というと、初めて使う時に「代入」で降臨します。

(そのため少し癖があるのですが詳しくはこちら)

そもそも普通の変数(ゲーム変数)とシステム変数の違いはこちら


※ここまで使用ソフト:ティラノビルダーv204



「タイトルへ飛ぶ」とは


「タイトル画面へ飛ぶ」=「title_screen.ksへジャンプ」のことです
どこかのシナリオファイルでジャンプコンポーネントを使い「title_screen.ks」へ自前でジャンプすることを言います!

つまり前項の説明であった「first.ks」を通過しません!
ただのジャンプなのでストーリーのシナリオ間移動と全く同じなのです。

よってタイトル画面に来ても変数の中身はそのままです。
でもプレイヤーが再起動やリロードを行ったら普通の変数(ゲーム変数)は初期化されるし、セーブデータのロードで中身は書き換えられてしまいます。

なので、タイトル画面で変数を使ったギミック(エンディング達成リストやクリア後にタイトル画面が変わるとかクリア特典解放のボタンを出したいなど)を使いたい場合は素直にシステム変数を使うのが良いと思います。

そしてfirst.ksの代わりに普通の変数(ゲーム変数)のリセットコーナーを作って通過させてあげると良いかと思います!

こんな感じで

追記:ちなみに私はこの「reset.ks」をtitle_screen.ksでコールしてました。リセットコーナー絶対通過させるマン



タイトルへジャンプの使い所


先ほどの説明だと「結局自分でわざわざ変数リセットしなきゃいけないのに自前でタイトルへジャンプするメリットが分からん」という感じになりますが……

あります!使い所!


例A:エンド後タイトル画面へ移動させる場合

これが一番多そうな気がします。
バッドエンド後に強制的にタイトル画面、とか、クリアしたらエンドロールからのタイトル画面、って鉄板というか、そこに標準機能のタイトルに戻るボタンは登場しないですよね。

エンド回収状況を記録するシステム変数以外の、分岐に使うような変数をリセットしないでタイトル画面に飛ぶと、もし間髪入れず(ロードではなく)もう一回はじめからを選んだ場合おかしなことになっちゃいますね……!


例B:標準機能のメニューを封印する場合

これは自分の時の話になります。
過去にオリジナルのメニュー画面を作ったことがありました。
標準機能のメニュー画面を封印し、テキストを読む際のセーブロードは切り捨て、探索中のクリッカブルマップ受付時にオリジナルメニュー画面を開く画像ボタンを置く、という形なのでビルダー上で作れました。

こんな感じでメニューが全部オリジナル画像ボタン(コンフィグなくてごめん)
自力では標準機能のダイアログが改造できないのでこれもオリジナル画像

標準機能のメニューと異なり、シナリオファイルにコンポーネントを使って作ったメニュー画面です。なので「タイトルに戻る」はすなわち「タイトルへ飛ぶ」しかなく、変数のリセットコーナーを挟んでからtitle_screen.ksへ飛ばしました。

※ちなみにコンフィグは「端末の音量変えてもらえばいいか!」などという安直な考えで諦めてしまったのですが、セーブロードはどうにかできました

title_screen.ksからパクってきたshowloadさんと打ち換えて作ったshowsaveです

なお標準機能のメニュー画面を完全に封印するには
・title_screen.ksのshowmenu消す
・(適用中なら)設定からUIテーマ一括変換のボタン非表示
・設定からキーコンフィグ割り当てを変える
が必要になります

※ここまで使用ソフト:ティラノビルダーv184



まとめ


どのタイミングでどの変数が初期化されるのか把握できれば、タイトル画面を股にかけたADVが作りやすくなると思います!
よき変数ライフをお過ごしください(???)

ついでに今回オリジナルメニュー画面のスクショで登場したのはこのゲームで~す!




そういえば

下の記事では最初に普通の変数(ゲーム変数)でエンド回収の印をつけてからタイトルにジャンプする、という形で説明していますが…
実際はリトライ画面へ飛ばしてあげないとタイトル画面帰ってきたしとゲーム閉じてエンド回収状況が消えたり、セーブロード不可ゾーンを作らないと分岐点のセーブデータをロードしてエンド回収の印(変数設定)を失うという事故が起こりますので、システム変数でやる場合と合わせてぜひ後半の解説もお読み頂ければと思います…!