【Unity1week】「1ボタン」に参加したゲームの振り返りを行う

Unity1week「1ボタン」に参加しました。
今回はこのゲームの振り返りを行いたいと思います。

unityroom.com

目標

個人的な目標

今回、全く関わったことが無い人とゲーム制作をしようと考えていました。
今までのゲーム制作で得た知見を、知らない人に上手に教えることができるのか
そして完成してUnity1weekに投稿できるのかが目標です。

今回、unity1week Team-Up!!という企画に参加しました。
この企画でDiscordに参加し、一緒に参加する人を募集しました。
note.com

募集板で、ガチガチに固めた文章で募集かけたのでそもそも人が来るのかな…
と思っていましたが、アート枠としてむてきいもさんに声をかけて頂きました。

むてきいもさんは可愛いケモノのイラストを描かれている人です。
語彙力が無いため良い言葉が思いつきませんがとにっかく良いイラストが多い…!
potofu.me

今回はむてきいもさんの趣味嗜好に沿ったゲームを作成しました。



余談ですが、ケモノ系は小さいころに名探偵ホームズを見てから
好きになったジャンルの一つだったので一緒に制作が出来て楽しかったです。
www.youtube.com


今回のunity1week Team-Up!!で制作されたゲームはどれも魅力的なものばかりです!
他の人が制作されたゲームも是非…!
note.com

技術的な目標

UniTaskUniRxを使用することを目的としました。
github.com
github.com

どちらもとりすーぷさんのQiita記事を見て
実際にゲームに取り入れてみたい思った
のがキッカケです。
qiita.com
qiita.com
しっかりとゲームに組み込んだことが無かったので、いい機会だと思い使用しました。


それから、制作が始まってから決めたことなのですが、
UIBuilderを使ってEditor拡張をすることも目標に入れました。

少し古い資料ですが、とても役に立つ公演がありました。
learning.unity3d.jp

大体はこの公演で使用感を掴み、色んなサイトを転々として調べて
実際に必要そうなツールを作成していくことにしました。

チーム内の目標

チーム内の目標としては下記の2つを目標にゲームを制作しました。
・期日までに提出する
・楽しくゲームを作る

果たして達成できたのか。こうご期待。

良かった点

提出できた

評価期間中に提出が出来ました。えらい!
完遂できたことは素直に嬉しいです。

滅茶苦茶言い訳みたいになってしまうんですが
Unity1week開催時期から実際に提出するまでの期間
かなりお仕事が忙しい時期になってしまいました。

お仕事と1weekの〆に追われる中、せっかく作っていただいたイラストや素材を出さず
道半ばでチーム解散…とならずに、完成することが出来て本当に良かったです。

一緒に制作する人がいた

Unity1week開催期間及び遅刻期間の間、毎日21時から1時まで作業をしていました。
かなり遅い時間まで作業をしていたんですが
その間もむてきいもさんと一緒に作業をしていました。

ただでさえ遅刻をしている上、イラストや貴重な時間を預かっている以上
絶対に完成させてやるという執念がありました。

多分、私一人だけだったら途中で投げ出していたかもしれません。
本当に助かりました。。。 ありがとうございます…!

Git・SourceTreeの使い方を教えつつ作業ができた

今まではGit・GitHub・SourceTreeの使い方を
ある程度知っている人と作業をしていたのですが、
初心者に教える立場になって実際にSourceTreeを使って作業をしました。


「教える」ことがいかに難しいかが分かりました。
自分の中の理解について、あらためて振り返ることができて良かったです。

UniTask・UniRxを上手に組み込めた

ゲームの進行周りはUniTaskを使用しました。
ロードや準備などの「待ち」の処理を比較的綺麗に作成することが出来ました。


ほとんどのUIのパラメータ変化はUniRxを使用しています。
パラメータが変化した時にイベントが働くようにしたのでソースコード上はかなり綺麗。
実装面はModel-View-Presenterパターンを使用してサクサク作ることが出来ました。
qiita.com

UIBuilderを使ったEditor拡張が楽しかった

UIBuilderを使ったEditor拡張は、非常に使用感が良かったです。
ウィンドウのGUIの見た目と、実際の内部挙動を切り分けて考えることが出来ました。


例えば、マテリアルを再帰的に割り当てるツール。
普段であれば真面目にマウスで割り当てていたものを
ワンタッチでできるようになったのは感動もの。


一番のお気に入りはサウンドリソースをソースコード上から簡単に鳴らせるように
enum生成を自動的に作ってくれるツール。

サウンド周りの実装は比較的シンプルに作ることができ、
使用するときも使い勝手が良かったです。


反省点

遅刻した

シンプルに遅刻しました。
目標達成ならず。

時間をかけすぎた

今回、TogglTrackという時間が図れるツールを使って、作業時間を可視化してみました。
toggl.com


その結果がこちらです。
10/5(木)~10/7(土)の期間は計り忘れています。大体+12時間ぐらい。
トータルで120時間このゲームに費やしている計算になります。


一つ目は素直に「一つの実装に至るまでに考えすぎ」なことです。
綺麗な実装にしよう…綺麗な実装に…と設計レベルの事から考えていました。

一週間しかないので、もうすこしフットワーク軽く動いて、
できる・できない、やる・やらないの分別を早くした方が良かったです。


二つ目は「コードがまじめすぎる」ことだと思います。
滅茶苦茶丁寧にアサーションやログ出力に関する処理書いているんですよ。すごい丁寧。


で、これがマネージャクラスなどの取りまとめるクラスなら非常に嬉しいんですが
端っこの小さいクラスもこのレベルで書いています。真面目か!!!

提出までこのクソ真面目コードを書いていたんですが
ある程度小さなクラスは別に書かなくても良かったんじゃないかな…とおもっています。

予め用意して置いたゲーム進行形クラスが足枷となった

予めこの機能が必要そうだな…と思って用意して置いたゲーム進行形クラスがありました。
ですが使う上での制約が厳しくて、かなり使いずらかったです。


特にこのステートマシンくんがかなり暴れていました。
ツイートしているときはウッキウキでした。が、実際には制約が厳しすぎる。
制約をすこし緩める形で修正しました。もう少し柔軟に考えるべき…。

使用しなかった機能が存在した

今回、ADVパートを作りたい!という話をしていました。
で、お題が発表されるまでにGoogleスプレッドシートからcsvファイルを書きだして、
専用の拡張機能を使用すると会話用のScriptableObjectが作られる機能を作成していました。


(DataTableってなんだよ)

Googleスプレッドシート編集者はむてきいもさんにお任せしようと考えていたため
間違ったcsvファイルを出力しないように不正値には赤く表示するようにしたり
変な値を入れこまないようにドロップダウンを付けたりして
ヒューマンエラーを起こさないように工夫をしていました。

10時間ぐらいかけてこの機能を作ったのですが
お題が「1ボタン」で活かしにくいお題が来たため
今回は見送ることにしました;;

数学・物理学の知識が甘かった

今回、RigidBodyを使ってプレイヤーを飛ばしているのですが
AddForce()関数をかなり曖昧な理解で使用しています。

これはシンプルに勉強不足なので、現在進行形で色んな動画を見回って
次のゲームに活かせるようにします。

現時点で繰り返し見ているのは下記の3つ。
すべて安原さんの公演。すごく分かりやすいです。
[Unity道場 札幌スペシャル]プロが教える脱初心者スクリプト術! - YouTube
【Unite Tokyo 2018】誘導ミサイル完全マスター - YouTube
【Unity道場 博多スペシャル 2017】クォータニオン完全マスター - YouTube

おわりに

unity1week Team-Up!!、忙しい時期でしたが非常に楽しかったです!
企画者であるMetaFormingProさん、並びに湊あおいさんに感謝しております🙏

また、むてきいもさんにはかなりご足労をおかけしたと思います🙇
制作していただいてありがとうございました!

そして、次回開催時期がすでに出ている…!
unityroom.com

作ったゲーム

TRAMPO | フリーゲーム投稿サイト unityroom