見出し画像

牛乳を溜めるにあたって

Unity 1週間ゲームジャム 第23回 に参加しました。
「Unityを使って1週間でゲームを作ってお互いに遊ぼう!」というインターネット鉄人レースです。最終的に342もの作品が集まりました。(マジ?)

お題「ためる」に沿ってきっかり1週間で制作した作品がこちらです。

このゲームについて、制作の流れと反省を記します。Unityをインストールしたのが約2年前で、触っていない期間も長かったので技術的な内容は期待しないでいただけると幸いです。

制作の流れ

こだわったこと

「とにかく1週間で作りきる」を目標に制作しました。
これは自分が1週間でできる範囲を確かめたかったからです。
そのため本作は提出日の日曜日にはスパッと開発を終了し、その後はいっさい追加・修正をしていません。大きいバグがあったときのみ修正する予定でしたが、幸いにありませんでした。

1日目

アイディア出しに費やしました。「ためる」でググってみたり、ノートにイメージを描き散らしてみたり…という感じで案を考えました。一度紙に書き出すことで、その題材を広げられるかを検討します。
下記のような案を出しました。

大砲のパワーを溜めて敵を蹴散らすゲーム
カエルのパワーを溜めるジャンプアクション
容器に液体を溜めるカジュアルゲーム。他にも「ミジンコを操作して徳を溜めて人間まで転生しよう!」みたいなものも考えましたが、人間がそんなに偉いか?という気持ちが芽生えたので没に

水をためるゲームのラフを描いた時に、こういう絵画あったよな・・・とぼんやり連想。巨匠フェルメールの「牛乳を注ぐ女」です。絵面の面白さでフフッとなってもらえるかもしれないと思い、この題材で進めることに決定しました。

この時点で一発ギャグのようなノリのゲームを目指したので、
・操作はマウスのみ
・操作説明は2行以内
・難易度はかなり甘め
とすることを決定。

難易度については、あほげー第38回で作成したゲームがムズすぎて楽しめるものではなかったという反省を生かしています。
今回はシンプルにプレイしてもらう人に楽しんで貰うことを最終目標をしました。

2日目

基本的なゲームシステムを作成しました。容器に溜まった丸の数はOnTriggerStay2Dでカウントしています。

3日目

プレイヤーが移動できる範囲を制限しました。実装はマウス位置からRayを飛ばして移動可能エリアに当たったかを判定するというものです(もっとシンプルな実装があると思います。思いついた方はご一報ください)。あと、作っているうちに「これ面白いか?」と自信を喪失したのでプレイヤーのラフを急遽差し込みました。

この日に一度WebGL形式でビルドし、unityroom上で動作確認しました。
牛乳の表現のために多数のオブジェクトを使っているので、ブラウザ上で想定通り動作するかを検証したかったためです。
最終日に「ビルドが通らない!」「アップロードしたゲームが動かない!」となって締め切りを過ぎるのは避けたかったので、早めの確認を心がけました。

4日目

ゲーム用の画像制作です。今回は「牛乳を注ぐ女」をモチーフとしたので、それが伝わるようにイラストを描きました。扇風機なども含め、使用した画像はすべて自作です。

オリジナルに失礼にならないよう、気合いを入れて描きました

5日目

15ステージを目標にステージ作りに精を出しました。
が、このゲームは特定の位置にマウスを置くだけでクリアできてしまうため「ゲームとして成立しているのか?」という不安が常に付きまといます。
そんな時はSKTさんの「モアイまわし」(カーソル操作のみの位置探しゲーム)が超面白いことを思い出して自分を鼓舞しました。

ゲームとしての体裁をなんとか整えるために
・マウスに連動して動く障害物
・ON/OFF可能な扇風機
といったギミックを実装しました。

パズルっぽいゲームを作るのは初めてなので、ストレスよりも楽しさが大きくなるような仕組みを考えるのに苦戦。テストプレイをお願いできる知人もいなかったため、易しめを意識しながら手探りで進めました。

1週間でパズルゲームを作れる人は一体どんなことを考えて生活しているのでしょうか?

6日目(土曜日)

ステージ作成を進めつつ、BGM・SE・UI・ツイート機能などこまごましたものを実装しました。
また、画面が質素な印象だったのでポストプロセスでの装飾を行いました。
簡単操作で画面が華美になるので、ゲームの処理に余裕がありそうなら試してみるべきですね。

ここで問題発生。
再度unityroomにアップロードしての動作検証を行ったところ、以下のエラーが発生しました。

Uncaught RangeError: Maximum call stack size exceeded

これはキャッシュが原因で発生するらしく、スーパーリロード(Shift+F5 または Ctrl+F5)で解決できます。私はこのエラーでかなり消耗してしまったので、同じ轍を踏まないよう「とりあえずF5」だけは覚えて帰っていただきたいです。

余談ですが、この日はこのゲームの面白さにかなり自信を無くしており、Unity1Weekに投稿するかさえ迷っていました(上記エラーでしょげたこともおそらく一因)。モチベーションの維持は難しいです。

最終日(日曜日)

unityroomでは投稿作品のサムネにGIFを登録できます。GIF画像を使うことでゲームの内容がバシっと伝わり人気もうなぎ登りだ!と画策し、作成方法をいろいろと調べてみました。しかし、正方形のGIF画像を作成する手順がどうしても分からず断念。
皆さん当たり前のようにGIFをサムネに使っていますが、私の観測班以外に秘技があるのだろうと結論付けました。

GIF制作で心が折れたので諦めて投稿するか…と思ったところで、タイトル画面があまりに簡素過ぎるのが気になってきます。
投稿まで残り4時間も無いので、あまり凝ったことはできません。苦肉の策として、ゲーム内のコードを流用してタイトル画面を牛乳まみれにすることに。

全343作品の中でもたぶん最もタイトル画面が重いです

結果として画面は賑やかになりましたが、笑っちゃうくらい重くなりました。タイトルではボタンクリックくらいしかしないため、ガッツリ重くても許されるだろうとの思いでこの画面が世に出ました。

タイトル画面が完成した時点で時刻は18時前。締め切りまで後2時間ちょっとです。この時点で12ステージしかできていませんでしたが、締め切りを重視してきっぱりと切り上げることにしました。

そして数十分後にビルド&投稿完了。
1週間の戦いが終わりました。

投稿に際して諦めた要素としては以下のようなものがあります。

ステージ13, 14, 15
純粋に時間が足りませんでした。本作では「マウスカーソルに連動して障害物が動く」というギミックを多用しましたが、「移動可能エリアの特定の点だけがクリアできるようにする」ためのパラメーター調整に想定外の時間を要したのが原因です。ほぼ職人技のような調整で時間を掛けて実装してしまったので、もっとスマートな実装を早い段階で考えておくべきでした。

coefiという変数にちまちま値を入れ、あるカーソル位置でクリアできるように調整…



アニメーション
構想段階では、主人公の「ポットを立てて持つ/傾けて注ぐ」と扇風機の回転という簡単なアニメーションを作る予定でした。ゲームとして成立させるために必死だったので、装飾に回す余力がありませんでした。

液体表現
白い円を牛乳と主張するのは若干無理がある気がしないでもなかったので、余裕があれば実装するつもりでした。ただ、この見た目もいい意味でバカっぽく、「一発ギャグらしく」というコンセプトとマッチしていたので結果オーライかもしれません。


相互評価期間

!?

一夜明けた月曜日、なんとunityroomのトップページに人気ゲームとして掲載されていました。ありがたいことにここから結果発表までの2週間くらいずっと人気ゲームの一枠に居座り続けました。

私も2週間で170作品くらいプレイしました。すべての作品をできなかったのは心残りですが、他の参加者さんが精魂込めて作ったゲームで遊ぶのは時間を忘れるほど楽しかったです。

結果発表!

総合8位(発表時)。楽しさ4位。マジですか…!?
創作のプロやチーム参加での方々もいる中、この順位を取れたのはアルティメット大快挙だと思います。

9/30時点の評価

各項目の点数は以下の通りです。(9/30時点)
楽しさ:4.332(4位
絵作り:4.25(44位)
サウンド:3.815
操作性:3.87(50位)
雰囲気:4.245(32位)
斬新さ:4.288(7位
--------------------------------
総合:4.133(11位
※順位発表後にもランキングは変動しています

サウンド以外の全項目でランクインできました。
楽しさ4位
は非常にありがたいです。プレイしてもらう人に楽しんで貰うという最終目標は達成されたようです。
斬新さ7位は個人的には意外でした。「液体をためる」というゴールは、「ためる」というお題に対してストレートなものだと考えていたためです。
ひょっとすると、「有名な絵画をゲームに落とし込む」というのが新鮮だと受け止めてもらえたのかも知れません。

なぜ評価されたか?

ありがたいことに、本作は180以上の評価をつけてもらえました。評価件数は今回のゲームジャムの全作品でおそらく1位です。

なぜこんなに沢山の方にプレイしてもらえたのかの理由を考えましたが、一番の要因は「牛乳を注ぐ女」をほとんどの参加者が知っているためだと思います。

300作品以上の多種多様なサムネイルが並ぶ中で、「あ、この絵とタイトルは知っているやつでは」とクリックしやすい状況だったのではないでしょうか。
おそらくは「牛乳を注ぐ女」という超名作のネームバリューに全乗っかりする形で閲覧回数を伸ばせたのでしょう。その意味では、「牛乳をためる女」というタイトルは元ネタがすぐ分かる効果的なものだったと思います。

遊んでもらえた二番目の要因としては「締め切りに間に合った」というのがあると思います。ゲームジャムで一番盛り上がるタイミングは公開直後であり、その波に乗れたのが有利に働いたのでしょう。

また、「ゲーム説明と操作説明が短く、そこで離脱する人が少ない」というのも多少は効いていると信じたいところです。

学び

・長期間のモチベーション維持は難しい
1週間という短い期間であっても、モチベーションを維持し続けるのは容易でないと分かりました。1週間ゲームジャムでは7日間をがむしゃらに制作に費やすのではなく、間に休憩日を入れるなどの工夫をして燃え尽きないようにしたいです。

・とりあえずディレイを入れれば良いというものではない
本作ではクリアした後の1秒弱、時間経過を遅くするという処理を入れています。これは「ただ玉を落とすだけではあまりに手応えがないかな」と不安になり、後から追加したものです。
結果としてこれは失敗で、多くの人に「なんか処理落ちが起きてて最悪」といった印象を与えてしまったようです。せっかくのカジュアルさを損ねてしまいました。どんな工夫であっても独りよがりにならないように吟味するべきですね。
とはいえせっかくのイベントなので、新たな試みに挑戦するというのも大事にしたいところです。

・重いかどうかはやってみないと分からない
1週間という短期間で完成を目指すにあたって、

  • コライダーを付けたオブジェクトをTransformで操作

  • 牛乳の表現として200弱のオブジェクトを動かす

  • ポストプロセスでエフェクトを掛ける

などの重そうな処理でもとりあえず試してみました。結果としてそこまで処理落ちは感じなかったので、入門書で重いとされているような処理も過剰に恐れる必要はないかなと感じました。
(もちろん軽くするための工夫は常に模索すべきでしょう)

・コーディングの方針をあらかじめ見通すべき
コーディングを始めた2日目の時点で「BGMはこのスクリプト、進捗はこのスクリプトで管理…」といった見通しを立てておくべきでした。SE調節バーを置く場所があるにも関わらずSE調節を実装できなかったのは、無計画に拡張されめちゃくちゃに絡まったコードが原因です。1週間といえど、どんなオブジェクトが必要になるか/どのように管理するかは最初に洗い出すべきでした。

BGMスライダーの下に不自然に空いた空間が

終わりに

実はUnity1Weekに参加するのは人生で2度目で、前回はお題「ちゅう」に別名義で参加していました。その時は何一つランクインできなかったため、今回のランクインでリベンジ出来て嬉しいです。評価に関してはもう悔いがないので、次にゲームジャムに参加する際は好き放題作りたいと思います。

ゲーム制作者の方々と交流できる楽しいイベントでした。主催のnaichiさん、遊んでいただいた方、コメント・評価・実況プレイして頂いた方に心より感謝します。

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