見出し画像

初めてのUnity1Week制作記録&感想 〜〜なぜ三徹してなお完成しないのか〜〜

苦節三徹。そしてプラス一徹。とうとう全てのバグを修正しUnity1Weekにゲームを投稿することに成功した。遅刻が確定すると日に日に相方の視線が冷ややかになっていった気がするが、それよりもやっている最中はデバッグが終わらないことが最も辛かったのでセーフと言えよう?
ちなみにこれが作ったゲームなのでやって欲しいです。マジでお願いします。



制作の概要

12/18(月):アイディア出し
12/19(火):アイディア固め
12/20(水):シナリオ制作
12/21(木):ゲームの基礎制作・シナリオ制作
12/22(金):ゲームの基礎制作・素材制作・シナリオ制作
12/23(土):ゲーム制作・素材制作
12/24(日):ゲーム制作・デバッグ
12/25(月):デバッグ
12/26(火):泣きのデバッグ
12/27(水):ガチ泣きのデバッグ

初めてのUnity1Week参戦ながら最後の三日は本当に涙を流しそうだった……

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

ゲームの概要

真面目パート入ります。今回私(https://twitter.com/rimarima1006)と相方のroppi(https://twitter.com/roppi_1003)で共に「おくる言葉」というトーク型のマルチエンディングノベルゲームを制作しました。
某トークアプリのような画面で、会話を進めながら選択肢を選ぶことでエンドが分岐するというスタンダードな形をとりました。
この作品の特徴として自分の関与できない会話があり、それを読まなければ状況を把握できないというものがあったり、主人公であるアオイとその友達のヒナタの会話というところを意識して作りました。

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

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

  • 送る、贈る

  • レターパックで現金送れは全て詐欺です

  • クソリプを送る

  • おが来る

  • 奥がる

  • 古語でのおくる

  • 卒業式などの送る言葉

今回の私たちは古語と卒業式あたりから着想を得ました。おくるという言葉にはいくつかの意味があります。例えば物や情報などを、先方に届くようにする「送る」や人に物などを与える「贈る」などです。
何故か今回のUnity1Weekよりも前から付箋が貼ってあった古語辞典の「おくる」の欄を開くと以下のようなことが書いてありました。
おく・る【後る・遅る】
 1. あとになる。おくれる。
 2. はなれる。あとに残る。
 3. 死に遅れる。先立たれる。
 4. 劣る。乏しい。

これらを考えるに、おくるという単語は送る、贈る、遅る、後るの4通りに考えることができるのではないかという結論になりました。
そこから先は相方がノベルゲームで行くことを提案し、他に有力なアイディアもなく、面白いと思ったためマルチエンディングノベルゲーム「おくる言葉」で決定しました。

制作で苦労したところ

私が制作で苦労したところは主に3つです。相方の方は別の苦労をしていたので、ここに載っていない未知の苦労もあるかもしれません……

  1. 画面の素材制作

  2. 全ての素材を画面に出す

  3. バグとバグとバグ

まずは画面の素材制作。私たちは謎のプライドとしてアセットやフリー素材を極限まで使わないという愚行を犯していたため、一つ一つすべての素材を自作しており非常に時間がかかりました。
僕はプログラム担当でしたが、その実働の1/4は素材を作っていた時間だと思います。これをそのまま続けていたら三日どころではないド級の遅刻が発生しそうだったので、途中で相方に投げつけることによって事なきを得ました。

次に全ての素材を画面に出すことです。今回はトーク型であったために、一つ一つのトーク素材を作り、管理がめんどくさくならないように"シナリオ名セリフ番号:自分か相手か「セリフ内容」"という命名で統一しました。また、画面に出しても文字数の違いやセリフが一行なのか二行なのかなどで位置ずれが発生したり、途中で素材のサイズが変わる手違いが発生したりしたため非常に時間がかかりました。
おそらく命名と位置・サイズ調整で作業全体の1/4の時間がかかっていると思います。
僕は普段からUnityを触るわけではないので、ここはもしかしたらすごく効率的な方法があるかもしれないです……もしも効率的な方法を知っていたり思いついた人がこのnoteを読んでたら教えてください(懇願)。

そして最も時間のかかった問題はバグです。このバグに関しては決定的な敗因が二つあります。というかそれを忘れないためにこれを書いているまであります。
一つ目は同じシーンで画面を切り替えればよかったのに、無理にシーンを切り替えてDontDestroyOnLoadを使ったことです。別にDontDestroyOnLoadに罪があるわけではないですが、僕はこれによって三徹をする運命になりました。
それにDontDestroyOnLoadもそんなに難しい概念ではないかもしれないですが、初心者の僕には他のシーンからの参照方法や二つ登録するにはどうすればいいのかなどで悩みました。
特にこのDontDestroyOnLoadに登録したり、オンとオフを変更するプログラムを対象のオブジェクトにアタッチしていたのが駄目なことに気が付くのにかなりの時間がかかりました。僕は最初知らなかったのですが、そのプログラムがアタッチされているオブジェクトをFalseにするとプログラムも動かなくなるんですね(当たり前)。
二つ目は試作したプログラムを消し忘れたことです。普通のプログラムならまだ良かったのですが、Start関数でオブジェクトにアタッチされたものだったため致命傷でした。
皆さんはDontDestroyOnLoadに登録したオブジェクトが偶数回目だと必ず削除されるというバグが発生したらどう思いますか?
僕は「バニラのアイスを買ったときだけ車のエンジンがかからなくなる」という事件を思い出した後に?が100個ぐらい出てきました。
結局これは過去に消し忘れたプログラムをアタッチしたオブジェクトも消し忘れていたためでしたが、気が付くのに三徹とプラス一徹を要しました……
ちゃんと試作のプログラムは消します(戒め)

反省点&心残り

期限の遅刻

まずは遅刻したこと。まあこれはBGMのデバッグを3日間もやっていた僕が悪すぎます。
次からはもっとデバッグに時間がかからないようにします……

アニメーション不足

キーボードが出てくるときは普通のスマートフォンのようにアニメーション?というか動きがあるのだが、他の時には何もなかったのが少しもったいなかった気がする。
本当はゲーム中の設定は上から出てくるようにしようと思っていたのだが、その機能はデバッグが終わった後に作ったためもう気力が残っていませんでした。
Q アップデートすればいいのでは?
A バグの発生が怖すぎる

最後に

色々と大変だったことをメインでここまで書いてきましたが、今回のUnity1Weekに参加していいこともたくさんありました。僕は窮地に立つことに非常に楽しみを感じるタイプなので、めちゃめちゃつらかったですが三徹のデバッグも完成した今となってはいい思い出です。

それに今までサーバーサイドのプログラムを主に制作していたため、ゲーム制作のプログラムは初めてでした。少々遅刻はしたものの、初めてのゲームが完成するということは非常に嬉しく、楽しいものでした。

このようなイベントを主催していただいているないちさんに感謝をし、このnoteの締めとさせていただきます。ないちさん本当にありがとうございました。そして次回も参加できるように頑張ろうと思います!


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