6.8 KiB
6.8 KiB
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. 코어에 누락된 범용 기능은?
- 네트워크 인터페이스 — PlayFab 추상화 필요
- 구조화된 세이브/로드 — JSON/Binary 직렬화 + 암호화
- 로컬라이제이션 매니저 — 다국어 텍스트/애셋 관리
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의 신성폭격 등) 추가
권장 후속 작업
- 단기: 코어 README / 시작 가이드 문서화
- 중기: 누락 3개 모듈 추가 (Save/Load, Localization, Network Interface)
- 장기: 오디오 매니저, VFX 래퍼, State Machine 등 확장
결론
BurningTimesCore는 BurningTimes 스튜디오의 범용 게임 개발 라이브러리로서 깨끗한 상태를 유지하고 있으며, 다음 프로젝트에 그대로 재활용 가능한 품질입니다. 개발실은 앞으로 모든 코드 변경에서 이 경계를 지키는 것을 기본 원칙으로 삼습니다.