がむしゃらメモ

がむしゃらのメモ的な扱いのブログです

第12回 unity1week お題「あつめる」に参加した話 ゲーム開発編

2019年7月1日(月)00:00~7月7日(日)20:00に開催された第12回 unity1week お題「あつめる」に参加した話です。開発編。長いのでお暇なときに読んでください。

unity1weekとは、ゲームエンジンUnityを使って1週間でゲームを作ってunityroomに投稿し、みんなで投稿されたゲームを評価しあう3か月に1回くらいの頻度でunityroomで開催されているお祭りみたいなものです。詳しくはググって(丸投げ)。

この記事はそのunity1weekで「マグネパズル」というゲームを1週間で作ったときのことを思い出しながら書いた話です。以下ゲームのリンクです。リンクからワンクリック&ダウンロード不要&PC上で遊べます。https://unityroom.com/games/magnepuzzle

1日目

お題が「あつめる」ということをまず知ります。お題が発表されるのは日付を跨いだ瞬間、7/1(月)00:00でした。発表前にお題は「タピオカ」だと噂を流す人がいたり、お題を知ってアイデアを出してから寝る人がいたり、そのままゲームをプロトタイピングしてしまう人もいたりしたようです。僕の場合、お題が発表される前に素直に寝ました。生活リズムを崩してまで眠たい頭で考えても無駄だろうと考えてのことでした。お題発表をめぐって人によってやり方が違うのが既に面白い感じでした。

1日目の朝はWebGLビルドができないと僕を頼ってくださった方に対し、僕は分からないので他の方に聞いてくださいと無能宣言したり、お題が「あつめる」と聞いてポケ〇ンを作るなどジョークツイートをかまして緊張をほぐしたりしていました。

いつもの日常を過ごしつつ、ぼんやりとゲームを考案していきます。あつめるといえば塊〇。塊〇のようなシステムで武器をあつめるのはどうか。武器をあつめてどんどん自機が強化されていく全方位シューティング。いや、ありきたりか。あつめてうれしいのはお金、宝石とかだろう。じゃあ、洞窟を掘り進んでダイヤを掘るゲームにしようか。いや、そんなの作れない。思い付かない場合、ランゲームでダイヤを取るゲームにしよう。弾丸を拾い集めつつ先へ進む2Dプラットフォーマーシューターはどうか…

つらつらと考えていった結果、おおよそ次の3つがポイントではないかと考えました。

1.何をあつめるのか

2.どうあつめるのか

3.あつめることが目的なのか、あつめた上で何かをするのか

正確には4つな気がしますが、大体これらがゲームを作る上で重要になってきそうだぞ、と考えました。中でも一番重要なのは「どうあつめるか」ではないか?と考えました。このときの僕は集め方に関して、二通りしか思いつきませんでした。すなわち、「プレイヤーが直接触れて集める」「プレイヤーが引き寄せて集める」の二つです。今回のunity1weekで投稿されたゲームの中には他にも、「キャラ選択をして集める」「レールを切り替えるなどしてオブジェクトを特定の位置に集める」「シミュレーションゲームで人間や資源を集める」なんかがありました。自分の発想力不足を実感…

今回僕は「プレイヤーが引き寄せて集める」の集め方に着目しました。引き寄せる…引力…磁力?磁石を使おう!磁石のS極とN極で引き寄せてダイヤをあつめる…ぼんやりしたイメージの脳内プレイが何となく楽しそうです。実現の可能性は…ごり押しプログラミングで行けそうな気がしてきます…よーし、これをプロトタイピングしよう!

ガチャガチャとキーボードを叩き、温厚なプログラマーが見たら助走を付けて殴ってきそうなコードを書いていきます。そんで出来たのがこれ。

左右の矢印キーで向きを変え、スペースでN極からはN極を引き離し、S極を引き寄せる磁力が出て、S極からはS極を引き離し、N極を引き寄せる磁力が出る。どんなコードかざっくり説明すると、磁石の向き全4パターンに対応する変数を用意して0なら上にS極、下にN極。1なら右にS極、左にN極…という風に作ります。そして、磁力をNとSそれぞれ上下左右4パターン分用意します。計8パターンですね。最後に、磁石の向きと当たった磁力の種類と向きを照合して動きを決める、という風に書きます。「右向きのN極の磁力が右にS極、左にN極の磁石に当たったら磁石は右に飛ぶ」みたいなコードを逐一書きました。これは、数学で言えば1+2+3+4+…9+10は?という問題に対して全部馬鹿正直に一個ずつ計算していくようなものですね多分。数学はいつも成績が悪かったです。小学校からやり直せ。良いもーん。ちゃんと動いてるから良いもーん。自分がプログラムの真似事をしている猿ということを実感しつつ1日目が終わりました。

2日目

「このゲーム、面白く無くね…?」という疑惑が生じてきます。理由は明白で、プレイヤーの取れる選択肢が少なすぎるからです。向きを上下左右決めて磁力を放つだけ…これで面白くなる気がしませんでした。

また、プログラミングの問題も発覚。磁石は衝突した時点の座標をRoundToIntで丸めて整数にする仕様にしていたのですが、これだと二つの磁石がお互いを引き寄せる動きをする際、間隔が奇数だと二つの磁石がくっついて一体化してしまうことに…この問題を解決すべく座標が.5に近ければ.5に、整数値に近ければ整数にするプログラムを頑張って組みました。が、.5でくっつけば今度は別の状況が生まれることに気づき、結局一体化する問題は解決しませんでした。プログラムを組む前に気づけ。

頑張って組んだプログラムを放棄して時間を無駄にしつつ、2日目が終了。

 3日目

迷っていた仕様を固めることに。まず、磁石を引き寄せている間は磁石を操作できないことにしました。引き寄せ中に回転させることができれば、選択肢の幅が広がって複雑なパズルが作れそうではあったのですが、アクション性が増すのはよろしくないと考えてボツに。また、引き寄せ中に回転させてくっつくときの向きを変えられる=引き寄せに時間をかけるということになるので、これではテンポが悪くなってしまいます。

というわけで、一手ずつ行動を決めるパズルゲーム、という方向性で作っていくことに決定しました。また、磁石が集まる様が既に良い感じのような気がしたのでダイヤを集めるのは無しに。更に、奇数間隔で引き寄せ合うと一体化してしまう問題は偶数間隔でのみ配置するという力業で解決を図ります。ここでレベルデザイナーぼくがプログラマーぼくを撲殺!

 操作説明テキストなんかを作ったりして3日目を終える。

4日目

仕様を決めたはいいが、本当にこれで面白くなるの?と不安になり出すディレクターぼく。しっかりしろや。

 ギミックブロックを作って4日目完。何やってたかほとんど覚えてない。ちゃんと進捗管理しろやプロデューサーぼく。確かこの時点ではステージは最初の2,3個だけだったはず。

5日目

この辺りから音を作り始めたはず。頑張って作曲をしていました。参考にしたBGMはハナノパズルVer1.000というパズルゲームです。ちなみに大分前に遊び始めてまだクリア出来てません。レベル47難しすぎ。

 4日目終わりに作ったギミックブロックを応用してN極またはS極だけ持つ磁石を作ったりもしていたはず。ただし、勿体ぶって進捗には載せませんでした。無意味。

※音が鳴ります。音量注意。

BGM付けたりクリア時のテキスト作ったりとかしました。お題の「あつめる」感がないことに気付いたのでクリアテキストを「あつまった~!」などといって小細工を弄したりして5日目おしまい。

6日目

※こちらも音がでます。音量注意。

 確かこの時点ではステージは10個くらいだったはず。この日は頑張って捏ねくり回して2ステージ、といった悲惨な成果が上がっていました。一応頑張った分、ゲーム中で一番難しいパズルが出来上がりはしたのですが…ステージ作りに行き詰まってBGMを弄るなど、現実逃避をしていました。シーン遷移処理やリトライ処理はこのときに出来たはず。6日目が終わる。

7日目

最終日です。「青と赤のギミックブロックを教えるステージ」「青と赤のギミックブロックを使う少し難しいステージ」「ブロックを途中で曲げるステージ」といった風にテーマを決めて作っていきます。すると意外とスムーズにステージを作ることが出来てきます。ただ、それでもボリュームたっぷりとはいきません。ボリュームは少なくて良い…!と開き直りステージの並びを考える最後の大詰めに移りました。最初は磁石が飛んでいかない構成にして…次は順番考えないと飛んでいくようにして…磁石同士でくっついたり引き離したりすることを教えて…とチュートリアルや難易度を考えてステージを配置していきます。ここで、いくつかチュートリアルステージが足りていないことに気付きます。「起動している磁石がくっつけば磁石を起動させられることを教えるステージ」という風にテーマを決めて作ろうとすると、こちらも割とサクサクとステージが出来ます。やはりテーマを決めるのは大事だなと実感した瞬間でした。最後は「綺麗にあつまって気持ち良くなるステージ」を作り配置して開発終了。WebGLビルドもエラーを起こすことなくいつも通り完了し、unityroomのサムネ用のGIF画像も慣れた手つきで撮影出来ました。もう4回目なので、手慣れたものです。ただ、投稿するときは初めてゲームを投稿するときよりも緊張した気がします。

 これにて完成。無事着地出来て良かったー。なお、テストプレイ時点で矢印キーとスペースを同時に押すと磁力を放つと同時に向きを変えられてしまうことが判明しましたが、見なかったことにしました。よい子はマネしちゃダメですゼッタイ。

その後

unity1weekは開発期間が終了し、投稿されたゲームの評価期間に入り、みんなが投稿されたゲームを遊び始めます。「マグネパズル」も色んな人に遊んでもらいました。コメントもいただきました。2作目3作目でも言われた、「ステージセレクト機能が欲しい、ステージ数を教えて欲しい」という要望をいつも通り言われてしまいます。まるで成長していない…また、今回も言われてしまったこととして、「難しい」「クリアできなかった」というコメントがありました。もっと難易度調整を上手くできるようになってパズルゲーム苦手な人が遊んでいる内にパズルゲームが得意になるような、遊んだ人のプレイングスキルが引き上げられるようなゲームが作りたい。

ただ、基本的に皆さんお優しく、「面白い」「シンプルで良い」「意図しない方向にすっとんで行くのが面白い」「BGM良いね」などなど、温かいコメントの数々をいただきました。ありがとうございます!BGM褒められたの嬉しい~!4作目にしてついに作曲が出来たー。他にも海外のフリーゲームを紹介するサイトさんに紹介してもらったりもしました。そのサイトさんに僕のゲームを取り上げてもらえたのは2回目です。ありがとうございます。英語でお礼言うべきかな?とか悩んで結局出来てません。英語力ゼロ。やはり小学校からやり直すべき。

他には、評価期間中に他の人が投稿されたゲームを遊んで気付いたのですが、ボリュームが無いと思っていた僕のゲームはむしろボリュームがある方でした。ゲームジャムにおいてはサクッと遊べるゲームが求められるのかも…?

果たして評価期間も終わり、投稿された全355作品の中から総合評価TOP30、各部門評価TOP30が発表されます。「マグネパズル」は…?

 なんと総合13位。投稿された他のゲームと比べると無駄にボリュームのある上に地味なパズルゲームなのにTOP30入りしたのはとっても意外で嬉しかったです(まあここからは落ちるだけでしょうが)。

なんとなく、今回の順位が僕の取れる最高順位なんじゃないかなーと思っています。今後これ以上のゲームが作れる予感がしない。今回「マグネパズル」のアイデアを思いついて実現できたのはすごく運が良かったなという感じです。

評価期間中の話、ゲーム評価編も書こうかなと思っていましたが、期間中に精神を病んでいて9割暗ーい話になりそうなのでやめておきます。なのでタイトルにゲーム開発編と書きましたが、ゲーム評価編とかありません。タイトル詐欺。さて、そろそろ締めの言葉を…

今回のunity1weekにご参加の皆さん、お疲れ様でした!

「マグネパズル」を遊んでくださった皆さん、ありがとうございました!

unityroom運営者およびunity1week主催者のnaichiさん、ありがとうございました!

そして、この記事を読んでくださったあなたにも感謝を。ありがとうございました。