このホームページは、IPUTの学生によって運営されています。

「ケーキスマッシュ」の開発で得た知見

GamePit Tokyo 2024 に応募したゲーム「ケーキスマッシュ」の、開発知見です。

ケーキを食べられない主人公がケーキ工場に侵入して、警備員から隠れながら、朝が来るまでになるべくたくさんのケーキを壊すというゲームです。

開発期間は約1か月半です。

>>> [ゲームはこちらから遊べます!]

 

開発ー開発環境の作成

Git Hubを用いてデータの管理や共有を行いました。特に「Git Hub Desktop」が、グラフィカルに操作できておすすめです。競合を防ぐために、

                エディタ上では、それぞれの作業ファイル内で作業を行う

       スクリプトには全て名前空間を用いる

                 作業時はSlackで報連相する

を徹底しました。(それでも頻発する”Merge Conflict”の文字...)

アイディアはみんなで出し合い、開発中にもどんどん仕様変更が行われました。

全員Slackでのレスポンスが速い

開発ーゲーム開発

最初は、ケーキを生成して流すプログラムから始めました。なぜならこれがゲームの根幹の仕様であり、加えてプログラムが難しそうだったからです。後回しにしないことはとても大事です。

ゲーム内の定数は基本的に、Scriptable Objectで管理しました(個人的にすごく布教したい。ぜひググってみて…)。特にケーキのモデルを入れ替えるとき、ケーキに関わる20個位の定数を全て調整し直す必要があるのですが、そこで大活躍してくれました。もちろんゲッタのみを実装して、読み取り専用にしています。

ケーキの弾性表現、これは苦労しました…。

最初は「NVIDIA FleX for Unity」を用いていたんですが、オブジェクトの内部に球を詰め込むという事で、結構重いです。また、これは実はもう公開されていないので、有志がGit Hubで公開していたものをゲットしたのですが、挙動がよく分からん!

…ということで「別に弾性表現、なくてもいいかな~」となっていたのですが、偶然にも、「YouTubeで公開されていた研究を発見→参考にしながらC#スクリプトにして理解→改造」という流れで実現できました。アルゴリズム的には、Meshを変形させる機能をしこんでいて、動作も軽いです!

クリームのしたたりと画面のボケ、これはシェーダーを書いて実現しました。一応デメリットとしては、まず表示限界があったので、部屋のサイズなどを調整し直す(今後も部屋のモデリングは何回か変更しています)必要がありました。次にプロジェクトをURP(プロジェクトを作るときに出てくる、URPとかHDRPとかのことです)に移行する必要があったのですが、当然マテリアルがことごとくバグり、設定し直しになりました。ただ、正直あまりたいしたデメリットではなかったです。ちなみに、FOV(被写界深度)を用いることでシェーダを書かずとも簡単に”ボケ”を作ることができます。

ケーキとイチゴ、警備員のモデルは、mayaで作ったものをfbx形式に変えUnityに取り込みました(大きさが変わったりという問題はあったのですが、Unity側でメッシュのスケールを調整して対応しました)。警備員はイラストレータでパスを作成、mayaに入れています。

警備員はアニメーションなども用いています。実は警備員のライトが机の下から漏れ出るというのは完全に偶然の産物です。みんな「これいいね~」となったので、そのままにしました。

カメラの動きは、スクリプト上で三角関数をゴリゴリに用いています(イベントが終わってから知ったのですが、「Slerp」を使えば簡単にいけたみたいです…)。

意外と盲点にはまった点なのですが、unity上でオブジェクトの中心を変更する方法を誰も知らない、みたいなこともありました。ぱっと思いつくのは空のゲームオブジェクトを親にする、とかなんですが、CenterモードとPivotモードを切り替えられることを誰も知らなくて、少し嵌まりました。調べてみたら、あっさり解決しました。

設定項目を実装しました。PlayerPrefsを使っています。特に工夫した点は、「部屋の明るさや音量の変更で、フィードバックを得られるようにした」という点です。

また、これらを変更するスライダーは、対数目盛になっています(「ヴェーバー‐フェヒナーの法則」というものがあるらしいです。音量については、Audio Managerでデシベルを変更しているので、あまり意識はしていないです)。

左利きにも対応しました。我々が言うのもなんですが、結構いいアイディアだと思います。

難易度も実装しました。スタミナの扱いが難しかったので、イージー・ノーマルではスタミナ管理の必要はありませんが、ハードではスタミナ管理が必要になります。ちなみにハードですが、「ケーキを最速で壊す、かつ1ミス以下」でないとクリアできません(その分ノーマルよりはゲーム時間を短くしています)。

最後に追加した設定項目は、「ノルマの達成回数(=ケーキを全部壊した回数)」です。当日盛り上がるかな?という思いで追加しました。ちなみにゲーム内でこの数値をリセットする手段はありません。

開発中に時々、ゲームのFPSが低下してしまうことがあったのですが、おそらく電源ケーブルをつないでいないと、Unityの処理速度が著しく低下することが原因だという事が判明しました。

イベント後に気が付きましたが、スライダーの子にテキストを入れたせいで、クリック判定がテキストにまで及んでしまっていました。

開発ーイベントへの応募

もともとは、クリスマス用に2週間位で作るのが目的でした。それで完成の目途が経ってきたころ、チームメンバーがとあるイベントを紹介してきました。それが、我々が1/20㈯に参加した、「GamePit Tokyo 2024」です。なんと締切まであと1日しかなかったので、それはもう急ぎに急いで先生に話を通し、無事参加申し込みできました。

先生から頂いたアイディアで、ボタンを自作し、フットペダルも使用しました。当日もこのおかげで大変盛り上がり、「ゲーム制作」という概念に対する視野が広がりました(ついでにゲームのスコアも、ポイント制から割合制に変わりました)。

ボタンの製作では、はんだ付けやモノラルプラグ、ファストン端子を用いた配線組みを行いました。秋葉原にある千石電商 ラジオデパート店さんへ遠征に行き、100mmドーム型プッシュボタンなどを購入しました。ボタンの土台は、衝撃を吸収でき、かつ摩擦力があり、かつ成形しやすい、発泡スチロールブロックを採用しています。島忠ホームズ 中野本店さんに感謝です。

入力の受け取りは、「Input Systemで、ゲームとXboxコントローラーを紐づける→端子を指し、Xboxコントローラーとボタン・フットペダルを紐づける」という流れで実現しました。

ゲームタイトルは、結局最初に決めた「ケーキスマッシュ」がそのまま正式名称になりました。

また、クリスマスはとっくに過ぎていたので、世界観についても修正を加えました。

開発は結構余裕を持って進み、イベントの1週間前にはもう完成していました。

広報も色々やりました。英語の授業で作ったYouTubeチャンネルにPVを投稿したり、先生にお願いして「ゲームライターコミュニティ」というサイトに記事を掲載してもらったりしました。

当日ー設営

当日は、イベント開始の1時間位前に設営を開始しました。デュアルモニターでPVをループ再生したり、ゲームのクリア者の名前をパワポで表示させたりと、当日行ってみないと思いつかなかった工夫が色々ありました。

会場は結構うるさかったので、設定で音量を変更できるようにしておいて良かったと、改めて感じました。開発時と比べて、15デシベル位大きくしました。

当日ーいざ、イベント開始!

トラブルが多発しました。まず、ボタンが叩かれた衝撃で、緑のボタンのファストン端子が外れました。設営時に配線の仕方を教えてもらっていたのでなんとかなりましたが、結構肝が冷えた瞬間です。

次に、ハンマーを拭くためのアルコールシートを完全に忘れていました。幸い、チームメンバーがいつもおしりふきとゴミ袋を携帯してくれていたので、そちらで代用しました(ゾンビのゲームを作っていたチームは、最初から既に持っていました。用意周到ですね)。

パソコンが熱暴走しました。幸い全員、パソコンを持ってくることにしていたので、急遽他のメンバーのパソコンに変更することができました。

外国の方もかなり多かったです。幸いタイトル画面に全ての情報が詰まっていたので、世界観の説明などでとても重宝しました。

接客には大いに自信あり!プレイしている方と一緒に、ブースのメンバー全員で盛り上がったりしました。

イベント後の懇親会で、名刺を配りました。前期の授業で作ったやつです。用意周到なのはいいことですね。

そして、懇親会にて、来場者投票の結果が公表されました!

                <<<19チーム中3位>>>

大勝利です!しかも、1位と2位は主催側の大学のチームだったので、「実質1位」といっても過言ではないのではないだろうか。

当日ー自チームの振り返り

ケーキは上から壊すという認識を持っている方がいました。上のケーキを叩いたら、「叩くのは下から!!」というテキストを表示するのがいいかもしれません。

ケーキが黄色い四角の内部に来ないと壊せないことが、伝わりにくい場面がありました。上部にライトを置き、その下に来て初めてケーキの色がはっきり見えるようにするのがいいかもしれません。

なぜケーキを殴るのか分からないという方がいました。寿司のゲームのチームがやっていたように、ゲーム開始時に世界観を示した方がよかったかもしれません。

ケーキは机に落下してからでないと壊せないということが、分からなかった方がいました。ケーキが机に落下したら、ボタンを光らせるのがいいかもしれません。

しゃがみをキープするためにはフットペダルを踏み続ける必要があると、分からなかった方がいました。ゲーム開始時に、軽い操作説明の動画があってもいいかもしれません。

ハンマーを長時間持ち続けると、手が痛くなってしまう方がいました。ハンマーの持ち手に、布を巻くべきかもしれません。

多くの人にプレイしてもらうためには、ゲームの回転率が高くあるべきだと感じました。我々のゲームは1プレイの時間が決まっているので、相性が良かったと思います。

ゲームのクリア者の名前をパワポで表示させていたのですが、「ケーキスマッシャー」としての会員証のようなものを作って渡せば、よりクリアした特別感を感じてもらえると感じました。

当日ー他チームの分析

PCとコントローラーがほとんどでした。他にはiPadが1チームいて、我々と同じことをしているチームはいませんでした。ゲームエンジンの外に目を向けるのは、やっぱり盲点ですよね。アドバイスをくださった先生に感謝です。

コントローラーを使っていたチームは、コントローラーの振動などもうまく使っていました。その発想はなかった…!

パソコンを使っていたチームは、プレイする高さに意識が向いていない印象でした。しゃがんでやろうにも立ってやろうにも、微妙に辛い体勢を強いられてしまいました。椅子を1脚、置いておいたほうがいいのかもしれません。我々は腕を振り下ろすという事で、幸運にもちょうどいい高さでした。

チームメンバーが特に輝いた場面

安部純正(プログラマー):弾性表現、シェーダー作成、ボタン作成、モデリング、人脈が広い

鳥羽大晟(デザイナー) :プロジェクトに関わるデザイン全てを担当

松本惇悠(プログラマー):警備員スクリプト関係全般、接客、プレゼン

森川遥仁(プログラマー):このゲームのプログラムに一番詳しい

inserted by FC2 system