8.6 KiB
| from | to | type | subject | priority | status | created | ref | req_ref |
|---|---|---|---|---|---|---|---|---|
| 개발팀장 | 총괄PM | 현황보고 | 시뮬레이터 이원화 해소 작업 현황 및 기획팀 밸런스 작업 대응 계획 | high | 보고 | 2026-04-16 | PD님 직접 지시 (2026-04-16), PD 지시 로그 | 공유/소통/PM→개발팀/2026-04-16_REQ_시뮬레이션_대응_기획팀_밸런스작업_지원.md |
시뮬레이터 이원화 해소 작업 현황 및 기획팀 밸런스 작업 대응 계획
⚠️ DEPRECATED (2026-04-17): 본 보고서는 07 Headless C# 추출 방향으로 작성되었으나, 2026-04-17 PD님 지시로 Unity MCP 기반 시뮬레이션 방향으로 전환되어 일부 효력 상실. 최신 방향은
2026-04-17_Unity_MCP_시뮬레이션_기술검토_개발팀.md참조. 본 문서는 Phase A 전투 로직 분석·Unity 엔진 의존성 식별 부분만 유효하며, Phase B~E(Headless 추출·CLI)는 폐기.
1. 07 착수계획 Phase A~E 진행 상태
| Phase | 작업 | 상태 | 비고 |
|---|---|---|---|
| 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 문서와 코드가 일치함을 확인.
핵심 공식 요약:
기본 = Random[Attack_Min, Attack_Max] (최소 1 보장)
중간 = 기본 + 절대증가 + (기본 x 배수증가)
(크리 시) 중간 x CriDmg
중간 - 절대감소(방어 포함)
중간 - (중간 x 감소비율)
max(중간, 1)
(쉴드 존재 시) 쉴드 먼저 흡수 -> HP 감산
회피 판정 3단계:
- 명중률 체크:
HitRate / (Avoid x 3.69)-- 3.69 상수 근거 미확인 - PC 회피율: 근접/원거리 분리 확률 판정
- 최초 공격 무조건 회피 (카드 효과)
크리티컬: 확률 판정 + N연타 강제 크리, 상한 90%
2.4 미확인 항목 (A-4 완료 차단 요인)
| 항목 | 상태 | 영향 |
|---|---|---|
| 회피 공식 3.69 상수 근거 | 미확인 | 시뮬 재현에 영향 없음 (값 자체는 확인됨) |
| PC 방어 입력 윈도우 연결 지점 | 미확인 | 시뮬에서는 "방어 상태 On/Off"로 추상화 가능 |
eCardType.G1~G5 200+개 효과 전수 맵 |
부분 확인 | 주요 효과는 08 SOT에 문서화됨. 전수 맵핑은 점진적 보완 가능 |
| 상태이상 중첩 규칙 | 부분 확인 | 기본 CC(Stun/Freezing) 확인됨, 상세 상호작용 추가 확인 필요 |
3. 기획팀 Python 시뮬레이터 현황
기획팀 .cache/ 디렉토리에서 battle_sim.py, full_stage_sim.py, stage_sim_v2.py 등의 Python 시뮬레이터 파일이 현재 확인되지 않음 (BurningTimesAi 레포 내에 부재). 원본은 기획팀 로컬 또는 별도 경로에 있을 것으로 추정.
4. Headless C# 추출 기술 판단
4.1 추출 가능성 판단: 가능하나 상당한 작업량
Actor.cs 4,545줄의 전투 로직은 Unity 엔진 의존성이 깊이 얽혀 있어 단순 분리가 아닌 체계적 리팩토링이 필요합니다.
난이도 분류:
| 영역 | 난이도 | 사유 |
|---|---|---|
| 피해 계산 (Get_Dmg) | 중 | 핵심 수치 로직. 의존성 정리하면 분리 가능. 단 300줄 내 카드 효과 분기가 다수 |
| 공격 루프 (Update/AttackCoolTime) | 중 | Coroutine → 틱 기반 전환 필요 |
| 몬스터 배치/스폰 | 하 | 테이블 기반, 순수 로직 |
| 상태이상 시스템 | 중 | 시간 기반 → 틱 기반 전환 + 효과 200종 분류 필요 |
| 카드 효과 200종 전수 대응 | 상 | eCardType 전수 분기 → 전략 패턴 리팩토링 권장 |
| ACTk Obscured 타입 제거 | 하 | 기계적 치환 가능 |
4.2 차단 요인
- 카드 효과 200종:
eCardType.G1~G5전수를 시뮬레이터에 반영해야 정확한 밸런싱이 가능. 단, 기획팀이 필요로 하는 밸런스 작업 범위에 따라 핵심 효과만 우선 구현하는 것이 현실적 - 데이터 테이블 로더: JSON 기반이므로 CLI에서 직접 로드 가능 (
GlobalValue.json,MonsterList.json,MonsterPatternList.json등 확인됨) - 결정론 보장:
UnityEngine.Random→ 시드 기반 난수로 전환 필수
5. 착수 계획 및 기획팀 조기 제공 가능 산출물
5.1 즉시 착수 가능한 작업
- Phase A-4 완료: 08 SOT 문서 기반으로 전투공식 SOT 최종 문서 작성 (미확인 항목은 "코드 기준 값" 그대로 반영, 기획 의도와의 대조는 별도)
- Phase B 착수: BattleCore 순수 도메인 클래스 분리 시작
- Actor → ActorCore (전투 스탯/피해 계산 순수 로직)
- IRandomSource, IBattlePresenter, ITableLoader 인터페이스 정의
- ObscuredInt/Float → int/float 기계적 치환
5.2 기획팀 조기 제공 가능 산출물 (전체 Phase 완료 전)
| 산출물 | 선행 조건 | 기획팀 활용 |
|---|---|---|
| 전투 공식 SOT 문서 v2 (A-4) | Phase A 잔여 정리 | 기획팀이 Python 시뮬 로직을 C# SOT에 맞춰 검증/수정 가능 |
| JSON 데이터 테이블 스키마 문서 | 없음 (즉시 가능) | 기획팀이 데이터 테이블 구조를 파악하여 시뮬 입력값 정비 |
| BattleCore 피해 계산 단독 모듈 (B-1 부분) | Phase A-4 완료 | 기획팀이 C# 콘솔에서 피해 계산만 단독 실행 가능 |
5.3 차단 요인 없음
현재 이 작업에 대한 차단 요인은 없습니다. Unity 프로젝트 코드 접근 가능하고, 데이터 테이블 JSON이 확인되었으며, 08 SOT 문서가 Phase A의 주요 분석을 커버합니다. 즉시 착수합니다.
6. 요청 사항에 대한 응답 정리
| 요청 | 응답 |
|---|---|
| 1. 현재 진행 상태 | Phase A 부분 완료 (08 SOT v1 작성됨), Phase B~E 미착수 |
| 2. 기획팀 시뮬 환경 구축 | 즉시 착수. 전투공식 SOT v2 → BattleCore 피해 계산 모듈 → CLI 순서 |
| 3. 차단 요인 | 없음. 즉시 착수 가능 |
7. 변경 이력
| 일자 | 작성자 | 내용 |
|---|---|---|
| 2026-04-16 | 개발팀장 | REQ 수령 후 현황 보고 초안 작성 |