ゴマちゃんフロンティア

アザラシが大好きなエンジニアの開発日記です

「第18回 Unity1週間ゲームジャム」に参加しました!

time 2021/03/14

今回は2月22~28日に行われたUnity1週間ゲームジャムに参加したので、そのお話になります。

お題は「回」でした!
「回る」とか「回転」とかそっちがきますが、「回」の字そのままを地形とかに見立てている人もいましたね。
動詞じゃないのも久々です。第10回以来ですかね?

ゲーム紹介

「まりもシミュレーター」というゲーム名で公開しています。
https://unityroom.com/games/marimo_simulator

まりもを日光に当てて大きくするゲームです。
一方向から当て続けると歪な形になってしまうので、なるべく全方向から満遍なく当てるようにしましょう。
時々左右から水流が来るので、日光から外れないようにがんばります。

制限時間が過ぎると強い水流によって流されます。
まりもを大きく綺麗な形にするほど遠くまでころがるようになっています。綺麗なまりもちゃんを育てて高得点を狙いましょう!

各日の様子

1日目 (月曜日)

さっそく神岡さんとお話してゲームのイメージを固めます。
私はなかなかゲームが思い浮かばなかったのですが、神岡さんはあれこれアイデアを出してくれました。すごい。

その中の「マリモマイスター」なる一文に私が「おお…!」となり、まりもゲーの方向でお話が進んでいきました。
で、まりもを育てて終わりでは物足りないのと、「まりもを綺麗に育てた」と機械的に判定するのが難しかったので、最終的に「完成したまりもを転がしてどこまでいけるかを競う」形に。

昼間の間で神岡さんに画面イメージや仕様を固めていただけたので、ごりごり作っていきます。

太陽光はこちらのリポジトリのプログラムを使用させていただきました。非常に助かります。
https://github.com/robertcupisz/LightShafts

2日目 (火曜日)

祝日なので朝から作業します。お仕事が忙しいのでこの祝日は非常に助かりました。
「まりもの育成」「移動制限」「水流」などの概念を作っていきます。

移動制限は育成パートのエリアをEdgeCollider2Dで囲み、ステージパートになったら消すだけです。3Dに比べてすごい簡単。

並行して神岡さんにまりものテクスチャを作っていただいたので、インポートして組み込みました。

水流は育成パートでもステージパートでも使います。エフェクトはアセットのものを参考に作りました。

リザルト画面も作ってしまいます。
スコアに応じてコメントを出し分けます。コメントとボーダーラインはScriptableObjectで管理し、神岡さん側で自由に追加・編集できるようにしました。

ここまでで大雑把なゲームループは完成です。前回の「いわとをあけて」と比べるとかなりいいペースですね。

3~4日目 (水~木曜日)

朝~夜遅くまでお仕事でまったく作業ができませんでした。
一方で神岡さん側は順調に作業を行っていただけたので、チャットでいくつかやり取りしてgitからpullして…くらいですね。
お仕事が忙しいとはいえ、すさまじく足を引っ張っている感。

5日目 (金曜日)

やっとお仕事が落ち着いたので夜から作業再開です。まずは育成パートの水流から。
単に日光に当て続けるだけでは単調なので、ランダムに水流を発生させて難しくします。

お次はゲーム終了判定の修正。
これまではRigidbody.IsSleeping()のみで判定していたため、微妙な坂があると延々と転がって終わりませんでした。
なのでRigidbody.velocityを見て進行方向とは逆方向に加速したら終了するようにしました。

ここまでやってこの日は終了です。まだ残タスクはそこそこありますが、基本的なゲームループはできているので、最低限遅刻は免れそうかな?という感じでした。まあ結局遅刻したんですけど

6日目 (土曜日)

まずはツイート機能やランキング機能を整備します。仕組み自体は作ってあるので、まりもシミュレーター向けにテーブル作ったり文言変えたりとかですね。

次に効果音とエフェクトを入れました。かなり地味ですけど重要。

あと背景に何もないので、簡単に地形を作ります。Blenderで適当に丘のモデルを作成し、DirectionalLightを暗くして配置しました。

お昼の外出を挟んだ後で作業再開。まずはリザルト画面のNewRecordから。
DOTweenTMPAnimatorを使ったちょっと凝った演出にしてみました。初めてDOTweenPro版買っておいてよかったなーと実感ですね。

その後はRigidbodyの摩擦の調整をしたり、細かいレイアウトを調整したり…ですね。
お互いに良い意味でこだわりがあるというか、あまり妥協せずに「ここもやりたいですねー!」な部分は一通り組み込んでいきました。

7日目 (日曜日)

最終日です。が、朝から寝坊&頭痛。作業効率は落ちますが動かないわけにはいきません。

まずはゴーストの表示から着手します。大きい機能を最終日まで引っ張る残念なエンジニア
最もスコアの良かったまりもの位置や大きさを記録しておき、次回以降のプレイ時に半透明で表示させます。

次に各種シーン上に泡のエフェクトを配置。これだけでも結構雰囲気違ったりしますね。

お次は育成パートからステージパートへの遷移です。今までは唐突に遷移していましたが、効果音とカメラズームを挟むようにしました。

その後はバグを修正したり、UIの細かい部分を直したり、バランス調整をしたり…。
最終的なビルドは20時を過ぎてからになってしまいました。つまりまた遅刻。

しかもビルドした後で問題発生。
1日目で導入した太陽光の仕組みが、神岡さんの環境のWebGL上だと動きませんでした。どうもハードウェア要件を満たしていないようで。

しかし太陽光はこのゲームの根幹をなす表現なので、なくすわけにもいきません。
パーティクルあたりでがんばろうかと思いましたが、日曜日中に提出したいこと、変に自力で作ってまた表示されないとかは嫌だったことから、お金で解決することにしました。
https://assetstore.unity.com/packages/vfx/shaders/volumetric-light-beam-99888

いやーちょうどいいアセットがあって助かりましたね。ちょっとお値段はしましたが、まりもゲーのためには代えられません。どうせ経費にするしね。
ちなみに有料アセット自体については、前からエフェクトやら音関係やらもアセットに頼りまくりなので、今に始まったことではありません。
お金を出せば良い素材が得られます。「世の中金だろ」と言っていた元ソルジャーさんのお言葉も納得ですね。

ということで速攻でアセットを組み込んで再ビルド。その後また別のバグやらテストやらがあり、最終的な公開は日付変わる3分前でした。

感想と反省点

前回の「いわとをあけて」では必要なリソースが多すぎて間に合わなかったので、今回は規模もコストも小さいゲームにすることを心掛けました。
結果、今回は「所要リソースはまりもとステージの見た目だけ」「ゲームシステムは物理演算を活用」と、作業を目に見える範囲に絞れた印象です。
ゲームループも火曜日には完成していたので、前回より良い流れで開発が進められました。
また今回は初日からGitHubにソースを上げたので、神岡さん側でもUnity上で動作確認ができ、まりものパラメータやステージの地形を調整していただけました。
このあたりも前回の反省が生かされていて良い感じです。

反省点は今回も遅刻したこと。
それも使おうとしていた「ライブラリがハードウェア要件を満たしていなかったから」という、「エンジニアとしてそれどうなの?」な理由です。
当然ながらライブラリの要件は確認してから組み込むべきだし、またゲームループ完成後に一度WebGLビルドしてテストをお願いすれば防げたかもしれません。それを怠った結果がリリース前の問題発覚なので…。
あとは私の開発が遅れがちだったこと。お仕事が多忙とはいえ、ちゃんと時間作って作業するのも能力の1つなので、そこが残念だったなーと。

総じて遅刻しながらも、前回より上手に開発できたし、クオリティも一回り上がったゲームに仕上げられたかなーと感じます。

評価

3月14日20時時点で、「総合25位」「楽しさ45位」「絵作り19位」「雰囲気19位」「斬新さ40位」の評価をいただきました!
プレイいただいた皆様、および応援いただいた皆様、ありがとうございました!

9回目の参加にして初めて総合ランキングでランクインできました!
突出して高い評価はないながら、4項目で50位以内に入っていて、概ね高い評価をいただけた印象。
特に絵作りと雰囲気が良い点ですね。このあたりを作成したのは神岡さんなので、神岡さんには感謝しかないです。ありがとうございました!

あとがき

そんなわけで、第18回Unity1週間ゲームジャムに参加しました!
前回と比べて開発の流れも良くなり、総合でのランクインもできたので、確実に一歩前へ進んでいると実感しますね。
次回もまりもゲー…かどうかは分かりませんが、よろしくお願いします!

down

コメントする