見出し画像

まあまあ時間があったのに限界開発と化したUnity1Week反省記[あける]

0:冒頭のあいさつ(と自己紹介)

みなさんどうも。普段はツイッターで「たい焼きの様な何か」という名前でUnityとか普段のことをダラダラ呟いてる初心者ゲーム開発者です。
Unity1Weekという一週間でゲームを作るイベントには過去6回ほど参加させていただいており、私自身この度に成長出来てるなーと感じることが出来るいいイベントだと思っております。運営のnaichiさんには頭が上がらないですね…

さて、こんな感じでNoteを書くのは初めてとなります。前回辺りから書こうかなーと思っていましたが、Unity公式に何かキャンペーンがあるようですのでこの機会にNoteの方でやってみることにしました。

ということで今回作ったゲームはこちらとなります。

完全に物理演算で動いている砂を、封印に穴を「あけて」、して緑の砂だけが下を通れるように道を「あける」…というゲームです。あえて詳しく解説はしないです。本題は(一応)これではないですし。

1:1日目(お題発表)[12/21]

 お題が発表されました。「あける」ですって。
 …実はこの時、大きな開発の方でTileMap君の特性に振り回されており、気づいたのは発表から15分くらい経過した後でした。遅くまで起きていた理由を忘れていないか…?

とりあえず眠かったので「あける」の同音異義語とか、変換君がどんな感じを排出するかを確認してからこの日は就寝。「あける」で変換して「曙(あけぼの)」が出てきたことがありました。読み方まるで違うやんけ。”あけ”までは同じだけどさ…

 この日は普通に色々と仕事があったのですが、とりあえず「あける」から連想できそうなものをひたすら考えていました。といっても過去にあった「あつい」やら「さがす」の時よりは同音異義語は少なかったなーとか思いながら。

 しかしアイデアは出ず。実は前回のU1wは時期的に参加できなかったのですが、そのあとに「リピート性の高いゲームを作りたいな」とか、「スマートフォンでできるゲームを作りたい」みたいなことを言ってしまったので、リピート性の高いゲームということを考えていたのです。でもこれは悪手でした。というか、普段リピート性の高いゲームをやらない(いわばハイパーカジュアルと呼ばれる系統のゲームを広告ぐらいでしか見たことがない)ので、まずそういった要素を生み出すための経験やら知識やらが全くなかったのです。これが後々まで響きます。

とりあえずプロジェクトだけ作って満足してました。この後Terrariaとかにうつつを抜かしてました。友人にサーバー開けろと言われちゃったから…(責任転嫁)

2:2日目(なんとなく形が決まった)[12/22]

 二日目になりました。この日は比較的自由な時間があったので、ゲームをどういった形にするか思考を巡らせていました。
そして長考の末にようやくビジョンが浮かんできました。紫色の背景、液体みたいな動きで落ちる何か、下に落としてクリアー…という、今のゲームシステムに近い発想に行きついてました。

 この日は夕方から用事もあったので、思いついたゲーム画面に必要そうな素材三点を書いて終わり。このタイミングで紫色のブロックと砂のグラフィックを書き終えてました。書き終えたあたりで時間になったので、この日の作業はここで中断されました。

実際にはゲームシステムはなんとなく浮かんでいましたが、「これは本当に面白いのか?」という迷いが存在していたので、このようなツイートをしているという…


 ところで何故、砂のグラフィックなどを描いていたかなのですが…

今回の作品、元のアイデアだと「あける」要素が皆無だったのです。なので、ストーリー的な部分で「あける」要素をねじ込もうと、ストーリーをあらかじめ考えていました。それが「年明けの瞬間に時が止まって、そこから動かなくなっちゃったから、プレイヤーが頑張ってそれを解除する…」といったものです。

 そして、時が止まった、ということを表現するのに真っ先に浮かんだのが砂時計でした。アレなら動いていないということを表しやすいかなー…といった理由でした。

なので、最初から砂の絵を描いていたり、紫色のブロックには砂時計的なマークを埋め込んでいました。そのうえで、砂時計の中央部分が時空的に歪んでいる…みたいな設定を表現するために、後に紫色のうねうねした感じの背景を描いたのです。イメージはド〇えもんのタ〇ムマシンとかのあの時計が浮かぶ不思議空間です。イメージカラーが紫だったのは…昔から「時(止め)=紫」みたいなイメージがあったからです。結果的にこういった発想がストーリーとか雰囲気を作るのに一役買っていたようです。これは今回よかったなーと思えたところでした。

3:3日目(迷走開始)[12/23]

 ついに序盤も終わるといったころ、そろそろスクリプトのひとつやふたつくらいあったほうがいいかな、といった時期でした。この日は時間があったはずなのですが…
ここでモチベーションが低下。「今考えているゲームシステムは本当に面白くできるのか?」というのと、「面白くないとしたら、別のアイデアはあるのか?」という思考でループし始めていたように思います。

なんとか腕を動かして、この日は砂が出てくるポータル的なものと、背景のうねうねしてるやつを描いてました。それと、実際に画面に置いてみてどんな感じかを見ていました。

画面に実際に配置してみると、あらまあいい感じになってました。アニメーションする背景だと、何もせずとも画面が動いているように見えるので見栄えが良くなります。それに、思った以上に水色のポータルのアニメーションの出来が良かったです。

 実はここ、背景のアニメーション間隔が中々うまく決まらなかったのですが、ポータルのアニメーションの間隔と合わせることで、なんとなくですが動きに一体感が出るように作りました。この工夫を活かすために、ポータル的なのと背景はゲームをリトライしても再配置されないようにしています。別々に動いてると少し気になってしまう人間なのです。

4:4日目(迷走二日目)[12/24]

気付いたらクリスマスイブですって。普通は楽しめるかもしれない日ですが、私はU1wのことで悩みっぱなしでした。とりあえずスクリプトファイルを作って、まずはゲームシステムだけでも作るかー…とTileMapを配置してみたりしてました。

ここで思い出すべきではなかったことを思い出します。いつしか、何かゲームを作るときに制約を設けたらどうだろう…みたいな話がTLで盛り上がっていた時期がありました。(あったよね?)
 その時のノリで、こんなことをつぶやいていたのです。

何言ってんだ?こいつ…みたいな感じですが、とりあえずこんなことを呟いてました。実際にやる…といったかどうかは遡った限りでは見つからなかったのですが、心の中で宣言しちゃっていたのです。
そしてそれを律儀に守ろうとしちゃいました。ただでさえゲームシステムについて迷いがあり、スクリプトを書く手も動いていないのにこんなこと考えてました。迷走しかしてませんね。ちゃんと計画を立ててからやるべきですし、もし宣言してたなら最初から思い出しておけよ、という感じです。

そうはいいつつ、まだスクリプトを一つしか作ってなかったので、できる限りやり通すことを決めました。何やってんだ…

5:5日目(虚無)[12/25]

 …実はこの日は何やっていたのかわかりません。TwitterにもSlackにも記録がないし、プロジェクトの記録を見ても何故か何もありません。
多分ですが、ここら辺で「あー…土日あるし大丈夫だろ」という無根拠な人任せを始めてます。なのでプロジェクトに触っていないのでしょう。

何やってんだ???????
(ちなみにこの日はメインPCのメモリ増設をしていました。16GB→32GBになりました。ヤッタネ!…じゃねーんだよ)

6:6日目(土日だし本気出す)[12/26]

 ここらへんからまじめに進捗が出てます。というより、締め切りが迫ったので火がついてきた感じです。この日やったことは、よく分らない文字みたいなエフェクトの絵とか、あの砂時計(タイトルとかのやつ)の絵とか描いてました。何気に64*64で描くのは結構レアでしたが、思ったよりいい感じに描けてたのしかったですね。未使用スプライトとして砂時計の絵がまだ三枚あるので、どっかで使いたいですね。

 そして、ここまでスクリプトのスの字もないことに気付きます。でも結局この日は砂時計の絵を描いて力尽きました。あとはなんとなくのゲーム画面を作ってましたね。

これを見るとわかると思いますが、この時点でタイトルなどは決まっていました。一方で、ゲームシステムは今とは逆ともいえる、ブロックを置いて砂を誘導するゲームでした。
ですが、このゲームシステムはいくつかの問題点をはらんでいました。具体的には以下の通り。

①↘に行くようにブロックを置くと、砂の大きさ的にブロックに乗って動かなくなる場合がある。
②対策を施すとスマホ想定にしては厳しい操作になる。
③砂を大きくするとあまり多く砂を出せなくなる。
④(のちに判明するが)スマホでやるには設置の仕方に問題がある。

これらの問題もあり、正直このゲームシステムはダメなんじゃないか…と思ってました。問題はこのことにちゃんと気付くのは日曜日でした。

7:7日目(最後の日にして現在のゲームシステムが決まった日)[12/27]

 6日目に書いたように、この日に旧ゲームシステムに見切りを付けました。方針転換する前のゲームはこんな感じ。

とてもわかり辛いですが、右下のボタンでブロックの配置の仕方が変化しています。左右の矢印は45°ずつ配置の仕方を回転させ、+と-で配置する際の長さを長くしたり短くしたりして、最低限のブロック設置数で砂を落とす。緑の砂をすべて特定の箇所に入れることでクリア、砂は入れたら入れた分だけボーナス点がもらえる…というシステムにする予定でした。が、スマホでの操作をするには厳しい(どちらかというとPC向けだが、それにしても複雑)という結論に至り、いったん開発をストップ。

さて、このシステムではだめ、でも思いつかない…となってしまいました。あーあ…一体何やってたんだ俺…とか思いながら、TileMapをこねくり回していたところ、ある形になりました。クロス的な配置です。その配置でなんとなく遊んでいたところ、知り合いが一言。

「面白そうな配置じゃん」

面白い…?と少し疑問に思いましたが、自分にとってそうでなくとも、他の人から見ればそうなのかもしれない、よし、やってみようじゃんか!ということで、ここで今のゲームシステムが決まりました。気づいたときにはすでに15時を過ぎており、公開まであと5時間…という山場でした。
ならもう手段は選んでられない!ということで、スクリプトを書く作業に戻りました。旧ゲームシステム用に作っていたブロック配置システムを再利用して、初期ブロック配置は容易にスクリプトで再現できました。

ここで、ほぼ今の形が出来ています。違いといえばブロックくらいですね。

 さて、このツイートをしているのが18時頃です。この後ももちろん開発はしていたのですが…案の定遅刻になりました。ある程度のシステムなどは出来ていた気もしますが、まだゲームの1ループが完成していませんでした。

こんな感じの画面になっていました。ほぼ完成してますが、大きな違いはUIですね。なんとなく斜めになっています。こっちの方がほんのちょっぴりスタイリッシュな感じが出ていて味がある気もします。が、このゲームの内容的に下の方にUIは置けないので、上に詰めるためにもこのUIは廃止されます。

あとこの日の深夜に気付いたのは、このゲームの難易度がとても高いということです。基本重力任せですが、初期のころは紫色のブロックの再配置が毎回ではなく3の倍数ステージ毎だったり、普通の砂が下に落ちても大丈夫な回数が2回しかなかったりとしたおかげで、作者がクリアできない事故が起きてました。
そんな感じで自分のゲームの難易度に苦しめられてるうちに時刻は0時となり、翌日になっていました。

8:8日目~(延長戦とバージョンアップ)[2020/12/28~2021/1/1]

 昨日からそのまま作業を続け、一通りのゲームループは出来ました。まだまだ難易度は高いし、デバックもできてませんでしたが、大急ぎでランキングとツイートを実装し、とりあえずバージョン0.8.0として投稿しました。

投稿したのち、力尽きたので就寝。ちなみに、ここに来るまでスクリプトは一つのままでこなしました。つまりなんやかんやで1Scriptでゲームを作ることに成功してました。びっくり。といっても今回はわりと簡単なゲームだったから、1Scriptでどうにかなったのかもしれませんね。

 そして、お昼頃から開発再開。後回しにしていたサウンド関係を整えました。あと、普通の砂が落ちてしまったことがわかり辛いと感じたので、そこもエフェクトを追加しました。ここで土曜日に作った謎の文字を利用してます。あとはブロックの再配置を見直し、毎回どこかしらが再配置され、縦と横に再配置されるようにしたのもこのタイミングでした。
このような細かい遊びやすさの修正を施し、バージョン1.0.1として更新しました。これにて一応の完成としました。

また、この後にも数回、バランス調節と不具合修正のためのバージョンアップをしました。特にバージョン1.0.1に合った不具合として、右下と左下にクリアに必要なアイテムが詰まって回収できなくなるという致命的なものがあり、それで中断してしまった方々が居ました。非常に申し訳なかったです。

 …というか、ここまで一切技術面の話してませんね。といっても今回はほぼ特殊なことはしてませんから、割と普通…かな?
TileMap関係で言えることというと、今回Tilemap自体を45°回転させて使っていますが…実はTilemap自体の機能として斜めに配置できるようにするモードが存在します。それを利用すれば、座標がこんがらがることもありません。もしTileMapを斜めに利用したいということがあったら、このことを覚えておくといいかもしれません。あとは…TileMapに配置されてるタイルを全部消すという機能は、「ClearAllTiles()」という名前です。最初Removeから始まるのかなーとか、「RefleshAllTiles()」かなーとか思ってましたが、全然違いました。ちなみに後者のやつはTileひとつひとつについてる情報とかを初期状態に戻します。色とかついてたりしたら、それを初期の色(RGBがすべて1)に戻す、というものです。今回はTileに色を付けるのはやりませんでしたが、何気にタイルの色を付けるのには面倒な手順が必要です。今回は利用していないので詳しく書きませんが、その内どこかで簡単にメモ書き的な感じで書くかもです。

9:反省会

 今回のUnity1Weekは、前にも少し言及しましたが時間があるタイミングでの開催だったので、わりと心構えみたいなものが出来ていた…と思っていたのですが、結局遅刻してしまいました。でも、前の時はまず評価期間すらも過ぎていた時に投稿していたので、そのことを考えると随分マシだなー…と思います。

そして、今回のUnity1Weekに当たっての個人的な目標としていた

・リピート性の高いゲームを作る。
・スマートフォンなどの操作を想定したゲームにする。
・一つのスクリプトだけでゲームを作る。

ですが、一番については兎も角、2番と3番については達成できたんじゃないかなーと思っています。一番は評価が出た後じゃないと判断に困る(といいつつ、スコアボード見てる限りあまりリピートしてプレイしてくださってる方はいなさそうですが…)けど、スマホ想定で基本的にクリック一つ(タップ操作だけ)で遊べるようになっていますし、3番は想定外とは言え成し遂げることができました。それに、今回のゲームがは私が過去に投稿してきたUnity1Week作品の中で最も評価してもらっているので、個人的には今回は大成功だったかな?と思っています。

 今後の展望ですが、評価期間が終わった後のグラフ次第では、これを最初のゲームアプリとしてリリースしようかなーと考えています。もちろんこのままでリリースするとちょいと難易度がHighな気がするので、ある程度バリエーションを持たせたバージョンにしてからになるとは思いますが、割と自分でも気にいるゲームに出来たと思っているので、ぜひ活かしていけたらなーと思っています。

それでは、これにてUnity1Week振り返りの話を終わろうと思います。あまり文を書かないので、お見苦しい点が多々あるとは思いますが、ここまで見てくださってありがとうございました!

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