프로젝트 개요
report · 3 of 8 · 3 commits · 1f32eeef0a3f70ef4f3ffde979fb7d5ed11ab81c..8ccb461071388b2fc708bfe5ab8266445d903d4d

던전 생성은 전진했지만 검증·씬 정리가 부족하다.

HIGH 진행도 34% (+ 6pts) 2026. 4. 28. PM 9:13

프로젝트 예상 진행도

기준: 2026. 4. 28. PM 9:13
34 / 100

문서화 상태

Design
4/10
Technical
2/10
Spec
2/10
#던전생성 #네트워킹 #씬관리 #기술부채 #문서화

Exit-or-die — 던전 생성 안정화 스냅샷

1. 주요 변경사항

2. 코드 품질 리뷰

이번 변경은 목표가 분명하다. “방 위에 복도 생성 제거”, “복도 위치를 방 타일과 맞춤”이라는 커밋 메시지와 실제 코드 방향이 일치한다. SnapPositionToSmallGrid, SnapPositionToSmallTileCenter, IsInsideAnyRoom처럼 좌표 보정과 방 판정을 메서드로 분리한 점은 이전보다 낫다. 던전 생성이 단순 랜덤 배치에서 방 단위 구조로 이동한 것은 올바른 전진이다.

다만 현재 구현은 아직 안정화 단계라고 보기 어렵다. GenerateDungeonFlow가 방 선택, 분리, 실제 생성, 네트워크 스폰, 복도 연결까지 모두 직접 조율한다. 생성 알고리즘·Unity 오브젝트 생성·NGO 스폰 책임이 한 클래스에 섞여 있어 버그가 발생하면 원인 분리가 어렵다. 특히 roomBlueprints[Random.Range(...)], GetPrefab(size)는 빈 배열이나 미설정 참조에 대한 방어가 없다. 인스펙터 설정 하나가 빠지면 런타임에서 바로 터진다.

RoomConfig bp = roomBlueprints[Random.Range(0, roomBlueprints.Count)];
GameObject GetPrefab(int size) => ...

더 위험한 부분은 네트워크 오브젝트 처리다. 방 부모 오브젝트와 복도 그룹을 런타임에 만들고 NetworkObject를 붙여 즉시 Spawn()한다. 이후 자식 타일을 생성해 SetParent한다. NGO에서는 스폰된 NetworkObject의 부모 관계 동기화와 자식 NetworkObject 처리 순서가 민감하다. 현재 구조는 호스트에서는 우연히 보이더라도 클라이언트 입장에서 부모·좌표·스폰 순서가 어긋날 여지가 있다.

3. 진행도 평가

진행도는 약 34%로 본다. 던전 생성 기능은 방향성이 생겼고 방/복도 생성이라는 핵심 축에 실제 구현이 들어갔다. 그러나 플레이 가능한 품질로 보려면 아직 재현성, 충돌 검증, 네트워크 동기화 검증, 씬 정리가 부족하다.

이번 커밋 3개는 모두 수정성 커밋이며, 순수 기능 확장보다는 생성 결과를 맞추는 시행착오에 가깝다. 이는 나쁘지 않지만, 이제부터는 눈으로 맞추는 단계에서 벗어나야 한다. 던전 생성은 랜덤성이 크므로 자동 검증 없이 계속 수정하면 같은 문제가 반복된다.

4. 다음 권장사항

5. 문서화 상태

design 점수는 4점이다. 프로젝트 컨셉 문서는 있는 것으로 보이나, 이번 변경의 핵심인 던전 구조가 어떤 플레이 경험을 만들기 위한 것인지 연결 설명이 부족하다.

technical 점수는 2점이다. 네트워크 권한 모델, 런타임 생성 오브젝트의 스폰 정책, 던전 생성 데이터 흐름을 신규 개발자가 문서만 보고 이해하기 어렵다.

spec 점수는 2점이다. 방 크기, 복도 폭, 좌표 그리드, 생성 실패 조건, 테스트 체크리스트가 사양으로 고정되어 있지 않다. 현재는 코드가 사실상의 사양인데, 랜덤 생성 시스템에서 이는 위험하다.

6. Backlog

리포트 타임라인

8개 스냅샷 · 최신순