見出し画像

Unity1week制作記録&感想 ~~な゛ん゛で゛日゛曜゛日゛に゛予゛定゛あ゛る゛の゛~~

Q:ほとんど寝ないで作業するとど~なる?
A:髪の毛がパキパキになって心臓がバクバクし続けます。

というわけで今回のUnity1week「かわる」にパズルトラベラーというゲームを作って参加しましたRimaです!前回は三徹の辛酸を嘗めましたが、今回はショートスリーパーの十字架に貼り付けられることになりました。合計で見れば確実に前回よりも寝ていない気がしますが、それはきっと気のせいです。原因不明のバグが大量発生してるのも気のせいです。
忙しくてnote書けない日々を過ごしていたらもはや次のUnity1weekの方が近そうなぐらい放置しちゃったのも気のせいです。



制作の概要

3/18(月):アイディア出し・固め
3/19(火):プログラム・イラスト・作曲・UI制作
3/20(水):シナリオ・マップ構成制作
3/21(木):演出・エンディング制作
3/22(金):細かい修正
3/23(土):デバッグ
3/24(日):悲しみのデバッグ・提出・用事

どんなゲームを作ったのか

ゲームの概要

今回私は自分で運営しているゲーム制作サークルの仲間たちとパズルトラベラーという2Dアクションパズルゲームを制作しました。
この作品の特徴としてShiftキーを押している間、時間が巻き戻るような特殊なギミックを持っており、その巻き戻しを利用しながらパズルを扉に入ることがゴールとなっています。

アイディアが固まるまでの経緯

最初に「かわる」という言葉が分かったときに多くのことを考えました。
それらのうちいくつかを書いておくと

・何かが変わる
・かを割る
・川流
・川にるがある
・かが悪い

今回私たちは何かが変わるというスタンダードな方向性から考えることにしました。チームだったこともあり、非常に多くのアイディアが集まりましたが、私たちは時間が変わる、またそれに付随して周りの状況が変わるという方向性で行くことにしました。
最初に時間が変わるという話になった際に出たアイディアとしては、「過去と現在を行き来するパズルゲーム」というものでした。
あるボタンを押すと過去と現在を行き来することができ、行き来することによって主人公の身長が変わったり、周りの環境が変わったりすることによって前へ進んでいくというパズルゲームです。
僕は結構この案が好きだったのですが、素材の話などをしているうちになぜか流れてしまって悲しかったです……
次に出たのが、パズルトラベラーです。時を巻き戻すならば主人公の動きや周りのオブジェクトもそれに同期して巻き戻ったら面白いのではないか?と思いこのような話になりました。
他にも因習村改善ゲームやジャンプゲームなどが案としてあったのですが、話し合いに思ったよりも時間がとられてしまいずるずると行くわけにもいかず、パズルトラベラーで行くことになりました。

製作で苦労したところ

制作で苦労したところは主に4つでした。他のメンバーは他のメンバーで大変そうだったので、未知の苦労は確実にありそうです……

  1. ステージ構成

  2. タスク割り振り

  3. バグとバグとバグ

まずやっている最中に結構辛かったのはステージ制作です。パズルゲームを作るのでしっかりと手順を考えたうえで、ぱっと見じゃ分からないようにする必要がありました。そのため、みんなで一緒に考えていきたかったのですが、皆口をそろえて出来ないと言ったため僕が1人ですべてのステージを制作することになりました……
ステージ設計などの企画職の中で負担がかかる役職に関しては属人性を無くすか、その役職に専念できるようにしないとその人の仕事量が尋常じゃないことなり、クオリティが下がってしまうので今後の課題になりそうな気がします……

そして、かなり辛かったのはタスクの割り振りです。チームメンバーに恵まれたことも幸いし、とても良いペースで制作が進んでいったのですが、僕の想定よりも非常に早く割り振るタスクがなくなったりしてしまったために、仕事のあるメンバーと無いメンバーで空気が悪くなってしまったり、僕がたたき起こされたり……今回が初めての多めのチーム制作だったことや久々のまとめ役だったこともあり上手くいかないところが多く苦労したとともに、悔いの残る結果となってしまいました。

自明の理ですが一番苦労したのはバグです。ゲームの基本的なところ自体は土曜日前に完成していたのですが、様々なバグが発生していました。どうしても直せなかったものも含め紹介しておきます。

・ステージ6に行けない
・時戻し中に動ける
・ステージを進めてからステージ1をやると進行がリセットされる
・番号の箱が戻ってこない
・ステージ7、8、9をリスタートか再度プレイするとギミックが動かない
・動く床に乗ると自分が見えなくなる
・ステージ5の動く床が最初は動かない
・ステージ8で上から動かない箱を自分に落とすと地面を抜ける

正直まだまだあるのですがここらへんでやめておきます……
個人的にはこの中だと「ステージ7、8、9をリスタートか再度プレイするとギミックが動かない」というものには結構悩まされました。
結果から言えばこのバグはDontDestroyOnLoadを使ったことに起因します。
私はDontDestroyOnLoadを前回の失敗から使うまいと思っていたのですが、ボタンや感圧板からステージの管理プログラムへアクセスする方法としてインスタンス化→DontDestroyOnLoadというものを用いていました。
ステージが10個程度ならば管理プログラムを一元化してしまっても問題ないだろうと考えたのですが、アホだった僕は前回学んだはずなのにも関わらず、シーンをリロードするとSerializeFieldでセットしたオブジェクトはすべて参照できなくなってしまうということを忘れていました。
この問題に気がついた時点で、一元化をやめてそれぞれのステージで管理を行うようにしたため事なきを得ました。
DontDestroyOnLoadには毎回ヒヤッとさせられて辛いです……

また、動く床に乗ると自分が見えなくなるというバグは理屈までは分かるのですが修正方法が思いつかず、現在に至るまで修整が出来ていません。
このバグは動く床に乗った際にプレイヤーを動く床の子要素にし、降りたら解除するという操作に関係していると考えています。どうやらこのバグは動く床に乗ったあと降りる際に極々稀に全く別のオブジェクトを親要素にしてしまうという処理が行われていることが分かりました。

……

どうやったら直せるんだ……?
このバグに対して最初から親要素を指定して戻すだけだろと思ったそこのあなた、お気持ちは分かります。
僕も同じ処理をしたこともありましたし、二重で指定してみたりしましたが駄目でした……
終わりです。

ですが、次紹介するバグの方が終わりです。
そのバグは「ステージ8で上から動かない箱を自分に落とすと地面を抜ける」というものです。
このバグに気がついたチームメンバーにそもそも感服なのですが、本当に意味が分かりません。
他の箱ではいくらやっても再現できませんし、別の箱をコピペしてから画像を差し替えても、またバグるだけでした……?
最終的に我々はこの画像が呪われているのではないか?やunityの禁忌に触れた説など考えましたが修正どころか、原因の特定までできませんでした……
なお、別の画像だと正常な処理が行われます(?????)

このような形で多くのバグに悩まされましたが、個人的には良かったところも多かったです。
前回尊敬するゲーム制作者の方が僕のnoteを読んだ後にちゃんとDebug.logを入れたほうが良いと言っていたのを実際にやったところ、ちゃんとファイルの消し忘れが無くなり、前回のような三徹の悲劇を回避できたり、チームとして多くの経験を得た結果、今後の開発に必要な決め事や回避すべき状態などが分かったためよりできる事の幅が広がったなど大きな進展もありました。

反省点&心残り

期限の遅刻

遅刻じゃなかったはずなのに設定をミスって遅刻したのは悲しかったです……やってることとしては僕が完全に悪いので、反省して次回はちゃんとできたタイミングで公開設定になるようにしておこうと思います。

技術力不足

今回のゲーム製作ではギミックの搭載やチュートリアル実装に関してどうしても技術力不足が否めませんでした。もっと効率的な実装方法やバグの発生しない実装方法があるだろうな~と思いながらやるのは凄く悲しかったです……次回までにもっとプログラミングをしていかなければ……

制作記録noteについて

何故書きかけでずっと放置していたんだ……?そして、もっと技術的な話したいな~と思っていたのに完全に忘れて謎の振り返りばっかりする癖もやめなきゃ。でも、バグのところ見たら今でもあの当時の絶望がよみがえってきたので、セーフかも()


最後に

今回のUnity1weekはやりたいことと仲間は非常に良かったのですが、私の実力不足を如実に感じる結果となってしまいました。
評価に関しても操作性以外は前回よりも良い評価をもらえ、絵作りに関しては4を超えることができました!
やはりUnity1weekに出るたびに思うのですが、作ったものはもちろんクオリティも大事ですが、完成や終わらせた時に本当の成長があると思います!
だから、これからも頑張っていこうと思います~


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