Contents — 6 sections

RicochetTanksのMapGen初版では、スポーン位置どうしで一回反射の射線が成立することを重視していた。

ゲームの核が跳弾なら、開始直後から跳弾できた方がいい。

設計としては自然に見えた。

でも途中で、一つ嫌な可能性が出た。

スポーンが毎回ほぼ同じで、開幕に通る一回反射も決まっているなら、最初の正解弾を暗記するだけになるのではないか。

そこで検査そのものを作り直した。

初版は「跳弾できる」を強く見すぎていた

初版では、開始地点から相手へ一回反射の射線が通ることを良い条件として扱っていた。

これならゲーム開始直後から核となるMechanicを使える。

ただし、同じ開始条件で毎回同じ射線が成立するなら、

  • Spawnする
  • 覚えた方向へ撃つ
  • 相手が見える前に同じ1発を繰り返す

というゲームになり得る。

跳弾を考えるゲームではなく、Openingを暗記するゲームになる可能性がある。

スポーンを3組へ増やした

第2版ではスポーンを1組固定から3組へ増やした。

そのうえで、開幕側には SPAWN_SAFETY を置いた。

狙いは、

開始直後の決め撃ちが成立しないこと。

一方で「一回反射が成立するMap」という条件自体は捨てたくない。

そこで跳弾の成立確認は、開幕ではなく中盤側の点対称な位置ペアへ移した。

こちらを MIDFIELD_ENGAGEMENT として評価した。

「面白い条件」と「危険な条件」が同じだった

この失敗が面白かったのは、

一回反射が通る

という条件そのものは悪くなかったこと。

問題は、その条件をどこで要求するかだった。

中盤なら、壁を読み、相手位置を見て使う駆け引きになる。

開幕固定なら、覚えた座標へ撃つだけになる可能性がある。

同じMetricでも、適用場所で意味が変わる。

検査を作り直した結果、MapGen v2へ進んだ

検査の作り直しは記録上、2026年10月6日 09:01頃。

第1版の確認用Sceneも一つ削除し、第2版へ切り替えた。

その後の第2版では、

  • 32×26: 300候補中114通過
  • 40×32: 300候補中171通過

まで候補を生成した。

ただし通過率が上がったこと自体が目的ではない。

欲しいゲーム性を検査へ近づけたことの方が重要だった。

実際に暗記ゲームにならないかは未確認

ここは残しておく。

SPAWN_SAFETYで開幕の決め撃ち候補を機械的に落とせても、

人間が数回遊んだあとに別の定石を暗記し始める可能性はある。

「暗記ゲームにならない」は、自動検査では証明できない。

最終的には人間の対戦ログが必要。

だから今言えるのは、

暗記化の懸念を検査仕様へ反映した

まで。

いまの結論

Procedural Generationでは、生成アルゴリズムだけでなく、

何を良いMapと定義するか

が本体になる。

そしてその定義も、一度作って終わりではない。

今回のMapGenでは、

「跳弾できるMap」

から、

「開幕の正解弾を暗記しにくく、中盤では跳弾が成立するMap」

へ検査条件を変えた。

PicoTowaでは、Generatorより先にAcceptanceを作り直した話も残していく。

Signal / 観測記録

この記録への観測を送る

反証、再現失敗、追加で試してほしいこと。届いた SIGNAL は非公開で保存し、次の実験候補として扱います。