見出し画像

ゲーム制作記 2024/5月:サウンドルーム(BGM聴けるやつ)を作る

この記事はゲーム開発知識皆無のティラノビルダー初心者が
自分用につけている備忘録です。
なるべくティラノビルダーのコンポーネントのみで動かせないものかと藻掻いている人間の独り言です。

ゲームの基本システム
今作っているゲーム:ワンバウoneは
謎解き風味の探索アドベンチャーゲームです。
色んなマップを駆け回って画面に表示されているポイントに特定のアクションやアイテムを使用することで先に進める系のやつです。



今月の進捗

今月はすでに公開している自作ゲーム2つのPV?を作ってみたり、と少し他のことやり気味でした。
・チャプター2の主要マップをつなげてマップ間移動とサブ要素のイベント作りまでは完了
・シナリオは真ん中宙ぶらりんのまま・・・
・BGM観賞モードを作りました(今回のメイン)


■サウンドルーム※BGM観賞モードをいれる

今作はBGMの一部を依頼して作ってもらう予定でいるので、曲をたくさん聞いてもらえるようにサウンドルームと呼ばれる機能をいれたいと思います。
(依頼とかするの初めてなので相手方に失礼のないようにしたいですね)

サウンドテストの形式って色々あると思うのですが、今回は
・曲名や作曲者名などの情報が表記してあり、
・再生ボタンと停止ボタンがあり
・曲の再生中でも矢印で移動し別の曲を選択できる
というシンプルな方式にします。
でそれを形にすると、こうなります。見た感じで各機能はおおよそわかるかなと

1:背景と表示するボタンについて

このサウンドテストの仕様なら、曲の選択時に画面上で切り替えるのは中心部のテキストだけで良いので、
・サウンドルームから戻る為のボタン
・BGM(トラック)を切り替える左右の矢印ボタン
・再生用ボタン/停止ボタンのデザイン
背景に直接描き入れた方が楽そうです。
画像ボタンではなく透明なクリッカブルマップでやると曲の切り替え時に画面全体がチラつくみたいな現象は多少軽減するかと。


●変数を用意する

今回必要なのは
 今どの曲が選択されているのか判断するための変数
これを使えば、
・再生ボタンを押したときどの曲を鳴らすのか判別できたり
・再生中の曲を聞きながら他の曲を選ぶため矢印を動かし続けることも可能になります。
f.bgmtestみたいな感じにサウンドルーム専用の変数を作って
1曲目なら1、2曲目なら2、3曲目なら3と数字代入させます。

 変数とかよくわからんよって人は

もっと単純に、左右の矢印押しただけで次のトラック用のラベルにジャンプしその都度該当するBGM再生するようにすることもできます。
【ラベル】track1
【テキスト消去】(前のトラックのテキスト消すため)
【BGM再生】
【テキスト配置】:trackナンバーは目印として必要かなと。
【クリッカブルマップ】サウンドルーム辞める用のラベルへ
【クリッカプルマップ】ラベルtrack2へ
【クリッカプルマップ】ラベル最後のtrackへ
【ゲーム停止】
~~~~~~~~~~
【ラベル】track2
【テキスト消去】(前のトラックのテキスト消すため)
【BGM再生】
【テキスト配置】
【クリッカブルマップ】サウンドルーム辞める用のラベルへ
【クリッカプルマップ】ラベルtrack1へ
【クリッカプルマップ】ラベルtrack3へ
【ゲーム停止】
みたいな感じに

この作りだと矢印を押してtrackを変更するたびに自動でBGMが切り替わる仕様になります。


2:選択中の画面の作り方

マウスで文字入れすることに限界を感じたのでペン型マウス買うか検討中

●各ボタンのざっくりとした説明

①サウンドルームを辞めて前の画面に戻る
②今選択中のBGMの情報
③前のtrackに移動 ④次のtrackに移動
⑤今流れているBGMの再生停止 ⑥②に表示されているBGMの再生を開始

●実際の組み立て方

【ラベル】track○(そのtrack数)←自分がわかれば何でもいい
【改ページ】:なんとなくいれてるけど要らないかも
【テキスト消去】:前trackのテキストを消すため
【②のテキスト表示】
【変数操作】サウンドルーム用の変数にそのtrackのナンバー数を代入
【クリッカプルマップ】③用。前のラベルにジャンプ(前のトラックに戻る)するため。
【クリッカプルマップ】④用。次のラベルにジャンプ(次のトラックに進む)するため。
【クリッカプルマップ】①用。サウンドルームを抜けるためのラベルに飛ぶ
【クリッカプルマップ】⑤用。BGM停止用のラベルに飛ぶ
【クリッカプルマップ】⑥用。BGM再生用のラベルに飛ぶ
【ゲーム停止】

スクリプトを極力打たないようにするならこんな感じなります。
これを聞けるtrackの数だけ用意します。


●①・⑤・⑥はそれぞれ共通のラベルへ飛ばす

これらはいつ押しても同じ機能を擁しているものなので、どのtrackのラベルからでも同じラベルにジャンプさせます。要するにラベルは1つだけあれば良いってこと。

①(元の画面に戻る)の場合
【ラベル】例:return
【テキスト消去】:戻った際にテキストが残るため
【BGM停止】:再生中の曲がそのまま流れ続けます
【ジャンプ】:サウンドルームに入る前のシナリオのラベルへジャンプ。
サウンドルーム内でBGM関係を弄っているので、ジャンプ先にはシナリオ元のBGM再生を通る形にしてください。
サウンドルームから戻るときはいいけど、通常プレイ時に同じ曲が2度再生する形になってしまうというかたは
①の戻るボタン→元のBGMを再生させるだけのラベル→サウンドルームに入る前の画面へという感じに間に1つ挟んでジャンプすれば良いかと。


次に用意したのは「今何番目のtrackが表示されているか」を判断するためのシナリオです。ここからは便宜上、位置判断用シナリオって呼びます
⑤も⑥も最後はここを通ってサウンドルーム本体の各trackラベルに戻ります。
位置判断用シナリオは
【ジャンプ】変数○が1のときサウンドルーム本体の【ラベル】track1へ
【ジャンプ】変数○が2のときサウンドルーム本体の【ラベル】track2へ

という感じに全track分のジャンプだけを作ります。

⑤と⑥のシナリオジャンプを図にするとこんな感じです。
⑤の停止ラベル→位置判断用シナリオ→そのtrackのラベルへ
⑥の再生ラベル→BGMを再生するためのシナリオ→変数の値で該当のBGMを再生する→位置判断用シナリオ→そのtrackのラベルへ

わかりにく

⑤(BGM停止)の場合
【ラベル】例:tomeru
【BGM停止】
【ジャンプ】位置判断用シナリオ
~~~~~~~
ここに位置判断用の変数での各ジャンプを入れるとtrackの数だけジャンプが必要になるのでビルダーの画面がだるくなります。各track用のラベルと位置判断用の表示が分かれてビルダーの画面が見やすくなるので、曲数が多いときはこの方が良いかと。

⑥(BGM再生)の場合
まずはサウンドルームのBGM再生用のシナリオをいくつか別途に用意しておきます。BGMを何個かのシナリオに分けるって感じですね。
・⑥のラベルはその再生用の別シナリオに飛ぶための玄関みたいなものです
【ラベル】例:saisei
変数の値でどの曲が再生できるシナリオに飛ぶか判別させます。
【ジャンプ】変数○が20以上のときはBGM再生用の「シナリオA」へ
【ジャンプ】変数○が15以上のときはBGM再生用の「シナリオB」へ
【ジャンプ】変数○が10以上のときはBGM再生用の「シナリオC」へ
・・・
~~~~~~~
ジャンプ先の1つである、シナリオAでさらに細かく分かれます。
【ジャンプ】変数○が21のときラベル:saisei21へ
【ジャンプ】変数○が22のときラベル:saisei22へ
【ジャンプ】変数○が23のときラベル:saisei23へ
・・・・
【ラベル】saisei21
【BGM再生】:21番目の曲を流す(ビルダーの初期設定では同時に流せるBGMは1つまでなので停止を入れなくても自動で切り替わります)
【ジャンプ】:位置判断シナリオへ

と全track分の再生を作っておきます。

なぜBGMを再生するためのシナリオを分けているのかというと、
ビルダーはシナリオをロードする際そのシナリオ内データ丸ごと1度読み込むそうなので、全部の曲を1つのシナリオに入れるとロードの際スマホユーザーとか悲鳴を上げてしまうかも?という懸念からです。数曲しかないなら必要ないかと。BGMやアニメーション動画は画像1枚と違いデータ量がべらぼうに多くなるので、動画の読み込みやBGMの切替演出の際は注意が必要だったりします。※対策効果があるかはわかりません。


 ビルダーで「変数の値が○以上かつ○未満の条件で区分けされるジャンプ」をさせたいとき

ビルダーのジャンプだとA(変数)がB(数値や言葉)と同じ/異なる・大きい・小さいでしか設定できませんね。
例えば好感度が5以上10未満のときはシナリオAへって動きにしたいとき、ちょっと困ってしまうわけです。
でも、だからといってわざわざ好感度1から順に、1のときは~2のときは~7のときは~なんて最初から1つずつジャンプいれなくてもいいのです。

まずビルダーを扱う際に覚えておいてほしいこと、
ティラノエンジンは基本的に
上に配置したコンポーネントから順に実行されるという仕様であること。
そして分岐の条件に当てはまらないときはその箇所をスルーして次のスクリプトに進んでいくということ、を理解しておくとよいかと。

例:
1~20までのどれかの値になっている変数AでEDを分けたいとき
①【ジャンプ】変数Aが10以上のときはシナリオ「ED_A」へ
②【ジャンプ】変数Aが5以上のときはシナリオ「ED_B」へ
③【ジャンプ】条件なしで「シナリオED_C」へ
と上から入れていくと、
まず①の条件に当てはまっているかどうかが判定され、
変数Aが10以上じゃなかった場合は②へ行きます。
次に②の条件を見て変数Aが5未満だったら③へ行きます。
そして③は条件なしでジャンプするのでここまで進んできたときはシナリオED_Cへとなるのです。
同じジャンプなんだからどう配置しても同じでしょ?とおもいきやコンポーネントの配置位置って実はめちゃくちゃ大事というお話ですね。


●②:テキスト部分

②の部分は今回テキストにしました。楽なので。
ビルダーの【テキスト配置】というコンポーネントで文字を配置しているので、消したいときは【テキスト消去】をしないと消えません。
全部まるごとじゃなくて一つだけ消したいんだけどって人はティラノスクリプト公式タグリファレンスのptextあたりを読めばよいかと。nameをつけて管理します。
今回は
テキスト配置:trackナンバー/曲名
テキスト配置:サブ情報
テキスト配置:作曲者  って感じにそれぞれ置いてます。

 テキストを改行させたい

テキスト配置の欄を見ると1行だけしか入れられないように見えますが、
テキストの入力欄に<br>と直接打つとその後の文字は1行改行されて表示されます。なんで<br>が改行なの?って思うかもですがこれに関してはそう決められてるものなのでスルーしてください。

<br>を入れると
改行したせ という文字が01/ワンワンoneの下についてますね

今回はこんな感じです。
途中まででも1度公開するか、全チャプター出来てから出すか
悩み中です。

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