ゲーム化!tomo_manaのブログ

ゲーム化!tomo-manaのブログ

Unityでゲームを作る方法について紹介しています

ホムの店番:見下ろし型店舗経営シミュ×クリッカーアクション開発記(ふりかえり)


作ったゲーム

「ホムの店番」は、いわゆる見下ろし型の店舗経営シミュレーションです。

一般的には十字キー操作のゲームが多いジャンルですが、「ホムの店番」はクリック操作だけでプレイできます。とにかく時間内に多くクリックするという意味では、ある種クリッカーとも言えるかもしれません。

ゲーム画面

作ったゲームはunityroomで公開中です。以下は簡単なゲーム紹介です。
tomo-mana.hatenablog.com

※本編サイト(作成中)

開発動機

「ホムの店番」は、現在開発中のゲーム「プロジェクト・ソラリス」本編に移植できるゲームをunity1week期間で作ってみたい、という動機から開発がスタートしました。

事前に構想があったわけではなく、ただ、本編にも組み込めそうなミニゲームで、ゲーム単体としてもサクッと遊べるものを、unity1weekで作りたいというところから、いくつか案出しをしていたところ、純粋に店番をするゲームいいんじゃない?という話になりました。

本編にも、「店番」というイベントがあり、そこで簡単なゲームをしてお金を稼ぐ、という設定があったためです。

(参考にしたゲーム)
store.steampowered.com
store-jp.nintendo.com

工程

開発進捗 3/18(Mon.) - 4/6(Sat.) 3week

結果的に投票期間締め切り3日前(4/3)の完成と、時間ギリギリでの参戦でしたが、何とか完成に持ち込めたことは本当に良かったです。


1) 開発環境の選定
3/18(1日目):使用するアセットの選定(DialogSystem、Topdown Engine を検討)


2) メインループ仮実装→課題出し、方向決定フェーズ
3/19(2日目):メインループ(fungus)+画面/UI(Image) ※Topdown Engineを使おうとしたけど断念。履歴を見ると、キャラ移動まで実装していた。翌日が祝日というのもあるけど、ここまで短時間で組めたのは初めて(fungus、JetBrains Riderのおかげで作業がかなり速くなった)
3/20(3日目):ゲーム性の検証→行動リストが欲しい


3) ゲーム要素の完成(アニメーション・演出)
3/21(4日目)~24(7日目):ゲームを構成する要素の制作(アニメーション、ボタン反応、行動リスト、客、足跡、その他)

この時点で、かなり見せるための要素が盛りだくさんなことに気付く(間に合わない!)


4) モジュール結合、ロジック実装、ゲームメカニクス
3/25(8日目)~4/1(15日目):ゲームループ実装(つなぎ合わせ)

データの在り方、配列変換など、苦手な部分がどんどん時間を奪っていく


5) 仕上げ(付帯画面、レベル調整)
4/2(16日目):チュートリアル、エンディング分岐、ランキング機能など(仕上げ工程)
4/3(17日目):レベル調整、リリース

処理遅延部分を解消し、限界までスピードアップ(ボトルネックをゲームからプレイヤーに)


6) リリース後
4/4(18日目):トリプルコンボ、不具合修正
4/5(19日目):スラつよコラボ
4/6(20日目):不具合修正、要望対応

スラつよ コラボでは、シューさん、こまるさん、ノキアさんチームをずいぶんお待たせしてしまいました。


所感
昨年の11月から JetBrains Rider を使い始めましたが、それまでは1ギミック1日(1.5H)という目算でした。Riderを使うと、API や SerializeField を探す手間が減るので、5分~10分で1ギミック組み切れたりするので、かなり高速化したと思います。

また、fungus を使うことで、ゲームループを自由に組み替え、任意の画面・ステージから実行できるようになり、1回のテスト時間をかなり短縮できてきたと思います。

unityに慣れてきた今、コードを1から組むのがリスクに感じつつあり、実績のあるコードを組み合わせて作れるようになることで、繰り返し開発時の開発初速・納期を短縮できるのではと考えるようになった。

結果

今回はミニゲームの位置づけで、ゲームメカニクスに問題が無いか検証できれば十分でしたが、それでもかなり操作感にこだわって、かつ不具合を潰し込んだ甲斐あって、これまでで一番の成績でした。

総合ランキング(unity1week 2024.3「かわる」)

(私のツイートよりさなきさんのツイートがよりまとまってて、感動も伝わりやすかったので、転載させていただきました)

過去の成績との比較(2024.3)

「人の苦労を買いたがる」という側面がゲームでもあるような気がしました。

締め切り3日前でしたが、多くの方に訪問いただけて、ありがたいです。unity1week出場歴7回目なので、まだ 知名度 はそこまでですが、グラフィックが見た目を引くので、興味を持っていただけた方も多かったのかもしれません。(XでBGMも積極的に流すようにしてました)

3日間のPV

気づいたこと

●初期化タイミングを意識する
デバッグパラメータに関するチェックリストを作る

初期化処理

ゲームには(ゲームにかかわらず)すべてのアプリには複数の初期化ポイントがあり、それらが混同した

開発の大半は探すために時間を使っており、この探す時間こそがリスクであり、高速化できる領域(新規事項を考えることは短縮できない)

どこで初期化するか、は毎回探すことが多く、
結局、どこで初期化が走るかを簡単に把握できることが、爆発的安定感と爆速化を測ることになる
※ホムの店番における初期化ポイント

重要なデータはどこにあるか?

ゲームの重要なデータはどこにあるか
(一箇所にあるべき、しかしInspectorだとすぐに一杯になり見通しが悪い→これもアクセス性が悪い)

●セーブデータ、システム
●デフォルト値
デバッグに使用できるパラ

これらの境界はしばしば曖昧に始まり、作り終わって初めて、これはセーブデータだった、これはシステム変数だった、これはデバッグだけに必要だった(しかし通常プレイ時はデフォルト値に戻さないといけない)

特にデバッグパラメータはしばしば便利なのにトラブルの元にもなる

デバッグに使用するパラメータの一つは、特定のステージからスタートできること、特定の出現率を上げる、下げること、ステータスの初期値を上げること
→チェック表というか、開発時のリマインダーリストみたいなものにして手元においておこうかと思う

時間が無い!それでもチャレンジに価値がある

時間がない時は得意に全振りになる

それでも時間を犠牲にして新しい技術に挑戦することは、これまで無駄な工数だと思っていたけど、実はこういうときだからこそうまくいく(緊張感をもって早く見定められる)のではないかと思った

今回は Topdown engine、Dialog system を導入しようとして初日の工程を使ってしまったものの、普段なら見定めに 3日の作業時間遅延になっていた
今回のゲームは本編に組み込むことも見込んでいたので、なおの事この見定めを早くしたかった

使い慣れてきたfungusへの再帰、使い慣れたImage/UIベースの開発にシフトしたことで、大遅刻しながら期間内に終えられた最大の要因だった

さいごに

今回最大の反省点は、思ったより時間がかかったことでした
チームで一緒に戦ってくれた さなきさん や ノキアさん にも多分に心配をかけました

これからは、より安定した実装を序盤からできるように、より「初期化ポイント」や「データの在り方(分散させ方)」を意識した作り方をしようと思いました

ただ、今回、ミニゲームでスタートしたのに、作り込みが多く、途中で間に合わないことが確定したものの、2年前に挫折した時と大きく異なったのは、これまで場数を踏んできたために、実装に物理時間はかかるけど絶対に作り切ることはできる(不明点は少ないので、時間さえかければ作り切れる)と思えたことでした

成長について考えると、様々なアセットに慣れた点で成長したと思います
→その点では、成長とは「アセットに慣れること」「再利用できるコードができること」、また迷いなく開発できるように、汎用的な「開発マイルールの確立」が含まれると思いました

ホムの店番 | フリーゲーム投稿サイト unityroom
tomo-mana.hatenablog.com

最後までお読み頂いてありがとうございました!

(以上)