045 穴だらけの防衛線
守るために、一度だけ通す道を選ぶ。

Windows: Python 3.10以上を入れ、setup.bat、次にplay.bat。各ゲームのフォルダーだけで動きます。
Linux/macOS: sh setup.sh、sh play.sh。実行時はPyxelと標準ライブラリのみ。
音なし。実機Windows/macOSでの起動は未確認。cp932既定を模したテストと日本語・空白パス、任意cwdを確認。

操作: SPACEで表紙から開始。左右で正面/裏道、上下で建設計画、ZまたはSPACEで1刻確定。
建設なしが初期選択。建設は1刻につき1件、成功後は建設なしへ戻ります。
Xで直前の計画を戻す。Rで同状況再開。Pで停止/説明。1~3で状況。Mで表紙。Bで比較変種を切替し初期化。
停止中はP/R/Mのみ。F12は検証用画像/入力記録。ESCは終了。押しっぱなしは新しい操作になりません。

車は無敵・無害。全員同じ道を通り、裏S2に来た車だけ資材2を落とします。
弓は毎刻に走者1体。槌は2刻に1発、甲殻兵にも有効。砲座は自分のセルだけを狙います。
輸送車を狙う空撃ちなし。再装填を減らしてから移動、射撃、落荷、砦被害、次刻出現の順。
建設2、解体回収1。落荷は今刻の建設へ先借りできません。予告は確定と同じ純粋モデルです。
全隊列を処理し耐久1以上で成功。無傷や残資材は別の成績。最適解の強制はありません。

3状況: A別々に来る / B一緒に来た荷車 / C資材より今の列。
Cの混成隊は設計案t4からt5へ変更。t4だと前の二人組と再装填が重なり、正面へ回す価値が消えたため。
Aの正面固定・槌1基は無傷で成功。Bは耐久を使って資材を取る案も、車を正面へ通す案も成功。
Cは正面固定・槌1基で耐久1、最初の車を裏・後の混成隊を正面なら耐久3。
毎回車を裏にすると耐久2と資材2。車を通す/止める二択ではなく、混成隊の経路と次の配置の判断です。

確認: python -m unittest test_model test_ui
再計算: python experiments.py（モデル結果JSONを更新。mediaは更新しません）
自動実画面: python app.py --headless --demo
映像変換は開発用Pillowとffmpegが必要。tools/export_video.pyは元GIF全779フレームを30fpsで1回ずつ渡します。
media/open_defense_automatic_silent.mp4:25.966667秒・無音・自動操作の実Pyxel画面。人の試遊映像ではありません。
自動入力ログ、比較計算、ネイティブ実操作ログは別保存。詳細はQA.txt、NOTE.txt、X_POSTS.txt。
