見出し画像

unity1week「ふえる」で、敵が増えるゲームを作った話

どうも。powderと申します。
2020年08月10日(月) 00:00 〜 2020年08月16日(日) 20:00の期間で開催されたUnity1週間ゲームジャム「ふえる」に参加したときの話です。
今や500作品も投稿されてるんですよ。すごいゲームジャムです。

作ったやつ

以下のURLから遊べます。
分裂して増えていくスライムを切り刻んでいく爽快感満載のゲームとなっております。

0日目(お題発表)

タイムラインとか某生放送とか見ながら企画を考えてた。
ひとまずスコアなど数値的なものが増えるゲームは作らないように縛りをかけた。

確かにスコアが増えるゲームって例えばお金が増えていけば楽しいです。
お金がどんどん増えていって、最終的に5000兆円まで増えていったら絶対楽しいじゃないですか。

そのようなゲーム、実はすでに作ってしまっているんですよ。
これをプレイするだけでお金がどんどん増えていって、最終的に5000兆円手に入るらしいですよ。

今すぐここからダウンロードだ!(ダイマ)

…というわけで、スコアが増えるゲームは既に作ってるので、それ以外で作る方向で考えていた。
具体的には、
・スコアみたいな数値が増えるゲームじゃなくて、物量が増えていくゲーム
・敵がどこからともなく湧いて増えるようなゲームではなくて、目の前の敵が増えていくようなゲーム
・「増やす」じゃなくて「増える」
・遊ぶ楽しさを追求したゲーム
という結構強いセルフ制約のもとアイディアを出してく。

そんな中、今回提出した「超乱舞!」とは別のゲーム「SplitMatter」を思いつく。
倒すと増える敵を何とかして全員倒すというSTGゲームを予定してた。

1日目

案はあったけどなかなか作業できないでいた。
ゲームとして面白くなるとか検証したり他に面白い案が無いかとか考えてたりした。
夕方くらいから「SplitMatter」の製作作業開始。

根幹の部分だけ作成して動画を投稿。
ご丁寧にハッシュタグまで作成してる。

2日目

にゃーん

3日目

既に自分の完成イメージすら超えてしまうようなクオリティのゲームも散見された。化け物かよ。

ガチ勢を前にまったり路線で行こうかとか考え直すなどしてた。
とはいうものの、「SplitMatter」をどう面白くするかとか考えてはいたけど、内心完成させるの無理では?というのが本音だった。

具体的には、以下の問題が残ってた。
非常に高度な演出が必要
→自分の脳内での構成はある程度あったが、1週間で完成する気がしなかった。ツヨツヨグラフィッカーの腕を食べればあるいは…。
難易度調整が必須
→試しに自機狙いをさせてみたけど、敵の数が増えると避けきれなくなる。どうやって調整するんだこれ。
面白さの追求
→敵がどんどん増えていくという性質上、ゲーム後半が面白さよりもマゾさに寄ってしまう。

という感じで完成する気がしなかったのと、他の人のクオリティが非常に高かったというのもあり、これ以上開発するモチベが保てなかった。
この日は1時間くらいの作業可能時間はあったはずだけれど、多分何もやってない。完全に打ち砕かれてた。

4日目

ここで「超乱舞!」のシステムを思いつく。
厳密にいうとunity1weekが始まる前から構想としてはあったのだが、
登場する敵キャラに対してお題を適用できることがわかり…発狂した。

どうしてもっと早く気が付かなかったんだ。

モチベが回復してきたので作業開始

素材が黒丸●では済まなくなったので、素材の調達を急遽行った。
探す時間が惜しかったので、お金の力で解決した。

斬撃システムをunityに組み込んでみたものを動画に投稿した。

5日目~6日目

5日目は有休を消化。
基本システムの実装をしてた。
スライム作って、HP付けて、分裂処理作って、といったゲームの根幹部分を作ってた。

これは6日目時点での動画。

全 然 完 成 し て い な い 。

7日目

ランキングやツイート文の作成とそれに伴うバランス調整とかしてた。
シーン遷移、音の組み込みとかもした。

少し遅刻してしまったがその日のうちに何とか投稿。

実質4日間で作成。

8日目

更新で、タイトル画面でクリックをしないと先に進めないようにした。

unityroomのゲームでロードが終わった後って画面をクリックしないと音が発生しないことがあるじゃないですか。
unityの仕様なのかWebGLの仕様なのかはわからないですけど。
その対策です。

今まで作ってきたゲームはゲーム開始がボタン操作だったので気にはならなかったのですが、今回のゲームはなんとクリックすることなくゲームの進行ができてしまうのです。
しかもそのままクリアまでできてしまうという…。

しかし、クリア後に出てくるリトライやランキングを実行するにはクリックが要求されるので、そこで初めてクリックしてしまうと、それまでに再生されるはずだった音が一斉に流れて爆音と化してしまうのです。

今回の試みとか

ここまででどんな流れで開発してきたかの概要を述べた。
以降は、作成中に意識したこととかを適当に書いてく。

チュートリアル兼タイトル画面の実装

今回意識したことの一つとして、ゲーム本編開始までの間に自機操作のチュートリアルを入れるというものがある。
今まで作ってきたゲームは、スタートボタンを押すとチュートリアルも無しにいきなりゲームが始まってしまい初見の人には優しくない設計だったので、何か改善したかった。

本来ならチュートリアルは専用のシーンで別途用意するべきだけど、
そんなの作ってる時間は無いし、何よりそのままゲームの世界に入っていけるような作りにしたかった。

ただ、このやり方だと音量調整みたいなメタ要素の介入余地が無くなってしまうのが課題。
これは雰囲気を向上させるための手法なので、違和感なくメタ要素を組み込むには更なる工夫が必要だったりする。
今回は音量調整の実装ができなかったから関係ないけど。

プレーヤーに"気づき"を提供する

ゲーム中に新しい発見があったら楽しいじゃないですか。
だからそういう発見をしてほしくていくつか隠し要素を実装していたのです。
結果は大失敗でしたが。

その1:ドラッグをキメると画面外から斬撃できる

本来ならゲーム中のマウスの座標ってゲーム内の範囲でしか認識してくれないです。
しかし、ゲームの画面内でクリックしたままであれば、なんと画面外にマウスを持って行ってもゲーム側でマウスの座標を認識してくれるのです。
unityの仕様なのかWebGLの仕様なのかunityroomだからなのかはわからないけど。
これは気づかない人の方が多かった印象。そりゃそうか。
これを使うことによって爽快感が増し、クリアタイムも大幅に縮まるのだが、逆にこれを知らないと思うように斬撃が出せなくなってしまうので、操作感に不満が出てるようにも見受けられた。
斬撃が上手く出せなければ面白さも半減してしまうので、その分評価が低くなってしまったのだと思う。

「知ってたら面白い」は「知らなきゃつまらない」とイコールになってしまうので、そこをもっと意識する必要があった。

その2:このゲームは成功と失敗の2パターンが存在するマルチエンディングであるということ

実はこのゲーム、マルチエンディングなのである。
まずは本ゲームの紹介文に書いてある伏線をどうぞ。

◆戦闘場所の特徴
今回は周囲に簡易な結界を張っていますが、あまりにも重い一撃を繰り出すとスライムは結界をぶち破って外に逃げてしまいます。
全てのスライムを外に逃がしてしまうことはまず無いとは思いますが…、念のため気を付けてください。

世の中の成功には必ず失敗はつきものである(唐突)
スライムのHPを0にして倒すことが成功なのだとすれば、
スライムのHPを0にできなかったらそれは失敗になるだろう。
失敗したときのルートだって当然存在するのだ。

…と言いたいところだが、なんとこのゲーム、普通にプレイしていたら絶対に失敗しないのだ。
失敗するためには、先述したドラッグをキメた上で狙いすました斬撃を繰り出していくことが必須なのだ。

そこまでしてどうして失敗を求めるのか、果たしてそれは本当に失敗なのか。
それはプレイしてみればわかるかもしれない…。

…とここまで壮大には書いたものの、実際の変化はランキングとツイート文が切り替わるくらいです。
特別な演出とかがあるわけでもないので、そこは期待しないでね。

…というわけで、到達条件が非常に厳しかったというのもあり、
自分からネタバレツイートするまで誰にも気づいてもらえなかったですね。

ネタバレした後に到達した人は観測範囲内では一人だけでした。神様かよ。

数百個のゲームが同時に投稿されるような環境では、気づかれる前にブラウザバックされてしまうのが普通だと思うのでまあしょうがないという感想。
気づいてくれればうれしいけど、気づかれなかったら悲しいよね。

備忘録

今回のunity1weekに参加して、unityのことが何回も嫌いになりました。
今までが10回くらいだとしたら今回は100回くらい。
ここまで読んでくれた人がunityのことを嫌いにならないように、直面したバグとその対処法について共有出来たらと思いました。
根本的な解決はできてないけど。

開発中に発生したバグ:当たり判定が発生するまでに時間がかかる

本ゲームの肝である斬撃は、マウスを大きく振りかぶるほどより広く強い一撃になるのだ。
しかし、斬撃がある一定以上の大きさになると、当たり判定が起こらないまま所定時間が経過しオブジェクトが消えてしまうという事態が発生した。
原因が一切わからなかったため、デバッグで確認してみようと斬撃の発生フレーム数を伸ばしてたら、直った。
unityの当たり判定が内部でどういう処理してるかは全然わからないので憶測ですが、生成されてから実際に当たり判定が発生するまでに時間差があったりするのだろうか?
それともオブジェクト管理とかせずに生成毎にInstantiateしてたのが影響してる?
原因は全くわからないけど、画面を覆うような当たり判定を生成後0.2秒で消去する方法だとうまくいかないことがあり、1.2秒なら大丈夫ということだけはわかった。

他にも直面したバグと対応法についてもう少し共有しようかと思ったのですが、最近GitHubでソースコードを公開する流れがありまして…。
そこではツヨツヨなクリエイターたちがツヨツヨソースコードを公開してくれています。
私が直面したバグは、配列使わずにスライム生成してたらバグで無限に生成され続けてクラッシュした→配列使ったら解決したっていうレベルなので、
最初からツヨツヨコードで学んだ方がいいと思います。

unity1week共有会

unityのことが好きになるような知見が集まるイベントも開催されてます。私が執筆しているついさっきまで以下のイベントが開かれていました。

ツヨツヨなクリエイターたちのがどうやってゲームを作っているかを聴ける貴重な機会なのでまだ見てないという方は見た方がいいと思います。
彼らがい続ける限り自分が永遠のunity初心者と思わされるような内容が濃い発表ばかりでしたが、見て損はないと思います。

感想とか

今回のプレイ時間の目安ですが、ドラッグをキメたテクニックを使っても
1秒を切られることは無いと思ってました。
1秒を切ってしまったら過去に「逆」のお題で作った「トリバース」の二の舞になってしまうので…。

「トリバース」で遊ぶ
https://unityroom.com/games/torireverse
※このゲームでのランキング勢のほとんどは1秒未満でクリアしている

ところが、公開してものの10分で1秒未満クリアがされてしまいました。
/(^o^)\ナンテコッタイ
スライムのHPを100万じゃなくて1000万にしておいてよかったと思いました。
いや良くはないが。

さて、ランキングが公表されたときの順位は以下の通りでした。
※現時点では変動してる可能性があります
楽しさ :3.973(43位)
絵作り :3.630
サウンド:3.562
操作性 :3.945(33位)
雰囲気 :3.534
斬新さ :3.630

今回のゲームは楽しさと操作性を重視して開発したので、その結果がそもまま現れてくれたことは良かったです。
しかし、先述した通り、遊びを見つける喜びをユーザーに託し過ぎてしまっていたので、楽しさを感じる前に辞めてしまう人も多かったのではないかと考えています。
楽しさを伝えるためのプロモーションをもう少ししっかりしていれば、順位ももう少し上がっていたかもしれないのが悔やまれます。

最後に

ここまで読んでいただきありがとうございます。
投稿が遅くなったのは、ずっとクラフトピアやってたからです。
とはいうものの実執筆時間は10時間くらいなのか…?
しかしクラフトピアをやってると、自動化とかが全然うまくいかず、ゲーム内の設計すらうまくいかないのか…と悶々としてます。
最近はずっとゲームを遊ぶ方ばっかなので、そろそろ開発の方も進めていきたいところ…。

いのちの輝きくん?あれは気づかないうちにSAN値が削れてたので没です。
「SplitMatter」も仕様を変えればなんとかゲームとして成り立ちそうな気はしてるけど、開発優先順位としては…。ハッシュタグを使ってしまっているけど…。
他にも作りたいゲームは一杯あるし…。

あ゛あ゛あ゛あ゛あ゛時間が足りなさすぎる!

時間の使い方を考えていく必要がありそうだ…。


ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ーーーーーーーーーーーーーー

…ゲームの画面外にマウス座標を持っていく行為を「ドラッグをキメる」と称するの、個人的にかなり気に入ってるので広めていきたい…。

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