unity1week「回男」誕生秘話
タイトル詐欺です。
はじめに
前回の「Unity1週間ゲームジャム(通称 unity1week)」では連動キャンペーンにより、振り返りを残すいい機会を頂きました。
折角ですので今回も残しておこうと思います。
今回の unity1week では『回男』というゲームを作りました。
プレイはこちら↓
開催告知~お題発表
今回 naichi さんの開催予告を見て、仕事が忙しいタイミングと重なっていて時間が取れなさそうということが分かっていました。
しかし、それなりに継続して参加させて頂いているので、何でもいいから出したいな、と思ったことを覚えています。
そんな事情もあって、なるべく簡単なゲームを作って出そうと考えました。
それに合わせ一つ今回の狙いを持ちました。
「リプレイ性を高める」です。
これは言うまでもなく容易なことではないでしょう。
そもそもゲーム自体の面白さ・飽きにくさが必要ですし、繰り返し見たくなる演出だったり、複数の攻略手段の提供だったり、導線の置き方だったり、次のプレイでどうすればよりうまくいくかが伝わるゲーム性など、ありとあらゆる観点から多くの制作者が模索・研究していることだと思います。
今回私が考えたのはそういう深いことではなく…。
ただ一つ、今まで unity1week で様々なゲームを遊ばせて頂いて分かっていることがありました。
1 プレイ時間が短いと繰り返し遊んじゃうよね、っていう。
ですので「長くても数十秒くらいでサクッと終わる」ゲームを作る、ということを意識しました。これなら必然的に実装は軽めでしょうし、テストの負担もかなり抑えられるはず。
そして来る 2 月 22 日、発表されたお題は「回」。
「回る」や「回す」ではなく「回」一文字ということで、とても広がりのあるお題だと思いました。
ゲーム制作:アイデア出し
例のごとく連想ゲームをしました。
回転、旋回、回る、回す、回数、前回、今回、次回、巡回、回遊、回帰、回虫、周回、目が回る、焼きが回る、頭が回る、回りくどい…。
地球、惑星、寿司、独楽、風車、扇風機、レース、ループ、フィギュアスケート、絶叫マシン…。
あとは「回」という文字自体がもつシンプルで図形的な形をテーマにするのもいいか、と思いました。
一旦深く考えず、実装できそうな範囲でゲームになりそうな案をいくつか出してみます。
①マウスをくるっとドラッグしてコマを回すゲーム
②判定ラインが回る音ゲー
③ブロックを回転させて消す落ちものパズル
④恒星を操作して惑星をぶつけ合う対戦ゲーム
⑤色々な大きさの口を並べたり重ねたりするパズル
⑥回の形の通路を壁にぶつからないように周回するアクション
このくらいの案が出た段階で、完成形が比較的明確で実装しやすそう、かつ 1 プレイが短くなりそうな⑥の方向でいくことにしました。
90 度方向転換するだけのシンプル操作にして、あとは徐々に移動スピードを上げるか通路幅を狭くしていけば何とかゲームにはなるだろう、という目論見です。
ゲーム制作:実装
ゲームの核となるロジックはすぐに実装できました。
まぁクリックしたら方向を変えてスピード上げるだけですからね…。(通路幅を変えるのは面倒という理由で容赦なくオミット。)
移動や当たり判定などの物理部分は Unity にお任せです。
ただ平日中はそれくらいしか進められず、これはヤバいと思いながらもちゃっかり睡眠はしてました。
金曜の夜に少しでも進めようと Cube をこねくり回して「回」型のステージを整形していたのですが、これができていました。
まぁ、ダメでしょうね…。
とにもかくにも土曜日が本番でしたので、モンエナをがぶ飲みしつつ、せっせと残りの作業をした感じです。
これほどシンプルなゲームであってもやることって沢山あるんですよね…。毎回、参加後に実装資産を整理しているのですが、それがかなり助けになりました。
ゲーム制作:実装+
ゲームを見ての通り、特筆すべき実装はないと思いますが、2 点ほどチャレンジがありましたのでそこだけ。
■カメラ演出
Cinemachine を使いました。
趣味程度に試したことはあったのですが、ゲームに組み込んだのは今回が初めてです。
実際に使ってみた感想としては、いやこれめっちゃ便利…という感じです。
特にブレンドが強力で、なんかよくわからんけどイイ感じの動きになります。
ある程度カメラが動くゲームなら積極的に導入していいと思います。
今まで Cinemachine はパラメータが多くて面倒そう…と敬遠していたところがありました。加えて Unity はデフォルトで便利な API が多く、自前でカメラ挙動を実装するのがそこまで大変ではないというのも手伝って、まあいいや、となることもあるんじゃないかなと思います。私はそうでした。
ただ「必要十分なオレオレカメラ作ったぞー。」と喜ぶのも束の間、後々ブレンドや障害物回避、揺れ演出、ズーム制御などなど、結局欲しくなって追加実装するなんてこともあると思います。
そういった諸々が当然のように一通り入っているのが嬉しいです。
こちらの記事で分かりやすくまとめられており、お世話になりました。
■砂煙表現
走っている感じを出したいなーと思い、テラシュールブログさんにメッシュパーティクルによる砂煙表現の記事があったことを思い出しました。
今回はこんな感じのパラメータにしています。
ゲーム制作:躓き
2 点ほど躓きがあったので、備忘録代わりに共有します。
■ゴースト衝突
テストプレイをしていて、割と理不尽な当たり方(壁スレスレを横切っている途中と思われる位置で爆散)をすることがあり、悩みました。
各設定を見直したところ、回男の Rigidbody の Collision Detection を Continuous Speculative にしてました。このゲームで動体同士の判定は不要なので Continuous でいいはず、と変更したところ起きなくなりました。
後で調べたところ、Continuous Speculative にはゴースト衝突があるようです。完全にコレですね、勉強になりました。
■WebGL における Video Player
タイトル画面に動きを付けたくて、背景用にフリーの動画素材(mp4)をお借りしようと考えました。
Video Player で実装し、エディタではいい感じだったのですが、ビルドしたら何も映らず。
調べてみたところ、WebGL では Video Clip が使えず、代替手段として StreamingAssets から読み込む方法の記事があり、そのおかげで再生自体はできたものの、別の問題が 2 点ほどあり結局断念しました。
1. ユーザーの入力があるまで再生されない(環境がある)
サウンドと同じ話ですね…。(参考:Safari, Chromeの自動再生ポリシー変更のまとめ)
2. なぜかフォントの描画が崩れた
メモリの問題でしょうか?当環境(unityroom ではなくローカル)で再生中に同画面内のフォントが崩壊しました。
(先ほど知ったのですが、そもそも現状 unityroom は Video Player での動画再生は難しいみたいですね。)
おわりに
ここまでお付き合い頂きありがとうございました。
今回は本当にごくわずかながらバカゲーに足を突っ込んでいるという説があります。「いや、草」程度に思ってもらえたら、それだけで御の字です。
結局当初の狙いであったリプレイ性ですが「長くても数十秒くらいでサクッと終わる」ゲームを作るという意味では OK だと思います。
ただ、それが本当にリプレイに繋がったのかは、特に評価手段を講じていなかった落ち度もあり、いまいちわからないところです。
そんなときにもありがたいのがコメントや配信…!
何回か遊んで下さった方もおられるようで、救われました。
この場を借りて皆様に御礼申し上げます。
あ、配信と言えば、回男のスピードには上限がなく加速度的に難しくなっていくため、頑張っても 900m 程度が限界だろうという設定のはずでした。
いや、草。
(まっともぉん (@matsu_friends) さんも、プレイありがとうございました!)