作ったゲーム
「ホムの店番」は、いわゆる見下ろし型の店舗経営シミュレーションです。
一般的には十字キー操作のゲームが多いジャンルですが、「ホムの店番」はクリック操作だけでプレイできます。とにかく時間内に多くクリックするという意味では、ある種クリッカーとも言えるかもしれません。
作ったゲームはunityroomで公開中です。以下は簡単なゲーム紹介です。
tomo-mana.hatenablog.com
※本編サイト(作成中)
開発動機
「ホムの店番」は、現在開発中のゲーム「プロジェクト・ソラリス」本編に移植できるゲームをunity1week期間で作ってみたい、という動機から開発がスタートしました。
事前に構想があったわけではなく、ただ、本編にも組み込めそうなミニゲームで、ゲーム単体としてもサクッと遊べるものを、unity1weekで作りたいというところから、いくつか案出しをしていたところ、純粋に店番をするゲームいいんじゃない?という話になりました。
本編にも、「店番」というイベントがあり、そこで簡単なゲームをしてお金を稼ぐ、という設定があったためです。
(参考にしたゲーム)
store.steampowered.com
store-jp.nintendo.com
工程
結果的に投票期間締め切り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 お疲れ様でした〜!
— さなき男爵【ご依頼受付中!】 (@sanaki385) 2024年4月7日
ホムの店番総合11位!これまででいちばんの結果となりました!
絵作りは6位、サウンド8位と高評価頂けて嬉しかったです〜!
これからも頑張っていきます!
プログラマーの@tomomana16トモさん、サウンドの@Nokia_FoTe ノキアさんありがとうございました! pic.twitter.com/GfB7tLYcqg
「人の苦労を買いたがる」という側面がゲームでもあるような気がしました。
締め切り3日前でしたが、多くの方に訪問いただけて、ありがたいです。unity1week出場歴7回目なので、まだ 知名度 はそこまでですが、グラフィックが見た目を引くので、興味を持っていただけた方も多かったのかもしれません。(XでBGMも積極的に流すようにしてました)
気づいたこと
●初期化タイミングを意識する
●デバッグパラメータに関するチェックリストを作る
初期化処理
ゲームには(ゲームにかかわらず)すべてのアプリには複数の初期化ポイントがあり、それらが混同した
開発の大半は探すために時間を使っており、この探す時間こそがリスクであり、高速化できる領域(新規事項を考えることは短縮できない)
どこで初期化するか、は毎回探すことが多く、
結局、どこで初期化が走るかを簡単に把握できることが、爆発的安定感と爆速化を測ることになる
※ホムの店番における初期化ポイント
重要なデータはどこにあるか?
ゲームの重要なデータはどこにあるか?
(一箇所にあるべき、しかしInspectorだとすぐに一杯になり見通しが悪い→これもアクセス性が悪い)
●セーブデータ、システム
●デフォルト値
●デバッグに使用できるパラ
これらの境界はしばしば曖昧に始まり、作り終わって初めて、これはセーブデータだった、これはシステム変数だった、これはデバッグだけに必要だった(しかし通常プレイ時はデフォルト値に戻さないといけない)
特にデバッグパラメータはしばしば便利なのにトラブルの元にもなる
デバッグに使用するパラメータの一つは、特定のステージからスタートできること、特定の出現率を上げる、下げること、ステータスの初期値を上げること
→チェック表というか、開発時のリマインダーリストみたいなものにして手元においておこうかと思う
時間が無い!それでもチャレンジに価値がある
時間がない時は得意に全振りになる
それでも時間を犠牲にして新しい技術に挑戦することは、これまで無駄な工数だと思っていたけど、実はこういうときだからこそうまくいく(緊張感をもって早く見定められる)のではないかと思った
今回は Topdown engine、Dialog system を導入しようとして初日の工程を使ってしまったものの、普段なら見定めに 3日の作業時間遅延になっていた
今回のゲームは本編に組み込むことも見込んでいたので、なおの事この見定めを早くしたかった
使い慣れてきたfungusへの再帰、使い慣れたImage/UIベースの開発にシフトしたことで、大遅刻しながら期間内に終えられた最大の要因だった
さいごに
今回最大の反省点は、思ったより時間がかかったことでした
チームで一緒に戦ってくれた さなきさん や ノキアさん にも多分に心配をかけました
これからは、より安定した実装を序盤からできるように、より「初期化ポイント」や「データの在り方(分散させ方)」を意識した作り方をしようと思いました
ただ、今回、ミニゲームでスタートしたのに、作り込みが多く、途中で間に合わないことが確定したものの、2年前に挫折した時と大きく異なったのは、これまで場数を踏んできたために、実装に物理時間はかかるけど絶対に作り切ることはできる(不明点は少ないので、時間さえかければ作り切れる)と思えたことでした
成長について考えると、様々なアセットに慣れた点で成長したと思います
→その点では、成長とは「アセットに慣れること」「再利用できるコードができること」、また迷いなく開発できるように、汎用的な「開発マイルールの確立」が含まれると思いました
ホムの店番 | フリーゲーム投稿サイト unityroom
tomo-mana.hatenablog.com
最後までお読み頂いてありがとうございました!
(以上)