見出し画像

1WeekGameJam「あける」に参加してみた

「あ」けるげえむ

画像1

このゲームは 1週間ゲームジャム「あける」に投稿したゲームになります。
[1週間ゲームジャム お題「あける」| ゲーム投稿サイト unityroom]
[「あ」けるげえむ]

テーマ

今回のテーマは「あける」。
あけるといえば、何かを開ける、空ける、夜が明けるなど、いろいろなことが連想できますよね。
御多分に漏れず「あける」から様々なものを連想しました。
なので、あける→あ蹴る→「あ」蹴る... そうだ、「あ」を蹴るゲームにしよう。
という感じでテーマはシンプルに決まりました。

システム

今回は最終日の午後しか時間がありませんでした(およそ6~8時間ていど)ので、できることに圧倒的な限りがありました。
「とりあえず物理演算を使えば面白くなる」「落ちゲー」「時間やスコアを競う」といったあたりのポイントを抑えればよいだろう、ということで
「落ちてくる「あ」を蹴り上げて落とさないようにする」
というシステムに決まりました。ここまでで大体30分くらい

作業を洗い出し、やることを絞る

システムも決まったし実装!の前に、少し考えます。
「いったい何がどれだけ必要なのか?」
「それらを作るためには、どれくらい時間がかかるのか?」
「優先順位は?」
この辺りをざっくりとでも決めておかないと、あとで後悔することになります。
 というのも、今回のように限られた時間のゲーム開発では
「やりたいことの100%を実現することは100%不可能」
だからです。50...いや、10%でも形になれば御の字かな、という感じです。
やりたいことの10%しか実現できないのにいきなり

「じゃあまずは素材のデザインを作ろう」

とか

「落ちてくるオブジェクトを5パターンくらい用意しよう」

なんてやっている時間はありません。

僕の場合は、何が必要か列挙した後に
「これがないとゲームが破綻しそう」
というものから順に作成します(開発する人なら大体こうしているかも?

【必要そうな制作物】
- 落ちてくる「あ」(0.5h)
- 蹴り上げるための足(1.5h)
- 跳ね返る壁(0.5h)
- スコア(1.0h)
- タイトル/リザルト画面(1.0h)
- ランキング/Tweet機能(?)
- ゲームループ(1.0)
- 「あ」以外のオブジェクト(1.5h)

こんな感じです。ここから、「絶対に必要なもの」をくくりだします。

【本当に必要なもの】
- 落ちてくる「あ」
- 蹴り上げるための足
- 跳ね返る壁

はい。これだけです。スコアやゲームループもひとまず必要ないです。
「あ」が落ちてきて蹴ることができればひとまずゲームとしての形にはなるはずです(それが面白いかどうかは別として)

もちろん、ここで省いたものは全く作らない、ということではないです。必要なものができた後で時間があれば手を付けていきます。

実装

さて、待ちに待った実装です。ここまでで1時間くらい時間を使っています。でも、やることは明確になっているので迷わずに作業に入れます。

・ 落ちてくる「あ」
 - 落ちてくる「あ」は物理挙動で落ちてくるようにしたいので Unity の RigidBody2D でいけるな
   - 跳ね返る必要があるから Physics Material2D で反発係数を指定しよう
と、この辺りは何となくイメージしていたので、そのまま作っていきます。

・跳ね返る壁
壁を用意します。
壁は画面の外側に、上下左右に存在していればよいので、適当に BoxCollider2D を付与したオブジェクトを配置していきます。

・蹴るための足
足を作る暇はないので、とりあえず長方形のオブジェクトを用意して Collider を付けます。先端を回転軸に、ひとまずZ方向の回転を入れて置き、Space キーで回転するようにしてみます。

これらを入れ込んだ結果がこちら

画像2

すげー、「あ」が落ちてきて、蹴り上げられるようになってる~~~~~~

ゲームになっているかはともかく、「インタラクティブな何か」にはなりました。

...とはいえこれじゃあさすがに投稿することはできません。だってゲームじゃないもん

なのでここからゲームの形にするための準備をしていきます。

【ゲームにするために必要なこと】
- 時間経過によって「あ」オブジェクトが追加される仕組み
- 足の移動
- 「あ」を3回落としたらゲームオーバーになる仕組み

このあたりの仕組みを作っていきます。

・時間経過によって「あ」オブジェクトが追加される仕組み
 時間経過を管理する Timer クラスなど、いつも使いそうなものは自作のunitypackageを用意しているので、それを使用します。こういう、毎回使いそうなものはまとめておくと時短になるので、なるべくまとめるようにしています。
(まとめる前提だと、後々自分が楽をするために自然と疎な実装を意識できる気がしてきます。)
「あ」オブジェクトはプレハブにして、量産できるようにしておきます。

・足の移動
 左右キーの入力で移動できるようにします。今回は等速で動きます。

・「あ」を3回落としたらゲームオーバーになる仕組み
 「あ」が落ちたと判定するため、地面とぶつかったときに残機を減らす処理をいれます。また、ぶつかった「あ」オブジェクトはここで破棄します。

少し時間に余裕があったので、残機と経過時間も表示させてみた結果、こんな感じになりました。

画像3

っぽい!っぽいぞ~~~~~~~~~~~~~~~~~~~~~~~~うっひょ~~~~~

さっきから馬鹿みたいに思うかもしれませんが、進んでいることを自分が喜んであげないとつらいので大げさに喜びます。

また、実はこの間、足にも反発係数を付けたり、ただの回転から Hinji Joint を使ってバネっぽく(ピンボールのフリッパーのようなイメージ)したりもしています。本当はこういう調整をじっくりやりたいのですが、時間がないのでそれっぽく見える状態で止めておきます。

このあと、さっき入れていなかったゲームループを入れ、蹴り上げる主人公であるコピ君の画像素材を作成します。これも時間がないので急いで作ります

コピ君とは? 2020年12月12日に誕生した着ぐるみ。左利き。猫になりたい犬。詳しくはTweetをご覧ください

「あ」けるげえむ 8793fa37a9c64e76a00b50551c5ca6e7

「あ」けるげえむ 8793fa37a9c64e76a00b50551c5ca6e7 1

というわけでこんな感じで素材をよういします。
左足だけは動くので別で画像データを用意します。

これを入れ込んで、左足に当たり判定を付けて...
少しだけ時間があるので雑なタイトル画面を用意して...

画像6

完成~~~やった~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

WebGL でビルド(今回ここへ来て初めて)がすんなり通って、Unity Room で非公開中にテストプレイを数回...

で、投稿!

ひとまず全行程完了!お疲れさまでした。

反省

「時間がなかった」と言ってしまえばそれがすべてだとは思うのですが、それでは次に活きません。せっかく素敵なイベントに参加したのですから、なにか得て学びにしましょう。

1. 調べずに出せる手札を増やしておく
 時間が限られているので、できる限りの時間を作業にあてたかったです。
やりたいことが実現できるか調べる時間というのが少なからず存在するのですが、「こうしたらできるだろう」と思えるだけの知見が少なかったです。例えば、今回足の蹴り上げをピンボールのフリッパーのようにしようと思ったとき、 Hinji Joint2D というものを使うとサクッと作れるということを知らず、調べたり自前で実装しようとしたりと、結構な時間を使ってしまいました。
こうした知識を、日々の開発から得られるように、ゲームジャムのイベントが始まる前に用意しておこうと思いました。ゲームジャムが始まる前から勝負は始まっていた...!!

2. 自作ライブラリを充実させる
 自作でライブラリを用意しているとはいえ、今回有益に使えたのは Timer と StateMachine くらい... 例えばゲームループの仕組みなんかももう少し楽で来たんじゃないかな、と反省しています。

3. 急いでるを理由に雑なコードを書かない
 急いでいるから、設計を深く考えていなかったりした結果、終盤の調整に手間がかかって逆に時間が必要になったりすることがありました。ゲームジャムなので「動けばいい」とは思いつつ、それだけだと自分へのプラスが少ないような気がしました。短い時間で適切な設計をし、あとで見返した時にもわかるコードを書くことを「常に意識する」ことが大事だなと痛感させられました。

...と、振り返ってみると、基本的には事前準備を怠ったことによる反省が多いように感じます。ゲームジャムでは、今まで培ってきた技術を発揮してモノづくりをするんだなと。
付け焼刃だとあとで後悔することを痛感しました。

ただ、1week Game Jam というイベントがあることでモチベーションが保てているので、このような催しを定期的に行ってくださる主催の方には本当に感謝しております。ありがとうございます。

次回はこの反省を生かして、多くの人に楽しんでもらえるゲームを作りたいと思います。

追加したかったこと

 反省が多かった『「あ」けるげえむ』ですが、面白くなる要素はたくさん詰まっていると思っています。それらをちょっと列挙してみます。

- ヒットストップ
- SE
- ゲームバランス調整
- 上空のボールの挙動を見えるように
- ゲーム説明ダイアログ
- ランキング昨日
- ツイート機能
- 「あ」以外の文字の実装

中でもSEとランキング機能は特に入れたかったです。
ランキング機能によってほかの人と競うことができるので、プレイのモチベーションに直接つながるはずだからです。
SEは主に蹴った時のSEですね。ヒットストップもそうですが蹴った時の手ごたえ感がまるでないので、そこはもう少し気持ちよくできたはずです。

それ以外の部分は、わかりやすさを増強するためだったり、足し算的な要素なので、時間があればやりたかったけど、仮に入れても面白くなっていたかどうかはわかりません。が、検証して実装して...ってサイクルを回したかったですね。それこそ1週間まるまる使えたらできたのかも...いや、結果論ですね。

最後に

最後に、このゲームに登場するキャラクター「コピ」の紹介です。
2020年12月12日、自作の着ぐるみキャラクター「コピ」が誕生しました。かわいいですね。可愛いです。
まだ出たばかりではありますが、今後何かしらの形でどんどん出していきたいと考えているキャラなので、お見知りおきをといった感じです。

画像7

画像8

画像9


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