見出し画像

開発記録:unity1week 「1ボタン」 ナンバーバレット

2023/9/18~24のUnity 1週間ゲームジャム(unity1week、お題:「1ボタン」)に参加した四次元ベクトルです。

ゲームはこちらからプレイできます。

前回の制作記録・振り返り記事はこちら

今回の事前準備や目標はこちら


「ナンバーバレット」について

マウスカーソルに合わせてプレイヤーキャラクターが動き、左クリック(1つのボタン)で数字を発射して敵を倒す2Dシューティングゲームです。

数字(4)を発射中(画面中央やや左)

数字の発射には条件があり、フィールド上のアイテム(+1など)を取って攻撃力を得ている必要があります。

練習(チュートリアル)・初級・上級の3つのダンジョンはいずれも3ステージ構成となっており、ステージ内のすべての敵を倒すと次のステージに進む仕様となっています。

ダンジョン選択画面

運要素の大きかった前回「ふりかけダイス」と異なり、ランダム性皆無最速のルートを自分で見つけ出すものとなっています。
ゲームオーバーもありませんので、楽しく気軽にプレイできると思います。

今回のゲームは、次の日程で開発しました。

開発記録

事前準備

今回に向けて以下のサイトなどからドット絵などの素材を集め、

フィールド上を歩き回って数字を集めるゲームを作ろうと考えていました。
この案は十字キーでプレイヤーを操作し、敵にぶつかると集めた数字の分ダメージを与えるというものでした。

1日目(9/18 月)

お題が操作方法に関する「1ボタン」ということで難しく考えてしまいましたが、過去の自作品10作のうち「貯メイズ」(ためる)以外の9作は基本操作をマウスの左ボタンのみで完結させていた(今回のお題を満たす)ので、意外と自由にゲームを作れそうだと感じました。
お題と、以前考えた上記のアイデアを結び付け、マウス左ボタンだけで遊べるようゲーム内容を以下の通り変更しました。

  1. 十字キー移動

    • →マウスカーソルの移動に変更

  2. 敵にぶつかってダメージを与える

    • 0ボタン(ボタン入力不要)になってしまう

    • 左クリックで数字を発射し、それが敵に当たったらダメージを与えるシューティングゲームに変更

今回は、パズルゲーム中心に作ってきた私として初めてのジャンル(シューティングアクション)&絵作り(ドット絵)で行くことになりました。
キャラクターを直接操作するゲーム内容も今回が初です。

カーソルを追従するプレイヤーの移動システム(今回に向けて自作した2Dキャラクターコントローラーの改造)を作り、タイルマップ(こちらも私がunity1weekで使ったのは初)による地面も作成しました。
以下のアセットで複雑なタイルマップを簡単に作れるようにしました。

2Dでどうしても奥行き表現を与えたかったので、以下の記事を参考に設定をしました。

プレイヤーが敵を攻撃し、プレイヤーが敵に当たると攻撃力が半減する処理も実装しました。

その後、フィールド上のアイテムで攻撃力(加算・乗算)やプレイヤーの移動速度を上げられるようにし、効果音も追加しました。

2日目(9/19 火)

UIでステージ上にいる敵の数や現在のプレイ時間を表示するようにしました。
タイトル→ダンジョン(複数ステージ)→結果画面の流れもできました。

3日目(9/20 水)

プレイ方法を理解するためのチュートリアルダンジョンを完成させ、カメラの範囲を2倍に広げ、BGMも付けました。

4日目(9/21 木)

弾(敵と同様、触れるとプレイヤーの攻撃力が半減する)を発射するボスステージ用の敵を作り、初級ダンジョン(3ステージ)を作りました。

カメラをプレイヤー追従から固定にしてステージのサイズも画面に収まるようにし、画面酔いを感じなくしました。

その後、上級ダンジョン向けにプレイヤーを追いかける敵も作りました。

5日目(9/22 金)

プレイヤーを追尾する敵が登場する上級ダンジョン(3ステージ)を作り、ゲーム内遊び方説明(スライド形式)も完成させました。
プレイヤーキャラクターは自作の仮素材でゲームの雰囲気とあまり合わない気がしたので、より雰囲気に合うフリー素材に変更しました。

WebGLビルド、unityroomへのアップロードもして、とりあえず無遅刻参加を確定させました。

6日目(9/23 土)

unityroom専用ランキングやX(Twitter)への投稿機能(今回は画像なし)も実装しました。

ゲーム名(NumberBullet)のハッシュタグを検索すると同名のゲームが既に存在することが判明したので、タイトルをカタカナの「ナンバーバレット」に変更しました。

7日目(9/24 日)

ゲームの開始時のスプラッシュスクリーンのロゴ(Made with Unity)の上にオリジナルロゴを表示するなど、わずかな調整を行いました。

公開前の不具合修正

5日目(9/22)の投稿後、見つけにくいながらも致命的な不具合があることに自分で気づいたので、公開前に以下の通り修正しました。

  1. プレイヤーを追いかける敵がプレイヤーを柵の外に追い出してしまう

    • →動く敵のRigidbody2DのBody TypeをKinematic→Dynamic(動的)に変更して解決

  2. クリア直前にRキーでリトライすると不正なスコア(タイム)0が送信される

    • →変数(フラグ)の管理で自己解決

反省点

制作における心残りだった点は以下の通りです。

  1. ダンジョンやステージの数が少なく、ボリュームに欠ける

    • unityroomの新ランキングシステムにおいて、2つまでしかランキングを作成できない

    • たくさんのゲームが投稿されるunity1weekの環境では短時間で気軽に遊べる作品が好まれる

    • →以上の2点より、それはそれでよかったのかもしれないが、上級ダンジョンは4ステージくらいが妥当だったと思う

  2. 文字をピクセルパーフェクトにできなかった

    • 文字や画像を960×540の画面サイズできれいに表示できるよう文字(TMP)や画像、キャンバス、カメラのサイズなどを設定したが、文字だけはうまくいかなかった

    • 表示倍率100%のEdgeだと本当は100%(960×540)より大きく表示されたため?

    • 2倍に当たる1920×1080の全画面(フルスクリーン)ではきれいに表示できた

最後に

今回も祝日と有給休暇をうまく利用して11連続無遅刻参加を達成しました。
途中画面酔いなどで作業に打ち込めない時間もありましたが、ゲーム自体は5日で投稿できたので、その後は機能の追加やバグ修正などに使うことができました。
深夜に目が覚めて睡眠時間が4~5時間になり、寝不足になってしまったのは半年前(前々回「つたえる」)から相変わらずです。

今回はタイルマップやドット絵といった2D描画技術などの知識を深め、「作りたくて作れるものを作る」精神で充実したゲーム制作ができました。
前回は無理して自作のイラストや曲を使うことにこだわってしまい、統一感を出せず絵作りや雰囲気などの評価が大幅に下がったので、その反省を生かし今回はフリー素材で絵や音などの統一感を意識しました。
また、前回はルールをうまく理解できなかった人も少なくなかったようなので、今回はチュートリアルを設けてルールを理解しやすくしました。

unityroomでのプレイ・評価をよろしくお願いします!

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