--- id: wiki-2026-0508-operation-western-sun title: Operation - Western Sun category: 10_Wiki/Topics status: verified canonical_id: self aliases: [Western-Sun, Op-Western-Sun] duplicate_of: none source_trust_level: B confidence_score: 0.7 verification_status: applied tags: [wargame, cold-war, scenario, fiction] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: en framework: wargame-scenario --- # Operation - Western Sun ## 매 한 줄 > **"매 fictional 1985 NATO counter-offensive 의 codename"**. Operation Western Sun 은 Eugen Systems 류 cold-war 가상 wargame (WARNO / WARGAME Red Dragon 계열) 의 시나리오 — 매 Fulda Gap 돌파 후 Bundeswehr + US V Corps 가 Thüringen 방향 으로 reverse-strike 하는 setup. 매 historical 사건이 아닌 alt-history simulation. ## 매 핵심 ### 매 setting - **시점**: 1985 August, Day 9 of WW3 (가정). - **전선**: Inner-German Border, Fulda – Bad Hersfeld – Eisenach axis. - **편성**: NATO — US 11th ACR + 3rd AD + Bundeswehr 5th PzD; WP — GSFG 8th Guards Army. - **목표**: WP 보급선 (Erfurt railhead) 차단, M1 Abrams + Leopard 2 의 combined-arms 돌파. ### 매 game mechanic - **Division-level**: WARNO 의 ~12k point deck, command point regen. - **Recon vs spotting**: M3 Bradley CFV 의 thermal advantage vs T-80 의 numeric mass. - **Air**: A-10 + Tornado IDS CAS 와 Su-25 + Mi-24 의 air-denial. - **Logistics**: FOB ammo / fuel truck 의 supply chain. ### 매 응용 1. Tactical AI 학습 데이터 — RTS unit micro / macro decision. 2. POMDP belief-state 의 fog-of-war benchmark. 3. Multi-agent RL — heterogeneous unit coordination. ## 💻 패턴 ### Scenario state schema (Python) ```python from dataclasses import dataclass, field from typing import Literal Side = Literal["NATO", "WP"] @dataclass class Unit: id: str side: Side type: str # "M1A1", "T-80B", "A-10A", ... pos: tuple[float, float] hp: float = 1.0 suppression: float = 0.0 ammo: float = 1.0 spotted_by: set[Side] = field(default_factory=set) @dataclass class Scenario: name: str = "Western Sun" turn: int = 0 weather: Literal["clear", "rain", "fog"] = "clear" units: list[Unit] = field(default_factory=list) ``` ### Fog-of-war 의 belief update ```python def observe(scenario, side): visible = [] for u in scenario.units: if u.side == side or side in u.spotted_by: visible.append(u) return visible def update_belief(belief, obs): # particle filter on enemy positions for p in belief.particles: p.weight *= likelihood(p, obs) belief.resample() ``` ### Combined-arms scoring ```python def force_value(units): arm = sum(1 for u in units if u.type.startswith(("M1", "Leo", "T-"))) inf = sum(1 for u in units if "BMP" in u.type or "M2" in u.type) air = sum(1 for u in units if u.type in ("A-10A", "Su-25")) # synergy: tank + IFV + CAS triad triad = min(arm, inf, air) return arm + inf + 2 * air + 1.5 * triad ``` ### Replay export (JSON) ```python import json def export_replay(scn, path): json.dump({ "scenario": scn.name, "turn": scn.turn, "units": [u.__dict__ for u in scn.units], }, open(path, "w"), default=list) ``` ### MCTS rollout 의 unit micro ```python def rollout(state, depth=20): for _ in range(depth): if terminal(state): break a = random_legal_action(state) state = step(state, a) return reward(state) ``` ## 매 결정 기준 | 상황 | Approach | |---|---| | 매 single-player AI training | scripted opponent + curriculum | | 매 multi-agent RL | self-play with frozen pool | | 매 human study | replay export + heatmap | | 매 doctrine analysis | force_value + outcome regression | **기본값**: WARNO mod + division-level RL bench. ## 🔗 Graph - 부모: [[Wargame]] - 응용: [[POMDP]] - Adjacent: [[Eugen-Systems]] ## 🤖 LLM 활용 **언제**: 매 scenario briefing 생성, AAR (after-action report) 요약, doctrine 분석. **언제 X**: 매 real-time tactical decision — latency / hallucination 위험. ## ❌ 안티패턴 - **Historical conflation**: Western Sun 을 real NATO doctrine 으로 오인 — fiction. - **Symmetric assumption**: WP / NATO 의 doctrine 비대칭을 무시한 balance 패치. - **No fog-of-war**: full observability 의 wargame 은 belief-state benchmark 로 무가치. ## 🧪 검증 / 중복 - Verified (Eugen Systems WARNO patch notes, 가상 시나리오 reference). - 신뢰도 B (fictional). ## 🕓 Changelog | 날짜 | 변경 | |---|---| | 2026-05-08 | Phase 1 | | 2026-05-10 | Manual cleanup — full scenario + tactical AI patterns |