HANPAN — 로비/룸 네트워킹 스냅샷
1. 주요 변경사항
- 기존
00_Boot,01_Lobby,BlackAndWhite씬 명칭이Base_*,Game_*체계로 정리됐다. 빌드 씬 구조를 구분하려는 의도는 좋다. - 로비에서 방 목록 조회, 방 생성, 빠른 참가, 코드 참가 UI가 확장됐다.
LobbyUI,SessionManager,GameType중심으로 M2 로비 흐름이 실제 기능 단위로 진입했다. Room폴더와 asmdef,RoomUI,PlayerSlotUI,RoomUIBuilder가 추가됐다. 대기실 화면을 로비와 분리한 결정은 방향이 맞다.- 다만 커밋 7개 중 6개가
fix/debug성격이다. 기능 확장보다 네트워크·로비 증상 추적에 많은 시간이 소모되고 있다는 위험 신호다.
2. 코드 품질 리뷰
이번 변경의 장점은 로비와 룸을 분리하고, GameType 같은 공통 개념을 코드로 올리기 시작했다는 점이다. 이전보다 “방 목록 → 방 생성/참가 → 룸 대기”라는 사용자 흐름이 분명해졌다. 또한 QuerySessionsAsync 추상 호출을 우회하고 LobbyService.Instance.QueryLobbiesAsync를 직접 호출하도록 고친 흔적은 SDK 실제 동작을 확인하며 문제를 좁힌 것으로 보인다.
문제는 UI와 네트워크 흐름의 복잡도가 너무 빠르게 씬 YAML과 MonoBehaviour에 쌓이고 있다는 점이다. Base_01_Lobby.unity가 신규 6526라인, Base_02_Room.unity가 2328라인 규모로 커졌다. 여기에 LobbyUIBuilder와 RoomUIBuilder가 병행되면, UI 변경의 원천이 씬인지 에디터 빌더인지 런타임 스크립트인지 흐려진다. 왜 문제냐면 Unity 씬 YAML은 병합 충돌과 리뷰 비용이 매우 높고, UI 참조가 깨져도 PR 단계에서 잡기 어렵기 때문이다. 개선하려면 반복 UI는 프리팹화하고, 빌더는 초기 생성용으로만 제한하며, 런타임 참조는 명명 규칙보다 직렬화 필드와 프리팹 계약으로 고정해야 한다.
네트워크 쪽은 더 엄격하게 봐야 한다. 방 목록 조회 오류를 고치는 커밋이 여러 번 이어졌다는 것은 원인 분석 체계가 아직 약하다는 뜻이다. Lobby Service의 Lobby 데이터, NGO의 NetworkManager 상태, 룸 UI의 준비 상태가 어느 계층을 원본으로 삼는지 명확해야 한다. 지금 이 경계가 흐리면 재접속, 씬 전환, 호스트 이탈에서 같은 종류의 버그가 반복된다.
3. 진행도 평가
이전 리포트 대비 기능 전진은 있다. 로비/룸 아키텍처가 생겼고, 단순 메뉴 수준에서 온라인 방 흐름으로 이동했다. 하지만 “플레이 가능한 빌드” 관점에서는 아직 중간 이전이다. 핵심 게임 규칙보다 세션 생성과 조회 안정화에 발목이 잡힌 상태다.
진행도는 34%로 본다. 로비 기반은 잡혔지만 네트워크 권한 모델, WebGL 전송 계층, 재접속/씬 재로드 복구, 게임 규칙 사양이 모두 미해결이다. 지금 설계를 정리하지 않으면 다음 단계의 게임플레이 동기화에서 비용이 급격히 증가한다.
4. 다음 권장사항
- 로비·룸 상태의 소유자와 권한 경계를 문서와 코드에 명시해야 한다. Lobby 데이터와 NGO 상태의 원본을 분리해야 한다.
Base_01_Lobby와Base_02_RoomUI를 프리팹 기반으로 분리해야 한다. 씬 YAML 수천 라인은 즉시 줄여야 한다.- 방 생성·조회·참가 실패 케이스를 재현 가능한 테스트 절차로 고정해야 한다. 디버그 로그 추가만으로는 품질이 안정되지 않는다.
- WebGL 전송 계층과 Relay/Lobby 조합의 최종 지원 범위를 결정해야 한다.
- 흑과 백 게임 규칙·점수·승패 조건을 별도 사양서로 분리해야 한다.
5. 문서화 상태
design은 4점이다. 컨셉과 개발 계획은 유지되고 있으나, 이번 변경의 핵심인 로비/룸 사용자 경험과 실패 상태 UX가 충분히 설명되지 않는다. 왜 이 흐름이 최종 경험에 적합한지까지는 아직 약하다.
technical은 4점이다. 아키텍처 재설계가 코드에는 반영됐지만, Lobby Service, Relay, NGO, 씬 전환의 데이터 흐름이 문서로 따라오지 못했다. 신규 인원이 문서만 보고 세션 흐름을 복원하기 어렵다.
spec은 2점이다. 게임 규칙, 씬별 UI 상태 전이, 준비 상태, 방 공개/비공개 조건, 참가 실패 메시지 기준이 테스트 가능한 표로 정리되어 있지 않다. _sample/docs 수준과는 아직 거리가 크다.
6. Backlog
- WebGL 환경에서 NGO 전송 계층이 아직 확정되지 않았다. 플랫폼 목표가 WebGL이면 미루기 어렵다.
- 네트워크 권한 모델이 여전히 문서와 코드에서 명확하지 않다. 준비 상태와 방 상태의 원본을 정해야 한다.
- 흑과 백 규칙 수치가 별도 사양서로 분리되지 않았다. 구현 전 기준선이 부족하다.
- 레벨/씬별 입력 매핑, UI 상태 전이, HUD 수치 사양이 없다. QA 체크리스트로 쓰기 어렵다.
- URP 템플릿 튜토리얼과 모바일 렌더러 자산 정리 여부가 남아 있다.
- 재접속, 연결 끊김, 씬 재로드 복구 시나리오가 미정의다.
- 로비 UI 하드코딩 문제는 해결되지 않았고,
Base_01_Lobby6526라인으로 오히려 커졌다.