お知らせ
「ゴキブリは1匹みたら100匹いると思え」はどう作られたのか
1匹のゴキブリから始まり、収集・増殖・自律AIを経て100匹ゴールへたどり着くまでの制作の歩みを、Git履歴から振り返ります。
最初は「1匹を動かすだけ」だった
Phase 0
「ゴキブリは1匹みたら100匹いると思え」は、Phase 0と呼べる段階から作り始めました。このときできていたのは、3D空間の中に特大サイズの家具を置き、1匹のゴキブリを動かして、カメラが追従するだけのシンプルな状態でした。
収集・増殖・自律AI
そこから、食べ残しや段ボールなどのアイテムを拾って増殖ゲージを貯める「収集」、ゲージが貯まると仲間が増える「増殖」、増えたゴキブリが操作なしで家の中を動き回って食料を集める「自律AI」、ゴキブリホイホイや飼い猫などに触れたときの「死亡アクション」を、1つずつ積み上げていきました。
100匹というゴール
そして最後に、合計100匹に到達する「100匹ゴール」を実装しました。
「笑えて理不尽なゲーム」を目指して
このゲームの要件定義書には「遊ぶことがメインの、笑えて理不尽なゲーム」という方針が明記されています。塊魂をリスペクトした原色ポップなローポリ世界観の中、顔と手足は人間で体はゴキブリの着ぐるみのような、キモさよりも陽気さを優先したデフォルメキャラクターにしたのも、この方針に沿ったものです。
ゲームロジックと描画を分けた設計
技術面では、ゴキブリの位置・増殖ゲージ・増殖数などの状態管理を行う「ゲームロジック」(`src/js/game/`)と、Three.jsによる「描画」(`src/js/render/`)をはっきり分ける設計にしました。描画側は`Renderer`という共通インターフェースを挟み、実際の描画は`ThreeRenderer.js`が担当する形にしています。
プロジェクトのCLAUDE.mdには「将来グラフィックや死亡アクションに不満が出たら、`BabylonRenderer.js`を同じインターフェースで新規実装し差し替えるだけで済むようにする」という意図を残していて、描画エンジンをまるごと差し替えられるようにすることを狙った設計です。この状態と描画を分離するパターンは、同じ作り方をした姉妹ゲーム「クラウドラン」でも採用しています。
リリース後もゲームを育てる
リリースした後も、BGMや生き物・人の声の効果音を追加したり、100匹クリアが確定しないことがあったバグを直してホーム画面・結果発表画面を整備したりと、細かな改善を重ねてきました。
中でも大きかったのが、実際の間取り図をもとにした本物の部屋の実装と、当たり判定を円から矩形へ全面的に移行した改修です。見た目の説得力とプレイフィールの両方に関わる部分で、地道な作業でしたが、確実にゲームの完成度を押し上げてくれました。