HANPAN — BlackAndWhite 복귀 안정화 스냅샷
1. 주요 변경사항
- BlackAndWhite 게임 종료 후 Matching 씬으로 복귀할 때 버튼 중복 클릭을 막도록
_returnToLobbyBtn.interactable = false처리가 추가됐다. - 게임 씬이 메모리에 남는 동안 Canvas, EventSystem, AudioListener를 비활성화해 Matching 씬과의 입력·사운드 충돌을 줄였다.
- BlackAndWhiteController에서 Matching 씬 언로드 직전 EventSystem과 AudioListener를 선제 비활성화하여 한 프레임 중복 경고를 피하려 했다.
- GameManager.ReturnToMatchingLocal에 이미 Matching 씬이 로드된 경우 중복 로드를 막는 방어 코드가 들어갔다.
2. 코드 품질 리뷰
이번 변경은 실제 플레이 중 발생한 복귀 무반응, 중복 클릭, EventSystem 경고를 빠르게 줄이려는 목적이 명확하다. 문제를 재현 가능한 사용자 흐름에서 잡고 있다는 점은 좋다. 다만 해결 방식이 UI, GameManager, Controller에 흩어져 있어 같은 전환 책임을 세 군데가 나눠 갖게 됐다. 이 구조는 다음 버그에서 “누가 씬 상태의 주인인가”를 추적하기 어렵게 만든다.
가장 위험한 부분은 ReturnToMatchingLocal의 조용한 조기 반환이다.
if (existing.IsValid() && existing.isLoaded)
{
return;
}
주석에는 GameFlowManager가 아직 올바른 모듈을 표시하지 않을 수 있다고 적혀 있지만, 실제 보정 로직은 없다. 왜 문제냐면 버튼은 이미 비활성화되고 게임 씬 Canvas도 꺼진 뒤일 수 있어, Matching이 로드돼 있다는 이유만으로 사용자가 빈 화면 또는 잘못된 UI 상태에 갇힐 수 있다. 개선하려면 “씬 로드 여부”와 “Room UI 활성화 완료”를 별도 상태로 보고, 이미 로드된 경우에도 전환 완료 핸들러를 반드시 호출해야 한다.
또한 HideGameSceneComponents()가 씬 루트 전체를 훑어 모든 Canvas, EventSystem, AudioListener를 끄는 방식은 강한 처방이다. 당장은 충돌을 막지만, 이후 BlackAndWhite 씬 안에 결과 저장, 리매치, 관전 UI처럼 남아야 하는 Canvas가 생기면 같이 죽는다. 전환 전용 루트 오브젝트를 만들고 비활성화 대상 컴포넌트를 명시적으로 참조하는 방식이 더 안전하다.
3. 진행도 평가
이번 범위는 신규 기능 전진보다 복귀 플로우 안정화에 집중됐다. 4개 커밋 모두 fix(BW)이고 변경 파일도 3개뿐이라, 현재 프로젝트는 플레이 루프를 확장하는 단계라기보다 씬 전환 부채를 수습하는 단계로 보인다. 네트워크 게임에서 씬 로드와 로컬 복귀가 엮이는 부분이므로 위험도는 낮게 볼 수 없다.
진행도는 약 43%로 판단한다. BlackAndWhite 단위 플레이는 일부 동작하고 있으나, 멀티플레이 씬 생명주기, UI 상태 전이, 문서화된 권한 모델이 아직 약하다. 다음 단계에서 전환 구조를 정리하지 않으면 기능을 추가할수록 수정 비용이 빠르게 증가한다.
4. 다음 권장사항
- Matching 복귀 흐름을
GameManager또는 별도 SceneTransitionService 하나로 모아라. 버튼은 요청만 보내고 실제 씬·UI 처리는 한 곳에서 끝내야 한다. - Canvas, EventSystem, AudioListener의 씬별 소유권 규칙을 문서와 코드 상수로 고정하라. “그때그때 끈다”는 방식은 오래 못 간다.
- 2인 실행에서 연타, 동시 복귀, 한 명만 복귀, Matching 선로드 상태를 체크리스트로 검증하라. 이 버그는 단일 에디터 실행만으로 잡히지 않는다.
- 이미 Matching이 로드된 경우에도 Room 표시 완료 처리를 반드시 수행하라. 단순
return은 실패를 숨기는 코드다. - BlackAndWhiteGameUI의 씬 전체 스캔 비활성화는 명시 참조 방식으로 줄여라.
5. 문서화 상태
design 점수는 3점이다. 게임 방향과 개별 모드 의도는 일부 추정 가능하지만, 이번 변경처럼 복귀 UX가 어떤 경험을 보장해야 하는지 문서로 고정돼 있지 않다.
technical 점수는 2점이다. NGO, Additive Scene, Matching/Game 씬 생명주기, 로컬 복귀 권한 모델이 코드 주석에만 흩어져 있다. 신규 개발자가 문서만 보고 안전하게 수정하기 어려운 상태다.
spec 점수는 2점이다. 입력 매핑, UI 상태 전이, HUD 수치, 게임오버 이후 버튼별 결과가 테스트 표로 정리돼 있지 않다. 이번 버그군 자체가 사양 부재에서 나온 신호다.
6. Backlog
- 레벨/씬별 상세 사양서 입력 매핑·UI 상태 전이·HUD 수치 부재는 여전히 남아 있다. 이번 변경은 UI 전이 버그를 고쳤지만 사양 문서는 보강되지 않았다.
- Game_01_BlackAndWhite 씬 생성물 커밋으로 리뷰 비용이 커진 문제도 해결 근거가 없다. 씬 생성 방식과 리뷰 단위를 계속 관리해야 한다.
- 01_Lobby 씬 UI 하드코딩 문제는 이번 범위에서 손대지 않았다. 로비 UI도 전환 책임과 엮이므로 장기적으로 분리해야 한다.
- URP 템플릿 튜토리얼·Mobile 렌더러 잔존 문제도 변화가 없다. 제출 전 정리하지 않으면 프로젝트 신뢰도를 깎는다.