見出し画像

【unity1week】 ずっとやってみたかったことをやってみた。

この記事は、2024年12月23日より開催されたゲームジャム、 unity1week への参加報告となります。ゲームジャムへの参加はもとより、ゲーム制作自体はじめての経験でした!完成品はコチラから。


はじめまして。ウオザトです。

2024年の暮れ。大晦日が近づくなか、一年の振り返りをしていました。わるい年ではなかったと思います。いろんな出会いと、別れと、成功と、失敗があったはず。でも、何かが足りなかったんです。一年を通して、まだやっていないことがある気がして。気がして・・・。

わかったんです。今年はまだ、なにかに『没頭』してなかったなー、と。やらなきゃいけないから集中することは数あれど、自分が心からやりたいから集中する物事ってなにかあったかな。あれ、というか自分が好きなものってなんだっけ?この世に自分の心を動かすものってなにがあったっけ。

・・・ゲーム。うん、ゲームは結構好きだ。遊ぶ方はもちろん、作る方にもすごく興味がある。ん?unity1week?ゲームジャム?作るの?ゲームを?個人が??? え、やるやる!まだ今年は終わってない!前々からやりたかったし、この機に作っちゃえ!

という訳で、延々と内視鏡検査をするゲームを開発しました!!!

◼️ はじめてのUnity

さあ、ゲームを作るにあたって Unity に登録して、Unity Hubをインストールして・・・という工程はもうやったことがありました。何年も前に。Unityをいじること自体は初めてではなく、チュートリアルなんかを真似てビリヤードゲームもどきを作った経験もあります。でも、なぜかニガテ意識を持ってしまい ・・・。「すくりぷと」を作って、「げーむおぶじぇくと」に「あたっち」だぁ?そんなのちゃんと覚えてる暇なんて今はないぜ!という具合に Unity とどんどん疎遠になってしまいました。

そんな中、2023年の末にとあるインディホラーゲームの翻訳をさせてもらいました。全部がローポリで、キャラの表情が豊かで、一本の映画を見ているようなゲームで。 Manny's って言うんですけどね(めちゃくちゃおもしろいんでぜひプレイしてみてください!)。開発者様の開発譚を聞く機会があり、いろいろ聞いていくうちにまたゲーム創作欲がふつふつと湧いてきました。「ああ、一度はこういうゲームを作って遊んでみてもらいたいな。」そう思い始めてからはや一年。創作欲を燻らせたまま年を越そうとした矢先にunity1weekと出会いました。

◼️ テーマは「ない」

unityroom さんの開催するゲームジャム、unity1week。今回のお題は「ない」でした。必ずしもお題に沿っている必要はなく、多少こじつけでもいいそうで。制作・投稿期間は1週間。ゲームジャム自体を知ったのが、お題が発表されてから数日後でした。ひとまず、ゲームジャム参加にあたっていろいろと制約をならべてみます。

1. 自分は Unity 初心者(凝ったことはできないと思え)
2. 制作期間は実質4日間
3. お題は「ない」(どう解釈してもOK)

これらの縛りから、作れるゲームのアイデアを捻り出したところ、『ない』視鏡検査で検査機を腸壁に当てないよう進むゲームに辿り着きました。

これなら、
✔︎ ゲームの目的がシンプル
✔︎ 機構もシンプルで、比較的すぐに実装できるはず
✔︎ お題にも沿っている
と踏んだわけですね。

迷路を自動生成するようプログラムして、常に前進する内視鏡を操作できるようにして、壁に当たったらダメージを受けるようにして・・・。必要とあらばネットにごまんとチュートリアルがあるし、ChatGPTにも助けを求められるし。カンタンじゃん!うーんでも、ただ進むだけじゃ面白くないしシューティング要素もつけようかな。大腸菌やポリープなんかを敵にしたらおもしろそうだな。あ、内視鏡が大腸の中進むだけの画だとなにがなんだかわからないな。じゃあ、カメラ二つにして、内視鏡検査してる風の場面も作ってあげよう。お、ローポリ3Dモデルのキャラ置いたらユーモアあるんじゃない?ダメージ受けたらキャラが痛がるようにアニメーションつけて。よし、Unity Asset Store 漁ってみよう。万が一ほしいアセットがなければ Blender でモデリングすればいいし。BGMもイケイケにして、ループがない音源なら自分でつけてあげよう。イケるイケる!

わかります。わかりますよ、言いたいことは。

◼️ 現実はそんなに甘くない

ここからは開発の裏側を少し。多少覚悟はしてたつもりですが、いざ開発し始めると予想だにしないところから警告・エラーの嵐・・・。Unityはもちろん、アセット用のサイトやソフトも触り慣れてないのでもうてんやわんや。

一応、手順として
1. 内視鏡(プレイヤー)を設置して俯瞰カメラと一人称カメラを設定する
2. PlayerControllerスクリプトで常時前進&左右の操作を再現
3. ワールド内に一人称カメラを映す用の「施術室」をつくる
4. 俯瞰カメラを映す用の Canvas を設置する
5. 腸壁のタイルをモデリングする(直進と右折)
6. タイルを自動生成し、迷路を作るようプログラムする
7. 残機を設定し、腸壁にあたると減らすよう OnCollisionEnter で指示
8. 残機 == 0 の場合にゲームオーバー判定になるようプログラム
9. タイルの生成と合わせて深度(進んだ距離)を計算するよう設定
10. スタートとリザルトのシーンを用意して、その他装飾
という工程を踏みました。

そして以下が、開発中に気づいた事や疑問に思った事となります。

⬜︎ Unity Asset Storeって FREE のアセット少なくね?
あっれー・・・。無料の3Dモデルアセットとかってこんなに少ないの?いや、あるんだけど、しっくりくるのが全然ない。ケチるな、アセット製作者に敬意を払えということか。精進します。

⬜︎ UnityってBlenderモデルの Collider 作ってくれるんじゃないの・・・?
モデルをBlenderからUnityに持っていく時は何かと問題が起きるようですね。腸壁のタイルモデルを移した時に、Mesh Collider が設定できなくて苦戦しました・・・。どうも Unity の Mesh Collider 生成は、凹凸のあるモデルが苦手みたいですね。うちの腸壁、ボコボコでしたわ。にっちもさっちも行かなくなったんで、とりあえず突き出してる部分に一個ずつ Capsule Collider をはめて事なきを得ました。

⬜︎ プレハブで設定した通りに生成されないのは何故??
Collider 付きのタイルをプレハブ化して、スクリプトから自動生成させることに。ちょうどいいから右折用しかない曲がり角のタイルを回転させて左折用としてプレハブ化しちゃおっと。あれ、呼び出すと左向きにならない。右向きのままだ・・・。プレハブを Hierarchy にもってくと左向きなのに。なぜ、なぜ!迷路生成用のスクリプトで右折用のやつを回転するよう指示してとりあえず解決。

⬜︎ 他オブジェクトについてるスクリプトから変数を取得できないんだが!
こーれはいまだにわからん。できないはずないのに、エラーが出てしまいます。勉強不足ですね。

⬜︎ 無限に生成されるプレハブをどう掃除すればよいのだ
使わないタイルは Destroy してゲームが重たくならないようにと思い掃除するプログラムを書きました。最初はタイル生成と同時に後ろのタイルから消してく仕様にしたのですが、プレイヤー速度とバランスを取るのが難しい・・・。案の定、プレイヤーにタイルの消滅が追いついて亜空間に投げ出されてしまいます。ならばとプレイヤーに見えない棒(Trigger )を刺して、タイルの床を貫通するようにして、OnTriggerExit で時間差で消すように指示。最初はうまくいっていたものの、「今消そうとしてるタイル、もう消えてるよ」という旨のエラーが。腸壁と衝突した際にバウンスするようにしたのでどこかのタイミングで消えるはずのタイルに再侵入してしまうそうで。どうにもならなかったのでとりあえず try-carch 文でエラーガン無視です。

※ ここまで読んでくださったあなたへ。「こうすればよかったじゃん」とかアドバイスがあれば是非是非コメントください。どうか迷える私を救って。

◼️ え、完成したの・・・?

妥協に妥協を重ねたものの、したんですよ。完成!世に出せるくらいにはゲーム性が破綻してなくて、ちゃんと動いて操作できるやつが。スタートとリザルトがあって、BGMがなって、スコアが表示されるやつが!これまでずっと作ってみたかったものが!!

タイトルは、エンドレス内視鏡検査(英:Never Ending Colonoscopy)となりました。お忙しいところ大変恐縮ですが、お手隙の際にどうぞプレイしてみてください。

◼️ さあ、これからどうしよう

はじめてのゲーム作り、大変楽しゅうございました。unityroom にも投稿して、ブラウザゲームにもなっちゃって、感無量!子供の頃ハマった面白フラッシュ倉庫のフラッシュゲームを思い出します。うちの子は、現代の子たちにとっての面白フラッシュゲームになれるでしょうか。

でも、ウオザトはこの一作で終わるつもりはありません。趣味程度になってはしまいますが、これからも遊んでもらえるゲームを作っていきたいなという気持ちがあります。となれば、こんな腸の中を進むだけのゲームに固執してないで、さっさと次のゲームを企画するべきなんすよね。

でも、やらせてください。シューティングの実装を。これがあればもっと楽しくなると思うんです。というか、その前にいろいろ修正も必要なんですよ。ありがたいことに、unity1weekの相互評価期間中にいくつかコメントをいただいております。バグの報告・アドバイスも感謝いたします!

開催期間中にできるかはわかりませんが、後日以下の点を変更・追加しようと考えています。

  • 進路が塞がれる現象(腸詰まり)の修正

  • 壁を貫通してしまう現象の修正

  • 衝突時にプレイヤーが減速・停止・後退してしまう現象の究明

  • 難易度調節(内視鏡の太さか前進するスピード変更)

  • シューティングギミックの追加

最後になってしまいましたが、プレイしてくださったみなさま、本当にありがとうございます!自分の創作を評価してもらえることがこんなに嬉しいことだったとは!

また次のゲームでお会いしましょう。

◼️ スペシャルサンクス

⬜︎ チュートリアル等の参考資料

⬜︎ お借りした素材ならびに製作者様
タイトル/リザルトBGM「りゅうきゅう」(by かずち、DOVA-SYNDROME)
・ゲーム開始時BGM「Mad Chase!!」(by KK、DOVA-SYNDROME)
・「大腸内視鏡検査のイラスト」(by いらすとや)
・Unity Asset「Morgue Room PBR」(by Rokay 3D)
・各種効果音(by 効果音ラボ

⬜︎ きっかけをつくってくれた Manny's 開発者様
Bonesaw577さん、ありがとう!

Manny's 2 開発してるそうです。)

⬜︎ … and YOU
Yes, You! 

いいなと思ったら応援しよう!