COMPETITIVE
19,000戦シミュレーションして競技ルールを決めた話
終了保証は感覚で決めず、Fatigue 3候補と最大アクション3候補を9,000戦で比較し、採用案を10,000戦で再検証しました。
9,000戦の候補比較
Fatigue A・B・Cと最大アクション30・40・50を組み合わせた9条件を、各1,000戦、合計9,000戦で比較しました。シミュレーターはUIを使わず、seed付きの決定論的RNGで1アクションずつ進めます。
標準デッキは40枚、初期手札後は35枚です。1アクション7秒の仮定で平均時間も見積もりましたが、これは実端末の操作時間を保証する値ではなく候補比較の共通尺度です。
30は介入しすぎ、40は目標をわずかに超えた
最大30では67/1,000戦、6.7%が上限へ到達しました。最大40では6/1,000戦、0.6%まで減りましたが、設計目標の0.5%未満をわずかに超えました。
最大50では比較1,000戦で上限到達0件、平均20.397アクションでした。通常の試合へほとんど介入せず、異常な長期戦だけを止める候補として50を選びました。
比較では山札切れが起きず、単体テストも併用した
今回の9条件では、40枚デッキが50アクションまでに尽きる試合がなく、Fatigue A・B・Cの集計値は同じになりました。これは候補差がないという意味ではなく、ストレス用対戦プロフィールがその分岐へ到達しなかったという意味です。
各候補のドロー・再利用・ダメージ挙動はエンジン単体テストで別に確認し、将来ドロー密度や回復が増えても単調に終了へ進むCandidate Aを採用しました。
採用案を10,000戦で最終検証
Candidate A・最大50を別seedで10,000戦検証しました。HP0による終了は9,940件、DRAWは60件、平均20.257アクション、推定平均141.8秒でした。
DRAWの内訳には同時KO 52件(0.52%)、最大アクション到達8件(0.08%)が含まれます。Fatigue、Loop Detection、Deck outによる終了はこの検証では0件でした。発生しなかった分岐も、単体テストで終了処理を確認しています。
この結果はカードバランスの証明ではない
最終検証では先手勝利56.80%、後手勝利42.60%という観測がありましたが、Phase Aは手番順やマリガンを変更しません。使用したrush・midrange・controlプロフィールは終了保証のストレスモデルで、ライブ環境のカードバランス認定ではありません。
数字を都合よく切り取らず、『何を検証できたか』と『何をまだ検証していないか』を分けることが、次の競技改善に必要です。再現コマンドと元レポートはリポジトリ内docsへ残しています。