BurningTimesAi/프로젝트/수상한잡화점/개발/04_코어_범용성_분석_v1.md

6.7 KiB

NerdNavisCore 범용성 분석

작성일: 2026-04-14 조사 범위: D:/NerdNavis/FilGoodBandits/DeckBuilding/ Unity 프로젝트 판정 기준: C11 개발 관점 원칙 중 "코드의 범용성"

⚠️ 상태 변경 (2026-04-14 PD님 지시) 기존 NerdNavisCore타 회사 소유로 전환, 담당자 퇴사. 본 문서는 참고·아카이브 용도로만 유지되며, 코드 차용은 하지 않음. 너드나비스 자체 범용 코어를 별도로 신규 제작 (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/         에디터·개발 도구

경계 명확성

  • 폴더 분리: NerdNavisCore (외부 프로젝트) ↔ 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.*)에 넣는다: 카드/덱/몬스터/상점 등 본 프로젝트 특수 개념

금지 사항

  • NerdNavisCore 안에 Card*, Monster*, Shop* 등 프로젝트 용어가 포함된 파일 생성
  • FilGoodBandits 네임스페이스를 코어에서 참조
  • 코어 enum에 프로젝트 특수값(eCardType의 신성폭격 등) 추가

권장 후속 작업

  1. 단기: 코어 README / 시작 가이드 문서화
  2. 중기: 누락 3개 모듈 추가 (Save/Load, Localization, Network Interface)
  3. 장기: 오디오 매니저, VFX 래퍼, State Machine 등 확장

결론

NerdNavisCore는 너드나비스 스튜디오의 범용 게임 개발 라이브러리로서 깨끗한 상태를 유지하고 있으며, 다음 프로젝트에 그대로 재활용 가능한 품질입니다. 개발실은 앞으로 모든 코드 변경에서 이 경계를 지키는 것을 기본 원칙으로 삼습니다.