見出し画像

ゲーム制作記 2024/2月①自作のCGモード

毎度のことではありますが、
この記事はゲーム開発知識皆無のティラノビルダー初心者が
自分用につけている備忘録です。
今回も本当にビルダーの基礎の基礎の基礎みたいな内容です。
書くほど需要があるのか?といわれたら多分無い

今月は
・スチルを見れる機能のひな型作り(CGモード)
・本編の最序盤のopくらいまで
形にしてました
長くなったので
この記事では自作のCG鑑賞モードについての事について残しておきます
それ以外は②のほうで触れます

このnoteの内容はビルダーのコンポーネントだけ
つまりティラノスクリプトでの記述ほぼ無しでやる方法です。
ご り 押 し の 極 み


ゲームの基本システム

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


今回使った機能関連

■自作のCG観賞モード作る

とは言いましたが
ティラノビルダーには、「CGモード」が作れる機能が最初から付いているので、わざわざ自分で1から作る必要ないんです。
詳しくはこちら

とか、その他有志の方がすでにまとめている記事などいろいろありますので調べていただければ。

今回はあえてそれを使わず自分でやったのでその記録です。
演出などの都合上、結局は自分で弄りまわさないといけないので、自作の方が構成の中身シンプルになるぶん扱いやすいと思いまして。

やっていることは
この記事の中https://note.com/nonossano/n/nd7f2bb4e8010

にあることとほぼ同じにすればいいかなって思ってます。

ビルダーのエディット画面がとんでもなく見にくい感じになりますので、
スクリプトが多少できるのならifとかでいいかと。…私はそうします。
(というか不具合とか起きなきゃビルダーのCG作成機能で良いのです)


CGモード作りたいって思うくらいまで来た方なら基本的な画面の組み方はわかっているかと思うので、CGが解放されて表示される部分だけ。
自作ゲーム:お料理革命C.C.Cのレシピページが基本この作りになってます(ダイマ)

①CG解放する用の「システム変数」を用意する

システム変数のおさらい(システム変数って何かわからない人向け)

1回通過したら進行中のセーブデータを消しても通った証としてずっと残っててほしい物にはシステム変数って覚えてもらえればよいかと。
・そのCGを見るイベントまでいかないとその絵が解放されないようにしたい
・一度EDを見てからおまけのページでCGモードが見られるようにしたい
・特定のエピソード区間まで進んだらその分だけ公開させたい
・一度見たチュートリアルや説明を2周目以降スキップするか選択させたい
これらは全部「システム変数」で管理できます

実績機能やEDコンプで真ルートへ・・みたいなのもシステム変数です。

・まずはCGを解放するためのスイッチ(システム変数)を作ります。
ビルダーで変数を追加する際、
値の下あたりに「システム変数」ってチェックがあると思うのですがそれにチェックいれるだけ。
システム変数は電源でいうオンとオフで使うことが主のため最初にやることは「代入」のみで通常の変数とは使い勝手が違います。初期値を指定できなくなるのもそのためです。
要するに〈変数設定〉で代入して初めて機能するって感じかなと。
何の文字を代入してオンにするかは後の工程で自分の自由に決められます。
私はonとかtrueって文字を代入してたりします。

※変数名の注意

変数の名前は自分が一目でわかるものならなんでもいいのですが、
・変数名の最初の文字に数字をいれない(変数扱いにならなくなる)

無難にcg1とかcg_homeとかにすればいいんじゃないかなと。
CGモード作成機能使用時と違いビルダーがシステム変数とCG画像を直接結び付けてくれるわけではないので
決めた本人がどれがなんの変数だったのかわからなくなると…大変。

作るシステム変数の数は
①見れるCGの分だけ用意するのでもいいし
②チャプター毎に解放ならその区切り分だけ
③ED後に初めてCGモード部屋解放ならそのEDをみたという判定だけでいい 
ので必要な分どうぞ。

①の場合はそのCGが初めてプレイヤーが見るであろうイベントの中に
〈変数設定〉をいれて自分できめた変数名に値を代入すればいいです。
変数は基本的にプレイヤーには見えない裏の処理なので本当にいれるだけ。
②の場合ならそのチャプターが終わって画面が切り替わるまでの間にとか。
同一のシステム変数を条件にすることで複数のCGを同時に解放することもできます。
③の場合はEDの演出になっているときとかにオンにしておき、
そのあとタイトル画面に戻るとCGモードへのボタンが追加されるようにするとかでも

補足:システム変数がオンのときだけ表示されるボタンの作り方

〈例:ゲームクリア後、タイトル画面に「CGモード」ボタンを追加する〉

これとか
ググるとnote内とかからも解説が出てくるので参考に


②CGモード用のシナリオにCG見るためのボタンを配置する

やっと本題ですね。
上のnote(https://note.com/nonossano/n/nd7f2bb4e8010)内でも触れている内容ですが、再度より詳しく
ページの大まかな構成は
1:背景や戻るボタンなどのCG部分以外の組み立て
2:該当のCGが解放されているかをチェックするためのラベル+ジャンプ
3:CGを眺める機能 
となってます

1:まずは画面内にある物を表示させる

 ・画像ボタンでページ切り替えをするなら〈改ページ〉
 ・〈ティラノスクリプト〉:[hidemenubutton]メニューボタン非表示
  (スクリプトつかってるじゃんね)
 ・背景
 ・CGページ移動用の〈画像ボタン〉:ジャンプ先は次のCGページの頭
 ・CGモードから元の画面に戻る用の〈画像ボタン〉:

※元の画面に戻る用の画像ボタンのジャンプ先をコールリターンにしたいときは
同じシナリオ内に[コールリターン]だけを配置したリターン用のラベルを用意して、そのラベルに飛ぶと画像ボタンからでもリターン可能です。
リターン先でも改ページ忘れずに。

あたりをまず入れたうえで、
その下に
 ・〈ジャンプ〉:【ラベル1】へを置き
 
・その下に〈ゲーム停止〉にします。
 (この段階で不具合起きた際に止まるので安心のため+一区切りの目印)


2:そのCGに対応している変数を通ったかどうかの画像表示チェック

〈ゲーム停止〉をいれたらその下から

【ラベル1】システム変数Aがオンかどうかを判断するラベル
 →〈ジャンプ〉条件:システム変数Aがオンと同じとき【ラベル2】へ
 →〈ジャンプ〉条件:システム変数Aがオンと異なるとき【ラベル3】へ

【ラベル2】:システム変数Aがオンのとき画像ボタンを表示するラベル
 →〈画像ボタン〉サムネイルの画像:ジャンプ先は【CG1の表示ラベル】へ
 →〈ジャンプ〉:【ラベル4】へ

③【ラベル3】:システム変数Aが未回収のときに出す未開放画像のラベル
 →〈イメージ画像〉:未開放用の画像
 →〈ジャンプ〉:【ラベル4】へ
 ※未開放時の画像が要らない場合はこのラベル自体要らなくなります。
  その場合①のときに【ラベル3】ではなく【ラベル4】へ飛びます

【ラベル4】:システム変数Bがオンかどうかを判断するラベル
 →〈ジャンプ〉条件:システム変数Bがオンと同じとき【ラベル5】へ
 →〈ジャンプ〉条件:システム変数Bがオンと異なるとき【ラベル6】へ

と同じようにその1ページ内に表示するCG分追加していき、
その終わりには〈ゲーム停止〉をします。
とめないとその下へノンストップで走り抜けていくので。
もし画像表示の挙動が不安なら各画像5~10ミリ秒くらい余裕もたせると詰まりを緩和できるかなと。(その分若干ちらつきますが)
※チャプター毎に解放にしたい場合も上の形とほぼ同じです。
 同一のシステム変数で複数のCGが解放されるよう順々に組んでいくだけ。


3:画像ボタン押したらCGが表示されるためのラベル

ここから下は
上の項目で②の時に 

【ラベル2】:システム変数Aがオンのとき画像ボタンを表示するラベル
 →〈画像ボタン〉サムネイルの画像:ジャンプ先は【CG1の表示ラベル】
 →〈ジャンプ〉:【ラベル4】へ

とある
【CG1の表示】というラベルの部分についての記述です

※画像ボタンで使用する画像は、
背景やイメージ画像とは別のファイルの中となってます。
なので画像ボタンで使いたい画像は〈画像ボタン〉の追加ページから別途に追加することになります。
そこで背景で使用している画像と同じ物をそのまま追加するとでかいデータが2重で入ることになり動作に影響でがちなのでCGのサムネイル画像を画像ボタンのサイズ用に調整した方が使いやすかったりもします。

【CG1の表示ラベル】今の画面を消してCGを拡大で見るためのラベル
 →〈改ページ〉:画像ボタンを使用する際は移動先に必ずまず置く
 →〈イメージ消去〉:イメージ画像を置いているなら
 →〈背景イメージ〉でそこのCGを表示する
 →〈クリック待ち〉
 →差分を連続で見せたいときは〈背景イメージ〉で差分画像に変える
 →〈クリック待ち〉
 →〈ジャンプ〉:そのCGページの一番頭から CG拡大モード終わり
 →〈ゲーム停止〉:不具合に備えたストッパー

因みにこの方法だとお料理革命のレシピページのように
レシピページから指定の料理をクリックすると詳細ページに飛ぶ
→メッセージウィンドウ表示して解説を出す
→ウィンドウを閉じてレシピページにジャンプで戻る。
ということもできたりします。
ビルダーのCGモード作成で作られたシナリオであっても自分で調整できたりしますので構成の参考になればうれしいです。

あとはこれを1ページ内にあるCG分だけそれぞれ用意します。

実際に作るとたった1ページ分せいぜい4~8種のCGだけでも
ものすごいラベルの量になります。ビルダーの画面だとラベルとジャンプのピンクピンクで視認性終わってるくらいの一面ピンク。

②で説明しているラベル+ジャンプの実際のビルダー画面

こんな状態になるのでジャンプ先の指定間違いやシステム変数の値違いなどが必ず起きます。
CG用のシナリオは
cg_1  cg_2  cg_3のように各1ページ毎に分けて作った方がいいかもです。
もしくはCGをアップにして眺める部分だけ別シナリオにして
CGが並んでいるシナリオと双方をジャンプで行き来するのでもいいのかも
(1つのシナリオに沢山詰め込みすぎると、最悪の場合公開時にブラウザやスマホがフリーズします)


③CGのシステム変数をオンにする

CGモードのシステム作りをした後は
本編でいつ変数をオンにするのかという話になります、がいつでも良いです。
作りたい形によって様々だと思うのでシステム変数の代入のことだけ

普通のゲーム変数と同じように
〈変数設定〉でシステム変数名と値いれて代入すれば良いです
代入には数の値だけでなく文字列も使えます
ゲーム変数(変数で基本的に使われる方。セーブデータ毎に記録されている変数)と用途によって組み合わせたり使い分けたりしていくとよいかと。
というのも・・・


④デバッグなどで最初からやり直すとき

通常の変数(ゲーム変数)ならビルダーのここからプレビューするたびにリセットされていますが、
システム変数はたとえプレビュー時の操作でも1度オンになるとそのままになります。
リセットされないということは、プレビューでいざデバッグ!!ってときしょっぱなから全部CG開いてて困るってことになりますね。

ビルダー画面の左上にある「プロジェクト」→「ゲームコンフィグ」→「メニュー」→「セーブデータ」→「セーブデータを初期化する」で
プレビュー時のシステム変数のデータもみんな消えた状態になります

説明にもありますが、セーブスロット数を変えた際もこれで一度リセットしてから有効になります

このセーブクリアは・・システム変数だけではなくて
既読管理もクリアされるので既読がすべて未読状態になる
プレビュー時に行ったゲームのセーブデータも全部消える
文字送りの速さや音量などのコンフィグ設定も
全てまっさらな状態からの初期スタートとなります
つまりクリア後にCGモードが表示される仕様にしているとまた最初からやり直す羽目に?
はならず、システム変数がオンになればいいだけなのでその箇所までプレビューで再生すればいいです。
というかCGモードの表示中(メニューボタン非表示とか背景とかいれてるとき)にしれっとテスト用でオンにしてても良いです。
ただし確認が済んだらすぐ変数設定でオンにしているのを必ず消すこと。
全部がオン、全部がオフの状態を確かめて終わりではなく
オンとオフ交互に表示させてみるとかいろんなパターンをためす
と不具合が発見しやすいです
ジャンプ先間違えてるとか、オンとオフ逆になってたり途中から画像表示されなくなってるとかあるんです。実際にやってるやつがここに1人います。

なのでCG周り及びシステム変数をいじるときはプレビューのデータが何もないときにした方がやりやすいですね。


以上となります
初めてCGモードを作るなら多くてもCGは10種以内くらいのほうが並べやすいし変数の管理しやすいかと。

これだけの手間を考えるとスクリプトでやった方が断然早いしシンプルなのは言うまでもなく・・・
この膨大なラベルとジャンプの数が去年の夏ごろの自分の限界でした

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