This post is written in Japanese.
今月も Unity 1週間ゲームジャムに参加。
物理エンジン系のお題が来るだろうと予想していたら、まさかの「夏」。
僕は無難にスイカ割りを選んだけど、最終的に多様な作品が投稿されていて、参加者の発想力に驚かされた。
FruitSamurai
構想の段階からメッシュ切断を考えていた。
スイカを斬るゲームということで有名スマホゲーから連想して、FruitSamuraiという名前でプロジェクトを作成。
この時点では似ても似つかない3Dアクションゲームになる予定だったので洒落で名付けたんだけど、要素を削ぎ落していくうちに最初から寄せていったかのようなゲームになってしまった。
ちなみに僕はスイカを果物だとは認めていない。
FixedUpdate vs Update
今回の個人的サブテーマは物理エンジンを使わないこと。
いや、まあ多少は使うけど、ゲームの根幹を deltaTime ベースで実装してみたかった。
FixedUpdate() は1フレーム(1/60秒)あたりの呼び出し回数が一定でなく、Update() もフレーム落ちの可能性がある。
二者の混在で考慮すべき点を探るのが目的。
ゲーム中、明らかに包丁が通過したのに斬れないスイカがあるのはおそらくこの辺が絡んでいる。
未解決かよ(ツッコミ
Raycastが「当たってない!」と言うものをどう調べたらいいのか…
中間ランキング
プレイヤーの多くはランキングにそれほど興味がない説。
自分のスコア登録をしないだけでなく、そもそもランキング画面に遷移すらしていないのではないか?
という仮説から競争心を煽る仕掛けとして実装してみた。
序盤なら運よく1位を取れたりもして上位を狙うモチベーションになればと思ったけど
ゲーム中は見てる余裕なかった
逆に中間ランキングを表示したせいで、通常のランキングに遷移しない=スコア登録されないという懸念が増えた。
演出
一応、締め切りまでにゲームとしての完成には漕ぎつけた。
ただ、素のキューブで素のスフィアを斬るという残念なビジュアルで、当初の構想にあったメッシュ切断も未実装。
スフィアをキューブで割る夏があってもいいじゃないか(居直り #unity1week pic.twitter.com/7aDRGtjxVJ
— myotoxi.com (@myotoxi) July 29, 2017
潔くこれが1週間の成果と割り切って次回頑張るか、さらにもう一歩踏み込んで経験を積むか。
夏休みの宿題は最終日にちょろっと手を付けて残りは諦めるスタイルだったけど、今回は気まぐれで後者を選択。
メッシュ切断には Dustin Whirle さんのコードを拝借。
https://github.com/BLINDED-AM-ME/UnityAssets
Unity の Sphere だと頂点数が多すぎて余裕でフレーム落ちしたので、Blender から Icosphere をエクスポートして利用している。
スイカのテクスチャは GIMP で自作、包丁はフリーの3Dモデルを使わせてもらい、BGM は Launchpad で作成。
結果、ゲーム内容はまったく変わらないのに明らかに面白くなった。
メッシュ切断が気持ちよさに大きく貢献している。
盛り付けを軽視しているつもりはなかったけど、ここまで変わるとは思っていなかった。
まとめ
今回も多くの学びを得て、今後のゲーム制作に生かせそう。
主催者さん、ほかの参加者さん、プレイヤーの皆さんに感謝。
次のお題は何になるのかなぁ。