Seven-Shards-ORIGIN — 세이브·입력·보스 통합 스냅샷
1. 주요 변경사항
- 세이브 흐름, 타이틀/일시정지 UI, 입력 리바인딩 쪽이 크게 재편됐다.
GameplayInput제거 후 액션 카탈로그와 기본 바인딩 JSON으로 이동한 점은 방향이 좋다. - LAN 로비와 MultiRoom UI에 런타임 뷰, 입력 라우터, 상태 프리젠터가 추가됐다. 다만 네트워크 흐름과 UI 흐름이 동시에 바뀌어 회귀 위험이 높다.
- 최종 보스 관련 코드와 프리팹, 전용 에디터, 게이트 도어가 대량 변경됐다. 보스전 구성은 전진했지만 책임 분리가 아직 충분하지 않다.
TrapFieldWest.unity는 3만 줄 이상 변경됐고 Mesh fileID, 빈 Mesh, Texture 직렬화가 섞였다. 실질 레벨 변경을 리뷰하기 어렵다.- TMP 한글 폰트 자동 구성, Missing Script 감사, 복구 씬, 스크린샷이 추가됐다. 디버깅 보조 작업은 긍정적이나 산출물 관리 기준이 필요하다.
2. 코드 품질 리뷰
입력 시스템을 데이터 기반으로 옮긴 선택은 칭찬할 만하다. InputDefaultBindings.json, GameplayInputActionCatalog, InputBindingDataConfigurator 조합은 향후 키 리바인딩 UI와 저장 포맷을 분리할 수 있는 기반이다. 다만 GameplayInput 삭제와 런타임 호스트 수정이 한 커밋에 함께 들어가 있어, 기본 바인딩 누락·액션명 변경·저장 데이터 호환성 문제를 테스트 없이는 찾기 어렵다. 개선은 기본 바인딩 로드 실패, 중복 바인딩, 기존 저장값 마이그레이션을 EditMode 테스트로 고정하는 것이다.
가장 큰 위험은 씬 변경이다. TrapFieldWest.unity는 보스 게이트, 바닥, 스폰 포인트 같은 실제 레벨 변경과 URP 2D ShadowCaster Mesh 재직렬화가 뒤섞였다. 왜 문제인가 하면, 충돌체 하나가 사라졌는지 또는 Unity가 fileID만 재배치했는지 리뷰어가 판단할 수 없기 때문이다. 개선은 씬 자동 정규화 후 재저장, 실질 GameObject 변경만 별도 커밋, 스크린샷 기반 검증을 체크리스트에 묶는 것이다.
네트워킹 쪽은 NetworkReconnectRuntimeState, LanRoomDiscovery, MultiRoomCoordinator, CoopLanLobbyDriver가 함께 움직였다. 상태 재접속을 다루기 시작한 점은 필요하지만, 이 상태의 권위가 서버인지 로컬 런타임인지 코드 구조만으로 분명하지 않다. 특히 UI 라우터와 로비 드라이버가 세션 선택, 입력, 발견, 재접속을 동시에 만지면 장애 시 재현이 어렵다. 로비 도메인 모델, 네트워크 어댑터, 화면 프리젠터를 더 명확히 분리해야 한다.
3. 진행도 평가
플레이 가능한 빌드에 필요한 축은 계속 전진 중이다. 입력 저장, 세이브 선택, 최종 보스 입장, 로비 플로우까지 실제 게임 흐름을 닫으려는 움직임이 보인다. 진행도는 약 60%로 본다. 핵심 루프는 형태가 있지만, 안정화와 검증 체계는 아직 부족하다.
위험도는 높다. 커밋 수는 2개뿐인데 142개 파일과 대형 씬이 함께 바뀌었고, 커밋 메시지 Fixed는 무엇이 고쳐졌는지 추적할 수 없다. 네트워킹과 씬 직렬화 부채가 겹친 상태라 지금 정리하지 않으면 이후 버그 재현 비용이 급격히 커진다.
4. 다음 권장사항
TrapFieldWest.unity 실질 변경만 분리해 씬 diff 재작성: 보스 영역 변경과 Unity 재직렬화 노이즈를 분리해 리뷰 가능한 커밋으로 다시 만든다.FinalBossEnemy2D를 상태·패턴·연출 책임으로 분리: 페이즈 상태, 공격 패턴, 피격·연출을 별도 클래스로 나눠 테스트 가능한 단위로 낮춘다.LAN 로비와 MultiRoom 흐름의 권한·재접속 테스트 고정: 호스트 이탈, 재접속, 씬 재로드, 슬롯 선택을 최소 2인 시나리오로 검증한다.InputDefaultBindings.json 로딩·리바인딩 회귀 테스트 작성: 기본 바인딩, 저장값 복원, 누락 액션명 실패를 자동화한다.Unity 로컬·에이전트 설정 파일 커밋 정책 정리:.claude와.agents류 개인 도구 설정이 팀 빌드 입력인지 명확히 결정한다.
5. 문서화 상태
design은 3점이다. 게임의 핵심 경험, 보스전 의도, 협동 플레이 목표가 문서로 체계화됐다는 근거가 약하다. 현재 변경은 구현 중심이며 “왜 이 구조인가”를 설명하는 디자인 문서가 부족하다.
technical은 4점이다. AI_HANDOFF.md, DOT_ASSET_SWAP_TODO.md 같은 인수인계성 문서는 있으나, 네트워크 권한 모델·입력 데이터 흐름·씬 전환 흐름을 신규 인원이 이해할 수 있는 수준으로 묶지는 못했다.
spec은 3점이다. 스크린샷과 체크성 문서가 추가된 흔적은 있으나 _sample/docs 수준의 씬/레벨/입력/상태 결과 매핑 표가 아니다. 다음 단계는 플레이테스트 체크리스트를 실제 검증 항목으로 복원하는 것이다.
6. Backlog
- MultiRoomCoordinator의 LAN 로비 집중은 일부 분산됐지만, 조정자 책임이 아직 크다.
- 플레이테스트 체크리스트의 새 위치와 사용 기준은 이번 변경만으로 확인되지 않는다.
- FinalBossEnemy2D는 보스전 핵심 책임이 계속 한 클래스에 몰릴 위험이 높다.
- TrapFieldWest 씬은 Mesh fileID 셔플이 많아 실질 변경 식별성이 낮다.
- Resources 기반 로딩은 입력 기본값과 폰트 추가로 오히려 의존이 늘었다.
- UI Bootstrap/Driver/RootRefs 규약은 코드 구조 문서로 승격되지 않았다.
- LocalizedStrings의 다국어 fallback과 누락 키 리포트는 아직 근거가 없다.
- GameLocale 변경 시 기존 TMP 텍스트 재갱신 문제도 해결 근거가 없다.
- zh-Hans, zh-Hant, ja 폰트 대리 사용은 계속 품질 리스크로 남는다.