【プロジェクト:Neith】導入シーン作成完了!〜みんなで作るゲーム制作【4/19(日)3日目】
■導入シーンは無事作成完了!
■育成パートのベース画面(UI)作成準備

■募集中のアイディア
・「古代エジプト編」で発生しそうなイベントを考えてください!
(例:ピラミッドでの修行、ナイル川でのハプニングなど)
(期限:なし。皆さんの自由な発想をお待ちしています!)
どうも、「まる。」です!😏
昨日は2時間という限られた時間の中で、
なんとかOPパートを形にしたネイト。
でも、本格的なゲーム制作はここからが本番です!
今日からはいよいよ、ゲームの核となる「育成パート」のメニュー画面(UI)制作に挑みます。
果たしてネイトはどこまで作り上げることができるのか……?
波乱と苦戦(?)の第3日目、スタートです!
二人の茶番
🎧 作業用BGM
アンゴラたちの踊り/作(編)曲 : まんぼう二等兵
• DOVA-SYNDROME公式 作曲者 まんぼう二等兵

「よお、おまえら!
オレだよ、ポマイラ様だ!
みんな、ちゃんと手洗い・うがいはしてるか?」

「ふんふんふふん♪(ご機嫌な鼻歌)」

「お、どうした、ネイト? 今日は随分とご機嫌じゃねぇか。」

「あ、分かっちゃう?
実はね、最近フォロワーさんから教えてもらった
Claude Code Game Studiosっていうツールがあって……。」

「なんと! UE(アンリアルエンジン)にも対応してたのよ!」

「お、おう……? で、そんなに凄いのか、コレ?」

「凄いなんてレベルじゃないわ!
ゲーム開発のシステム実装、8割くらいはプロンプトを打ち込むだけで自動的に作れそうだし、
何より長時間動かしっぱなしにしてもOKなのよ!」

「マジかよ!!
じゃあコイツに命令渡して、あとは寝て待つだけで良いのか!?
神じゃねぇか!!」

「まぁ……とは言え、
私は自分でもちゃんとシステムを把握しておかないと気が済まない性格だから…
まずは自分で作って、それをブラッシュアップする形で使おうと思ってるの。
とりあえず、UEの方は一通りのシステム構築が終わったら試してみるつもりよ!」

「……ちょっと待てよ?
てことは、今ネイトが使ってるUnityにも対応してんじゃねぇか!?
おい、コイツに全部任せちまえよ!」

「もちろん、Unityにも対応してるわ!
ただ、今回は『無料で誰でもゲーム開発できる』ところを皆さんにお届けしたいから、
今は敢えて封印させてもらうわね。
Claude CodeはAPIを使う分、どうしてもお金がかかってしまうし。
……ただ、どうしても行き詰まった時は、
使い方ごと解説しながらパパッと作ってもらうつもりよ!」

「最終兵器ってわけか……。
まぁ、バックにClaude Code Game Studios様が控えてると思えば、
安心感が段違いだな!」
■参考動画(実装したい方はぜひ)
昨日の作業の微修正17:00-17:10

「んで、今日は何から始めるんだ?」

「そうね。
最初の1時間くらいは、ざっくりルーティンを決めてきたのよ。」

「作戦があるんだな。
聞かせてくれよ。」

「まず最初の30分は、前回やり残した部分を片付けるわ。」

「なるほど。二日に分けて完成度を高めていくわけか。
で、やり残した部分ってのは何だ?」

「大きく分けて二つね。
SE(効果音)の追加と、シーンチェンジのマクロ化よ。
まずはSEの方からパパッと片付けちゃうわね!」
効果音の設定(17:00-17:05)

「まずは素材探しよ。
ただ、闇雲に探すと今日の作業がそれだけで終わっちゃうから、
私がイチオシするサイトの中から選んでいくわ。」
■効果音ラボ

「おい、なんだここ!
めちゃくちゃ種類が多いじゃねぇか!
なぁ、これ本当に全部無料なのか!?」

「えぇ、もちろん!
商用利用も可能で、クレジット表記も不要だから、
掲載し忘れるリスクもゼロよ!
大抵の素材はここで揃っちゃうの!」

「そいつは太っ腹だな!
しかも、Youtubeとかで聞いたことある素材ばっかりじゃねぇか。
多くの人が愛用してるだけあるな!」


「あとは、いつものようにUtageのExcelに登録して……これで準備完了よ!」
マクロでシーンチェンジ(17:05-17:10)

「なぁ、マクロって自動で動くプログラムだろ? なんか難しそうだぜ。」

「確かに、マクロって聞くとExcelのVBAみたいなイメージで身構えちゃうわよね。
でも、仕組みさえ理解しちゃえば本当に便利なものだし……
少なくとも、Utage3のマクロはとってもシンプルよ?」



「え?たったこれだけで良いのか?」

「そうよ?」

「あと、気になったんだけど……なんでシーンチェンジはマクロでやるんだ?」

「いい質問ね。
シーンチェンジのたびにアイキャッチを流そうと思ってるんだけど、
それをその都度個別に書いていったら、
後でファイルを差し替えたくなった時に全部修正しなきゃいけなくなるの。
でも、マクロにまとめておけば、
修正するのはマクロの中だけで済むのよ。」

「なるほど! つまり……
部屋ごとに水のペットボトルを置くんじゃなくて、
蛇口を一本用意しておけば、水源を変えるだけで全部まとめて解決できるってことか!
頭いいぜ!」

「ふふ、ありがと。じゃあ、早速テストするわね。
マクロが起動したら【マクロ】場面転換って表示されるはずだから、
それが出ればOKよ!」


「おっ、しっかり表示されてるな!」

「あとは、アイキャッチの動画素材が完成したらこのマクロを編集するだけで、シーンチェンジ機能は完成よ。」
■位置調整

「そうそう、昨日の動画を見て気になったんだけど……
キャラ同士の間隔が少し近すぎるから、パパッと調整しちゃうわね。
本当は3人同時表示も想定した専用レイヤーまで作っておきたいけど……
それはまた今度にするわ。」

シーンジャンプ17:10-17:20

「さて、残りの50分はメインストーリーの新しいシーン作りに専念するわ。
その前に、今どこまで出来ているかをざっとおさらいしておきましょう。」


「これを見た感じ、ライバルの登場シーンまでは出来てるんだな。
てことは、次はいよいよ育成パートのシステム説明シーンに入るのか。」

「そうね。
これらは全部導入シーンだけど、
システム的にはあえて別シーンとして扱うわ。」

「ん?別に一個にまとめても良いんじゃねぇか?」

「昨日も話したように、このゲームは周回しても楽しめる作りにしたいの。
でも、周回するたびにOPを毎回見させられるのは…
ちょっと辛いでしょ?
だから、あえてシーンを細かく区切るわ。」

「なるほど、二周目以降の人はOPをすっ飛ばして、
いきなりチュートリアルから始められるってことか。」

「それと、シーンを分けておくとデバッグもしやすいのよ。
Utage3ってセーブ&ロードをすると、
そのシナリオの情報がそのまま引き継がれる仕様になっているの。
だからテストのたびに毎回そのシーンまで追いかけなきゃいけなくなるんだけど……
シーンを細かく区切っておけば、
確認したい箇所にピンポイントで飛べるから楽になるのよ。」

「なるほどな。で、そのシーンへの飛ばし方はどうやるんだ?」

「…」

「……ネイト?」

「さぁ、張り切って調べるわよ!!」

「……忘れてたんだな。頼むぜ、ネイト。」
■ 参考:シナリオジャンプ(自動分岐)

「10分経過か。
まぁまぁ、時間が掛かったな。」

「そうね。でもこれでシーンジャンプはバッチリよ!
早速テストしてみるわ。遷移先に専用のメッセージが表示されるようにしたから、それが出ればOKよ。」


「なぁ、なんでジャンプの命令を赤い文字にしてるんだ?」

「これはデバッグ用の命令だから、最終的には消さなきゃいけないの。
消し忘れないように、色を付けて管理しているのよ。」

ストーリー作成(17:20-18:00)

「さぁ、あと40分で1時間だわ。
この時間はメインストーリーの執筆に専念するわ!」

「説明パートの文章か!
で、どんな感じで説明を書くんだ?」

「今回は説明文は書かないわよ?」

「え?説明パートなのにか?」

「システムって、開発の途中で仕様が変わることなんてしょっちゅうあるの。
そのたびに書き直すのは大変でしょう?
だから今回は、『説明を受けた体』あるいは
『チュートリアルをスキップした体』の文章を書いていくわ。」

「なるほどな。
チュートリアル自体は、開発の最後に作るつもりってわけか。」
■今回作成した文章
(ドアがバタンと閉まる音)
「……ふぅ。何とか間に合ってよかったわ」
「まぁ、受付の嬢ちゃんには思いっきり呆れた目で見られたけどな」
案内された控室。 ネイトはふかふかのソファを見つけると、安堵の息を吐きながら深く腰を掛けた。
「それで、ここが俺様とネイトの拠点ってことか! なかなか良い部屋じゃねぇか!」
使い魔のポマイラが、珍しいおもちゃを見つけた子供のように、部屋の中をキョロキョロとせわしなく飛び回る。
「あ、コラ! あまり勝手に色んなところを触らないの!」
(ガサゴソと鞄から資料を取り出し、テーブルに広げる音)
ネイトは渡された大会の案内書に、真剣な眼差しを落とす。
「……とにかく、今のうちにWCSの概要とルールを確認しておかないとね」
※選択肢表示 【 チュートリアル(WCSの基本ルール)を確認しますか? 】 ⇒ はい ⇒ いいえ
(※チュートリアル後の進行)
「……なるほど、システムとしてはこんな所かしら。
まずは、一緒に行動する『友達(仲間)』を集めるのが重要みたいね」
「友達と一緒に特訓すれば絆が深まって、練習の効率が大きく上がるシステムみたい!」
「おうおう! そりゃあ精が出ますな! それで? WCS自体のルールはどうなってんだ?」
ポマイラが空中から案内書を覗き込む。
「ええっと……『3つの世界を友達と共に生き抜き、それぞれの世界線の最終日に課される模擬ステラバトルに勝利すること』」
「そして、優秀な成績を収めた状態で最終日を迎えられれば、現代の世界で行われるWCS本戦に出場できる……そういうシステムみたいね」
「なるほどなぁ。 それで? オレたちの最初の試験会場はどこなんだ?」
ポマイラが、さらにぐいっと身を乗り出す。
ネイトは資料の次のページをめくり、そこに大きく書かれた文字を読み上げた。
「……『古代エジプト』」
二人の間に、しんと重たい沈黙が落ちる。
数秒後――ポマイラが空中で盛大にずっこけた。
「えっ、エジプトだぁ!? やだぜ、俺様は暑いのが大嫌いなんだよ!!」
「仕方ないでしょ。大会のルールなんだから」
頭を抱えてジタバタと暴れるポマイラを見て、ネイトはふふっと自信ありげに微笑んだ。
「それに……エジプトは、私にとっては凄く好都合な場所なのよ。
元々、私はエジプトの神話をもとに生まれたアルカステラなんだから」
「おおっ? なるほど……地の利があるってことか!
てことは、もしかしてエジプトでネイトが特訓すれば、他の場所より特訓の効率が大きく上がる可能性があるってことだな!」
「えぇ、その通りよ!
この最初のセクションで可能な限り特訓して、ステラバトルに備えるわよ! ポマイラ!」
「合点承知だぜ! ネイト! サポートはこの俺様に任せな!」

「時間は……18時ぴったりね。
これで1時間経過だわ。
もう少し早く書けるかと思ったけど、ちょっと沼っちゃったわ。」

「とはいえ、ペース的には予定通りだろ?
気にすんな!
……なるほど、ここまでの一連の流れが、
最初の1時間のルーティンってわけか。」
Utageに反映(18:00-18:17)

「さて、折角だからこのシーンもシナリオに組み込んじゃいましょう!」

「いよいよか。
素材とかはあるのか?」

「まだよ。
だから、生成AIに素材を作成してもらいつつ手を動かしていくわ。」

「あと、今回はチュートリアルを見るかどうかの確認に選択肢を出す必要があるから、
それも調べながら実装していくわね。」
■ 参考:選択肢


「……ネイト、残念なお知らせだ。」


「あー……コマンド名を『Selection』にしないといけないのに、『Selction』になってたわね……。
気づくのに5分も溶かしちゃったわ。」
■テスト動画

「おっ、上手く行ったな!」

「……うーん。」

「なんだ?何か気になるのか?」

「……よし。ごめん、もうちょっとだけ時間を使うわね?」
■テキストの色

「また、ドキュメントを読み漁ってるのか……?」

「うん、ちょっとね。……よし、これで多分大丈夫!」

■導入シーン(通し)

「おっ! 文字が赤く表示されてるぞ!」

「うん! これで注釈にしたい部分を強調できるから、
ぐっと読みやすくなったと思うわ。
あとは言葉のテンポも整えて……一旦、これで導入シーンは完成ね!」
UI設計(18:17-18:45)

「さて、これで導入シーンは出来たが、これからは何をするんだ?」

「ここからは、育成パートのメニュー画面の制作に時間を使っていくわ。」

「いよいよか……! これもUtageで作るのか?」

「最初はそのつもりだったんだけど……
今回はUIの見た目部分は自分で作って、
データ管理やセーブ機能だけUtageに任せる設計にするわ。」

「一から自分でUIをデザインするのか…そうするメリットはあるのか?」

「大きいのは拡張性の違いね。
Utageに全部任せると、ボタンやメニューのデザインはUtageで設定したものしか使えないの。
でも、UI部分を自分で作れば、体力ゲージを追加したり、
ボタンのデザインを自由に変えたり……思い通りの画面が作れるのよ。
データやイベントの処理はUtageに頼りつつ、
その見た目の窓口だけ自分でデザインする……
そんな『いいとこどり』の作戦ね!」

「なるほどな! それで、メニューにはどんな項目を入れるんだ?」

「ざっくり、こんな感じを考えてるわ。」
📋 メニュー画面の構成(案)
【画面上部:パラメーター】
・元気(現在の体力) ・やる気(練習効率) ・残りターン数 ・現在のセクション/ターン数
【画面下部:行動メニュー】
・特訓 ・おさんぽ ・お手伝い(金策) ・ショップ(アイテム) ・ステータス ・セーブ/ロード

「細かいレイアウトは他のゲームを参考にしながら決めるとして……
まずは手を動かすわ!」
ーーー10分後。

「……なぁ、ネイト。さっきから困ってそうだけど大丈夫か?」

「……背景用の画像がどうしてもスプライトに変換できないの。」

「スプ……なんだぁそりゃ?」

「少し説明するわね。
Unityで画像を扱う時、大きく2種類あるの。
スプライトはゲームの世界の中に置かれるオブジェクト用の画像で、
ImageはUI(画面)に直接表示させる用の画像よ。
今やろうとしているのは、背景をUI画面上に表示させること。
そのためには、
背景の画像をスプライトに変換してからImageに設定してあげる必要があるの。」

「つまり、背景の素材をUI用の形式に作り直してから貼り付けようとしてるわけか。
で、何が上手くいかないんだ?」

「変換しようとするたびに
『画像ファイルとメタ情報ファイルの作成時刻が一致しない』
とエラーが出て、弾かれてしまうの。」

「メタ情報?」

「Unityは画像ファイルを読み込む時に、
『この画像はいつ作られたか』という情報を記録したメタファイルを自動で生成するの。
このメタファイルと画像本体の時刻情報がズレていると、
Unityが『これは別物では?』と混乱してしまうわ。
対処法は、画像を再インポートするか、
メタファイルを削除してUnityに作り直してもらうかのどちらかのはずなんだけど……」

「なんだよ!
方法があるんじゃねぇか!
さっさとやっちまおうぜ!」

「やってるんだけど、それでも上手くいかないの。
ClaudeさんもGemini先生もお手上げみたいで……
さてどうしたものかしら。」
ーーー5分後

「……うん、何となく原因が見えてきたわ。」

「おっ、何とかなりそうか?」

「どうやら、Utageが画像ファイルの管理フォルダを監視していて、
ファイルが更新されるたびに独自のメタ情報を自動生成しているみたいなの。
つまり、私が画像をインポートした後にUtageが処理を走らせて……
その分だけメタ情報の時刻がズレてしまう。これが原因だったのよ。」

「うーん……
つまり、Unityが作ったメタ情報をUtageが後から上書きしちゃってるって感じか?」

「そのイメージで合ってるわ。
だから、Utageが監視していない別のフォルダに画像をコピーしてからスプライトに変換すれば、干渉されずに済むはずよ。」


「やっと出来たわ!」

「お見事だぜ、ネイト! ……ただ、もうあまり時間がないぞ?」
Text用のフォントを準備する(18:45-19:00)

「とりあえず最低限のレイアウトは出来たけど、あまり時間が残ってないわね……。
仕方ないから、明日のための仕込みだけ済ませておくわ。」

「なかなか良い画面じゃないか! で、明日の仕込みってなんだ?」

「UIにテキストを表示させるとき、UnityではTextMeshProというシステムを使うの。
そのTextMeshProが読めるように、フォントファイルを事前に準備しておくわ。」

「フォントか!確かに大事だな。 何のフォントを使うんだ?」

「NotoSansJPというGoogleが提供しているフリーの日本語フォントを使うわ。
収録している文字数がとても多いから、表示できない文字が出にくくて安心して使えるの。」

「ただ、フォントファイルをダウンロードしてきただけでは使えないの。
TextMeshPro専用のFontAssetという形式に変換してあげる必要があるのよ。
変換方法には自動(動的)と手動(静的)の2種類あるんだけど……
自動の方が上手くいかなかったから、Gemini先生に聞きながら手動でやってみるわ。」
###
🔧 TextMeshPro用 FontAssetの作り方
Projectウィンドウで使いたいフォントファイル(.ttf / .otf)を選択する
メニューから Window → TextMeshPro → Font Asset Creator を開く
以下の項目を設定する
・Source Font File
使いたいフォントファイル
・Sampling Point Size
40〜90(用途に応じて)
・Atlas Resolution(語彙数)
512×512 または 1024×1024
・Character Set
Japanese または Custom Range
###



「よし! 19時ぴったりね。これで明日の仕込みもバッチリよ!」

「お疲れ様だぜ、ネイト!!!」
力を貸して、みんな! 古代エジプトで何が起きる……? イベントアイディア募集中!

「最後に、みんなのアイディアを貸して欲しいの!」

「アイディア出しか!
てことは、メッセージボードを使うんだな。
それで、何を募集するんだ?」

「今、古代エジプトのパートを作っているじゃない?
そこで……エジプトで起きそうなイベントを考えて欲しいのよ!」

「これまた、なかなか難しそうなお題だな……。
例えば、どんなのが欲しいんだ?」

「自由に想像してもらって構わないわ!
たとえば……
🏜️ オアシスを求めて砂漠を探索する
🦁 スフィンクスとクイズ対決をする
🔱 ピラミッドの中で試練を受ける
……みたいな感じで、どんな発想でも大歓迎よ!」

「……だ、そうだぜ、みんな!
何かイケてるアイディアを思いついたら、
下のRunPenを押して書いてくれよな!
みんなのイカしたアイディアを待ってるぜ……!」
最後
かくして、激闘の開発3日目も幕を閉じた。
導入シーンの完成、マクロ化、そして手強いバグの自力解決……。
決して平坦ではなかったこの一日も、
ネイトは己の知恵と粘り強さで乗り越えてみせた。
そしてまた一つ、世界を編み上げるものとして、
彼女は確かに成長した。
さて、次に待ち受けるのはいよいよゲームのメインシステム
——育成画面の本格的な制作だ。
バグか、仕様の壁か、それとも時間との戦いか。
どんな受難が待ち受けるとしても……
ネイトとポマイラの挑戦は、まだまだ続く。
次回も、乞うご期待!
#プロジェクトNeith #HorizonNotes #ゲーム制作 #個人開発 #Unity #開発日記 #読者参加型 #毎日note
いいなと思ったら応援しよう!
よろしければ応援お願いします!
いただいたチップはクリエイターとしてのゲーム開発に使わせていただきます!
※チップと共にやって欲しい事があったら言ってください!
可能な範囲であれば頑張ります