Unity1週間ゲームジャム「ためる」で小便小僧のゲームを作りました
2022年9月5日からUnityroomで開催された第23回 Unity 1週間ゲームジャム お題「ためる」に参加し、小便小僧の暴走な消防というゲームを投稿しました。小便小僧を操作して爆弾の導火線を消火しながらゴールを目指すアクションゲームです。
前回noteを書いた「ホッピング忍者さん」から今回までに実は2つゲームを作っていたのですが、その時は色々忙しくnoteやブログも書けませんでした。なので今回は久しぶりに備忘録的なものを書こうと思います。10分くらいでクリアするゲームなので、PC環境の方は是非一度プレイしていただけたら嬉しいです。
ぐるぐる回る十字キーについて
このゲームの特徴は、何と言ってもマウスで操作する十字キーです。普通の十字キーと違って、十字キー自体を回転させることが出来ます。これによって、マウスドラッグだけでキャラクターの前後左右移動と向きの回転操作ができます。
もともと「スマホの片手操作で、キャラクターの向き変更と移動を同時に出来ないかな」という思いが以前からあり、それの一つのアイデアを今回実現した形です(といってもまだタッチ入力は対応してませんが。。)。
スマホの3Dゲームだと、ゲームパッドのように、片手で移動、もう片手でカメラ操作が普通だと思います。さらに攻撃等のボタンもあって操作が結構忙しい。縦持ち片手だとそこまで複雑な操作は出来ず、カジュアルなゲーム性になりがちです。
ということで、片手で複雑な操作ができる入力方法のアイデアとして考えていたのが、今回のぐるぐる回る十字キーです。想像だけで実装したことはなかったので、今回いい機会なので作ってみました。
作ってみて、割と興奮気味に「これは結構画期的では!?」思いました。基本的には仮想スティックのように移動方向に入力を入れて、入力をセンターに入れてスッと方向を変えるとキャラの向きを変えずに横移動ができますし、入力したまま方向をぐるんと変えると、移動方向をキャラの向きごと変えることができます。割と想像した通りの操作性で、これは面白いゲームが作れそうだと思いました。※この時点で1週間のうち2日経過
お題「ためる」について
最初に入力方法だけ作ったものの、お題の「ためる」に関しては全くのノープランでした。こちらのアイデアはなかなか出てこなかったです。十字キーを作り始めたのはお題発表後だったので、作ってる最中も常に「十字キー作った後、どうやってお題に合わせようか」ということが脳裏にありました。
この入力方法を作った以上はマウス一つで完結するゲームにしないと意味がありません。WASDで移動、マウスで方向、のよくある操作で済むのに無意味に複雑な操作を要求して難易度を上げるのは本意ではありません。アクションゲームにして、何かを「ためる」となると例えば攻撃とかジャンプとかの追加のボタンが必要になるので、移動だけで済むようなテーマやモチーフはないかなと悩みました。
最初は弾は自動で発射するようにしたシューティングゲームを考えましたが、「ためる」にあった良いアイデアが思いつきませんでした。色々小粒なネタは思いついた後で、一旦は「ジョウロに手足が生えたロボットを操作して、道中にある入れ物に水をためる」というようなところまでアイデアが出ました。ですが、それからそのまま、あまり決め手となるアイデアが出ないまま時間が過ぎました。
で、風呂に入っていたら突然「あ、小便小僧だ」というアイデアが降ってきて、今回のゲームのアイデアになりました。アイデアの最後の決め手は完全に思いつき、という感じでした。
小便小僧の由来の一つとして有名なものが爆弾の導火線の火を小便で消したというエピソードです。実は調べてみると一番有力な説は別にあるのですが、爆弾の方は昔テレビで紹介されたことがあって印象に残っていました。なので、これをゲームにすることにしました。
ためる、のテーマからはそれるのですが、まあ「この小便小僧は無限に水を『ためて』ます」という風にこじつけて、ここは深く考えないことにしました。
自機の作成について。モデリング
小便小僧のアイデアが出たときは、なかなか天才的に色々辻褄があったと思ったものですが、そこからがまあ大変でした。自機の作成です。
これまでのゲームジャムではBlenderで自分でモデリングやらアニメーションやら作っていたので、今回も自機を作ろうと考えていたのですが、なにせ小便小僧です。これまでは、別に何かに似せる必要は無かったのでとてもシンプルな造形のキャラクターだったのですが、今回は実在するものなので、それなりに似せる必要があると考えました。
少なくとも子供に見える造形にしなければ違和感が出てしまいます。画像検索でいくつか小便小僧の画像を集めて、等身だったり体型とかを観察しながらモデリングしました。
そして、銅像特有の細かい造形です。スカルプトモードを使って、モデルに細かい形状を作り込んでいくのですが、なかなか似たようには作れません。オリジナルの小便小僧をみるとわかるのですが、なかなかに絶妙な表情をしています。色々試行錯誤したのですが、最終的にあの穏やかな顔は再現できず、なかなかふてぶてしい幼児という感じになってしまいました。あまり西洋っぽさは無いですね。
で、そこから、リトポロジという工程で、ポリゴン数の少ない形状を作り上げていくのですが、これもなかなか不慣れなため、時間もかかりますし、出来上がりも。わかる人が見れば不出来な部分が目立つと思います。チュートリアル動画を見ながら何度かやったことがある程度なので、伸びしろということで。
そのあと、スカルプトで作った細かい凹凸をテクスチャにベイクすることでノーマルマップというものを作ります。また凹部分の形状を陰影に変換したアンビエントオクルージョン(AO) と呼ばれる処理もテクスチャにベイクします。
これらを使うことで、のっぺりしたローポリモデルに細かい形状が再現されます。
これに金属のマテリアルでテカテカにしてやって銅像っぽい小便小僧の完成です。
で、上記の作業で2日かかりました。※その時のTwitterでは3日と書いていますが日付感覚が狂ってました。
Unityへの取り込みは雰囲気でやってます。エクスポートしたFBXファイルとテクスチャ画像をUnityに入れて、Unity上でマテリアルを作っていい感じにごにゃごにゃしました。
自機の作成。アニメーション
その後アニメーションを作成しました (Tポーズで小便を撒き散らすゲームもそれはシュールかもしれませんが)。モデリングに続きBlenderの作業です。ボーンを入れて自動で入ったウェイトに対して、微調整したり、アニメーションを作るためにIKを設定したりします。
アニメーションについては9個のモーションを作りました。静止、歩行の前後左右、走りの前後左右です。ここらへんは過去2作でもやったことなのでそこまで難しくないです。ですが、今回小便小僧のアニメーションということでこだわったポイントもいくつかあります。
まずは前後の走りモーションでの体の傾きです。普通素早く走ろうと思うと、体はその方向に傾きますが、今回は逆にしました。なんかその方が狙って撒き散らしている感じが出てコミカルな雰囲気になります。
次に横移動のモーションです。なにせ撒き散らしているので、脚をクロスさせるわけにはいきません。単なる歩きモーションを横方向にするのではなく、カニ歩きになるようにしてます。走りではクロスステップではなく横跳びのアニメーションをつけました。
また、静止のポーズもなかなか重要です。今回はオリジナルのキャラクターではなく、ひと目見て小便小僧であるとわかって欲しいので参考画像と見比べて、体の反らせ具合や手の位置、膝の曲げ具合、首の角度などを微調整しました。
そんなこんなでBlenderと格闘しながら小便小僧が完成したときには土曜の深夜で、公開時間まで24時間を切っている状態でした。ぐるぐる十字キーと組み合わせた自機の移動とパーティクルの放出ができるだけの状態だったので、完全に遅刻確定という感じでした。
この投稿で沢山いいねもらえたのは、とても開発のモチベーションになりました。
ゲームの実装について
1週間ゲームジャムは締め切り厳守といったタイプのイベントではないので、祭りに乗り遅れた若干の寂しさはありますが、気にせずゲーム作成を続けました。
今回のゲームは導火線の火を消すのが目的です。この火は攻撃こそしないものの、爆弾に向かって動く敵キャラのようなものです。今までの作品だと動くのは自機だけで、それさえ作ればあとは固定のステージを作れば良かったのですが、今回は爆弾の動きも作る必要があります。導火線の火の移動だけでなく、小便が当たったときの反応、クリア、リトライ、失敗時の処理など、今までのゲームに比べて開発規模が大きくなってしまいました。スクリプトの行数的には前作の1.5倍くらい。
あと、ProBuilderで作った導火線の見た目と、Transformの配列で作った実際の火の移動経路を一致させる作業が地味にしんどかったです。完全に単純作業なんですが、エディタ拡張のような効率化する方法とかを調べる時間を惜しんで手作業を選んでしまいました。
過去のスクリプトを使い回せる部分も多かったんですが、そのまま再利用できる作り方をしていないので、コピペして部分的な編集でやっつけてしまう部分もありました。これに関しては制作時間の短縮にはつながったと思いますがエンジニアリング的にはアンチパターンなので、いつか使いやすいように整理したいとは思っています。
今回の制作ではゲーム部分のプログラミングにUniRxを結構使いました。「導火線の火のどれかが爆弾に到達したら失敗」「導火線を全部消したらエリアクリア」みたいなロジックがシンプルに表現できたときにこれは便利だと再認識しました。他にも小便のパーティクルが火に当たるときの効果音をつけたいとき、毎秒数十回発生する出来事を「1回音を出したら0.5秒の間は出さない」みたいに処理することも、UniRxなら1行で表現できます。
レベルデザインについて
ステージ作成の話です。この操作方法を活かせるようなステージはもっと色々出来たと思ってます。今回は結構な遅刻でしたが、それでも評価期間中に提出したかったので、時間とクオリティのトレードオフの中でのベストとして現時点のものを出しました。
イメージはもっと暴走しながら撒き散らすようなステージ構成にしたかったんですが、じっくり導火線の上を歩きながらじわじわ火を消すようなプレイが最適になるような作りになってる部分があります。せっかく前後左右に動けるのに実際にはクリアには前移動だけでも十分で、むしろ「誤って横移動になって焦る」みたいなお邪魔要素になっちゃっている感じもあります。
これはぐるぐる十字キーの使いやすさの改善でなんとかなるのか、それともレベルデザイン側でプレイヤーに選択を与えるような形にできるのか、色々考えることは多いです。
また、ステージを細かいサイクルで作り直したり微調整するのが難しい作りになっていたのも、納得いくまで作り込めなかった一つの原因だと思います。これを解決するのはエンジニアリング的な技術だと思うので、そこは改善点と思います。
ステージを最後まで作るのに4日程かかりました。
演出とか
自機の作成とステージ作成で、ここらへんは後回しになってしまいました。といっても、過去作でもその傾向はありますね。
BGMについては、最初はかっこいいスピード感あふれる感じをイメージしていましたが、作っていくうちに銅像がモチーフなのでクラシックがいいかなと心変わりしました。ゲーム内の音楽は天国と地獄です。運動会で使われる音楽はどれも気持ちをいい感じに焦らせてくれるので良いですね。タイトル画面の音楽はギャップを狙って落ち着いた感じです。夜想曲第2番 変ホ長調 作品9-2というタイトルだそうです。
小便と導火線の火についてパーティクルを使ったエフェクトを作りました。これは正直改善したいクオリティ。
完成したもの
で、UIだったり色々つけて、最終的に締め切りの翌週の土曜日の深夜という1週間遅れの提出。Blenderの時間を抜いても大幅な遅刻ですね。プレイ動画を撮影して少し編集したものと一緒にTwitterで告知したら結構反応いただけて嬉しかったです。
感想
平日も休日も日中は作業が出来ないので、基本的に制作は夜の10時以降の開始でした。だいたい夢中になって深夜2時位まで続けてしまうので、アラサーの体力的にはなかなかの負担でした。完成してホッとしました。
今回は大幅な遅刻でしたが、色々やってみたいことにチャレンジできたので良かったです。(スピードはともかく)できることの幅が広がってきたのかなと思いました。せっかくなので、無理のないペースで数ヶ月で作れる程度のボリュームとクオリティのゲーム制作にチャレンジしてみたいなあと思いました。
あと、コメントとかであまり触れられることは無いのですが、自分で作ったキャラクターモデルと、アニメーションは毎度とても気に入ってます。クオリティは素人に毛が生えたかどうか程度ですが、自分で考えたゲームの仕様に合わせて1から作るので、ゲームシステムやテーマと上手くマッチしていると思います。3Dゲームは、2Dに比べて汎用的な外部アセットを使う傾向が大きいと思いますが、自分で作るとUnityの関連機能の理解が深まりますし、何より楽しいのでおすすめです。(ただし時間は融ける)
最後に
ぜひ遊んでね!