> ⚠️ **DEPRECATED (2026-04-17)**: 본 보고서는 07 Headless C# 추출 방향으로 작성되었으나, 2026-04-17 PD님 지시로 **Unity MCP 기반 시뮬레이션 방향으로 전환**되어 일부 효력 상실. **최신 방향은 [`2026-04-17_Unity_MCP_시뮬레이션_기술검토_개발팀.md`](2026-04-17_Unity_MCP_시뮬레이션_기술검토_개발팀.md) 참조.** 본 문서는 Phase A 전투 로직 분석·Unity 엔진 의존성 식별 부분만 유효하며, Phase B~E(Headless 추출·CLI)는 폐기.
| **A. 전투 로직 식별 및 경계 확정** | 전투 코드 전수 분석, Unity 의존성 식별, 전투 공식 명문화 | **부분 완료** | 08 SOT 문서(v1)로 핵심 피해 계산 15단계, 회피 판정 3단계, 크리티컬, 상태이상 등 명문화됨. A-1~A-3 실질 완료. A-4(전투공식 SOT 최종 확정)는 미확인 항목 잔존 |
| **B. Headless C# 추출 (코어화)** | BattleCore 라이브러리 분리 | **미착수** | 선행: Phase A 최종 확정 필요 |
| **C. CLI 실행 환경 구성** | dotnet CLI, JSON 입출력, 배치 러너 | **미착수** | 선행: Phase B 완료 필요 |
| **D. Python 교차 검증** | Python vs C# 결과 비교 | **미착수** | 선행: Phase C 완료 필요 |
| **E. 문서화 및 인수인계** | 기획팀용 가이드, 구조 문서 | **미착수** | 선행: Phase D 완료 필요 |
---
## 2. Unity 전투 코드 분석 결과 (본 보고 시점 실제 확인)
### 2.1 코드 규모 및 구조
| 파일 | 라인 수 | 역할 |
|------|--------|------|
| `Actor.cs` | 4,545줄 | **전투 핵심** -- 피해 계산, 회피, 크리티컬, 상태이상, 공격 루프 전체 |
| `PCActor.cs` | ~200줄 | 플레이어 전용 -- 방어, LowHP, 쉴드 Kill 효과 |
| `MobActor.cs` | ~250줄 | 몬스터 전용 -- 라인 위치, 샤이니, 드롭 보상 |
| `MonsterNodeControler.cs` | ~500줄 | 전투 루프 제어 -- 몬스터 배치, 라인 변경, 노드 종료 |
### 2.2 Unity 엔진 의존성 분석
Actor.cs에서 식별된 Unity 의존성 (Headless 추출 시 제거/추상화 대상):
| 의존 항목 | 사용 위치 | 추상화 방안 |
|----------|----------|-----------|
| `UnityEngine.Random` | 피해 범위, 회피 판정, 크리티컬 | `IRandomSource` 인터페이스로 교체 (시드 기반 결정론 보장) |
| `MonoBehaviour` / `Coroutine` | 공격 쿨타임, 상태이상 지속, 라인 변경 | 턴/틱 기반 루프로 전환 |
| `Animation` / `Animator` | 연출 전용 | `IBattlePresenter` 인터페이스 분리 (Headless에서는 NullPresenter) |
| `ObscuredInt/Float/Bool` (ACTk) | 치트 방지 | 순수 int/float/bool로 교체 (시뮬에서는 보안 불필요) |
| `Transform` / `Vector3` | 위치 기반 이펙트, 발사체 | 시뮬에서는 라인/슬롯 인덱스만 필요, 좌표 불필요 |
| `Addressable` / 리소스 로드 | 스프라이트, 이펙트 | JSON 직접 로드로 대체 |
| `table_GlobalValue.Ins` 등 싱글턴 | 전역 밸런스 값 참조 | `ITableLoader` 인터페이스로 추상화 |
### 2.3 전투 핵심 공식 현황 (08 SOT v1 + 본 보고 시점 코드 직접 확인)
**피해 계산 15단계**: `Actor.Get_Dmg()` (Actor.cs:521~834) -- 08 SOT 문서와 코드가 일치함을 확인.