BurningTimesAi/공유/소통/개발팀→PM/2026-04-16_RPT_시뮬레이션_대응_현황보...

8.1 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

시뮬레이터 이원화 해소 작업 현황 및 기획팀 밸런스 작업 대응 계획


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단계:

  1. 명중률 체크: HitRate / (Avoid x 3.69) -- 3.69 상수 근거 미확인
  2. PC 회피율: 근접/원거리 분리 확률 판정
  3. 최초 공격 무조건 회피 (카드 효과)

크리티컬: 확률 판정 + 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 시뮬레이터 파일이 현재 확인되지 않음 (NerdNavisAi 레포 내에 부재). 원본은 기획팀 로컬 또는 별도 경로에 있을 것으로 추정.


4. Headless C# 추출 기술 판단

4.1 추출 가능성 판단: 가능하나 상당한 작업량

Actor.cs 4,545줄의 전투 로직은 Unity 엔진 의존성이 깊이 얽혀 있어 단순 분리가 아닌 체계적 리팩토링이 필요합니다.

난이도 분류:

영역 난이도 사유
피해 계산 (Get_Dmg) 핵심 수치 로직. 의존성 정리하면 분리 가능. 단 300줄 내 카드 효과 분기가 다수
공격 루프 (Update/AttackCoolTime) Coroutine → 틱 기반 전환 필요
몬스터 배치/스폰 테이블 기반, 순수 로직
상태이상 시스템 시간 기반 → 틱 기반 전환 + 효과 200종 분류 필요
카드 효과 200종 전수 대응 eCardType 전수 분기 → 전략 패턴 리팩토링 권장
ACTk Obscured 타입 제거 기계적 치환 가능

4.2 차단 요인

  1. 카드 효과 200종: eCardType.G1~G5 전수를 시뮬레이터에 반영해야 정확한 밸런싱이 가능. 단, 기획팀이 필요로 하는 밸런스 작업 범위에 따라 핵심 효과만 우선 구현하는 것이 현실적
  2. 데이터 테이블 로더: JSON 기반이므로 CLI에서 직접 로드 가능 (GlobalValue.json, MonsterList.json, MonsterPatternList.json 등 확인됨)
  3. 결정론 보장: UnityEngine.Random → 시드 기반 난수로 전환 필수

5. 착수 계획 및 기획팀 조기 제공 가능 산출물

5.1 즉시 착수 가능한 작업

  1. Phase A-4 완료: 08 SOT 문서 기반으로 전투공식 SOT 최종 문서 작성 (미확인 항목은 "코드 기준 값" 그대로 반영, 기획 의도와의 대조는 별도)
  2. Phase B 착수: BattleCore 순수 도메인 클래스 분리 시작
    1. Actor → ActorCore (전투 스탯/피해 계산 순수 로직)
    2. IRandomSource, IBattlePresenter, ITableLoader 인터페이스 정의
    3. 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 수령 후 현황 보고 초안 작성