# BurningTimesCore 범용성 분석 > **작성일**: 2026-04-14 > **조사 범위**: `D:/BurningTimes/FilGoodBandits/DeckBuilding/` Unity 프로젝트 > **판정 기준**: C11 개발 관점 원칙 중 "코드의 범용성" > > ⚠️ **상태 변경 (2026-04-14 PD님 지시)** > 기존 `BurningTimesCore`는 **타 회사 소유로 전환**, 담당자 퇴사. > 본 문서는 **참고·아카이브 용도**로만 유지되며, 코드 차용은 하지 않음. > BurningTimes 자체 범용 코어를 별도로 신규 제작 (`06_신규코어_설계안_v1.md` 참조). --- ## 요약 | 항목 | 결과 | |------|------| | **코어 범용성 점수** | **78 / 100** | | **C11 준수 판정** | ✅ **합격** | | **오염도** | **0%** (프로젝트 특수 로직 없음) | | **다음 프로젝트 재사용률** | ~80% (즉시 사용 가능) | ## 코어 구성 (91개 파일, ~14,000 lines) ### 네임스페이스 체계 (모두 `DG.*` 계열) ``` DG.Core - 기본 인터페이스, 열거형 ├─ DG.Core.Data - 마스터 테이블, 데이터 파싱 ├─ DG.Core.Tool - CSV 변환, 에디터 도구 ├─ DG.InGame.MasterTable - 게임 데이터 베이스 DG.Util - 유틸리티 ├─ DG.Util.Container - 제네릭 컬렉션 DG.OutGame - 아웃게임 데이터 (Goods) DG.UI - UI 프레임워크 DG.Manager - ObserverManager 등 ``` ### 구성된 모듈 (✅ 포함됨) | 영역 | 파일 수 | 범용성 | 비고 | |------|--------|--------|------| | **UI 프레임워크** | 4 | ✅ 우수 | UIElements 기반, 전 장르 적용 가능 | | **데이터 테이블 시스템** | 7 | ✅ 우수 | CSV → ScriptableObject 자동 변환 | | **유틸리티 (핵심)** | 44 | ✅ 우수 | 싱글톤, 팩토리, 코루틴, DOTween, 제네릭 컨테이너 | | **에디터 확장** | 7 | ✅ 우수 | 애셋번들, 빌드, 계층창, 씬 단축키 | | **가챠/부스트 시스템** | 7 | 🟡 중간 | 제네릭 기반이나 "가챠/부스트" 개념 하드코딩 | | **전투 인터페이스·열거형** | 2 | 🟡 중간 | 인터페이스는 범용, 열거형 값은 일부 특화 | ### 누락된 모듈 (❌ 없음) | 영역 | 중요도 | 코멘트 | |------|--------|--------| | **네트워크/통신** | 🔴 높음 | `INetworkService` 인터페이스 없음 → PlayFab 직접 의존 | | **세이브/로드 시스템** | 🔴 높음 | PlayerPrefs만 있음, 구조화된 직렬화 없음 | | **로컬라이제이션** | 🟠 중간 | `LocalType` enum만 있고 관리 시스템 없음 | | **오디오 매니저** | 🟡 낮음 | 게임별 차이가 크므로 선택적 | | **VFX 래퍼** | 🟡 낮음 | 선택적 | ## 오염도 검증 (핵심) ### 검사 결과 | 검사 항목 | 결과 | |----------|------| | `Card`, `Merchant`, `Shop` 파일명 포함 | **0개** | | `DeckBuilding`, `FilGoodBandits` 네임스페이스 | **0개** | | `eCardType`, `eStageNodeType` 등 게임 특수 enum | **0개** | | 프로젝트 전용 클래스 | **0개** | ### 프로젝트 전용 코드의 위치 (명확한 분리 확인) ``` Assets/Script/ (256개, ~31,000 lines, FilGoodBandits 네임스페이스) ├─ InGame/ 전투·스테이지·노드 로직 ├─ UGUI/ 로비·인게임·타이틀 UI ├─ Server/ 서버 연동 ├─ Table/ 자동 생성된 데이터 테이블 클래스 ├─ Manager/ 게임 매니저 ├─ My/ 프로젝트 특화 enum/class/value └─ Tool/ 에디터·개발 도구 ``` ### 경계 명확성 - **폴더 분리**: `BurningTimesCore` (외부 프로젝트) ↔ `Assets/Script` (프로젝트 전용) - **네임스페이스 분리**: `DG.*` ↔ `FilGoodBandits.*` - **의존 방향**: 프로젝트 → 코어만 존재, 코어 → 프로젝트 참조 **없음** → **아키텍처적으로 깨끗한 상태** ## 범용성 판정 (Q&A) ### Q1. 다음 프로젝트가 덱빌딩이 아니어도 이 코어를 쓸 수 있는가? **✅ YES** (RPG, 퍼즐, 캐주얼, 카드게임 모두 적용 가능) - 즉시 재사용: 70% (UI, 데이터, 유틸, 에디터 도구) - 조정 필요: 20% (가챠·부스트 일반화, 전투 enum 재정의) - 신규 구현: 10% (네트워크, 세이브/로드) ### Q2. 코어에 누락된 범용 기능은? 1. **네트워크 인터페이스** — PlayFab 추상화 필요 2. **구조화된 세이브/로드** — JSON/Binary 직렬화 + 암호화 3. **로컬라이제이션 매니저** — 다국어 텍스트/애셋 관리 ### Q3. 코어에 있으면 안 될 특수 로직이 있는가? **0% — 완전히 깨끗함** ## 점수 산정 ``` ✅ 완벽함 (20/20) UI 프레임워크 4점 데이터 테이블 4점 디자인 패턴/유틸 4점 에디터 도구 4점 네임스페이스 분리 4점 🟡 양호 (15/25) 가챠/부스트 시스템 6점 (제네릭이나 용어 특화) 전투 인터페이스 5점 (enum 값 일부 특화) 컨테이너/패턴 4점 ❌ 누락 (0/10) 네트워크 시스템 -3점 고급 세이브/로드 -3점 로컬라이제이션 -2점 오디오/VFX -2점 🟢 기본 점수 45점 + 위 합계 33점 = 78점 ``` ## C11 원칙 준수 판단 | C11 기준 | 코어 상태 | 판정 | |---------|----------|------| | **자원 효율성** | 범용 유틸이 중복 코드 방지 | ✅ | | **코드 구조 직관성** | 네임스페이스·폴더 분리 명확 | ✅ | | **코드 범용성** | 오염 0%, 제네릭·추상 기반 | ✅ | → **합격**. 단, 범용 기능 3가지(네트워크·세이브·로컬라이제이션) 추가 필요 ## 개발실 결정 사항 (향후 작업 기준선) ### 신규 기능 추가 시 판단 기준 - **코어(`DG.*`)에 넣는다**: 게임 장르에 무관하게 유용 + 제네릭·추상 가능 - **프로젝트(`FilGoodBandits.*`)에 넣는다**: 카드/덱/몬스터/상점 등 본 프로젝트 특수 개념 ### 금지 사항 - ❌ `BurningTimesCore` 안에 `Card*`, `Monster*`, `Shop*` 등 프로젝트 용어가 포함된 파일 생성 - ❌ `FilGoodBandits` 네임스페이스를 코어에서 참조 - ❌ 코어 enum에 프로젝트 특수값(`eCardType`의 신성폭격 등) 추가 ### 권장 후속 작업 1. **단기**: 코어 README / 시작 가이드 문서화 2. **중기**: 누락 3개 모듈 추가 (Save/Load, Localization, Network Interface) 3. **장기**: 오디오 매니저, VFX 래퍼, State Machine 등 확장 ## 결론 BurningTimesCore는 **BurningTimes 스튜디오의 범용 게임 개발 라이브러리로서 깨끗한 상태를 유지**하고 있으며, 다음 프로젝트에 그대로 재활용 가능한 품질입니다. 개발실은 앞으로 모든 코드 변경에서 이 경계를 지키는 것을 기본 원칙으로 삼습니다.