| name | verify-login-flow |
| description | 타이틀 씬의 로그인 흐름(MVVM), 어드레서블 로딩, 앱 업데이트 관리를 검증합니다. |
로그인 흐름 검증
Purpose
타이틀 씬에서 시작되는 게임 진입 프로세스의 안정성과 아키텍처 준수 여부를 검증합니다:
- 어드레서블 로딩 —
LoadAddressableManager가 에셋을 정상적으로 로드하고 다음 씬으로 전환하는지 확인
- 로그인 MVVM —
LoginViewMVVM과 LoginViewModel 간의 데이터 바인딩 및 이벤트 구독 확인
- 인증 서비스 주입 —
LoginViewModel이 IAuthenticationService를 통해 인증 로직을 수행하는지 확인
- 앱 업데이트 관리 —
AppUpdateManager가 시작 시 업데이트 가용성을 체크하는지 확인
- 페이로드 전달 — 로그인 성공 후
ScenePayloadDTO를 통해 로비로 데이터를 올바르게 전달하는지 확인
When to Run
- 타이틀 씬의 UI나 로그인 로직을 수정한 후
- 어드레서블 에셋 설정이나 로딩 순서를 변경했을 때
- 앱 업데이트(
AppUpdateManager) 관련 로직을 수정했을 때
Related Files
| File | Purpose |
|---|
Assets/_Game/Scripts/Title/LoadAddresaableManager.cs | 어드레서블 로딩 매니저 |
Assets/_Game/Scripts/Title/LoginViewMVVM.cs | 로그인 뷰 (MVVM View) |
Assets/_Game/Scripts/Title/LoginViewModel.cs | 로그인 뷰모델 (MVVM ViewModel) |
Assets/_Game/Scripts/Manager/AppUpdateManager.cs | 앱 업데이트 관리자 |
Assets/_Game/Scripts/Data/DTOs/ScenePayloadDTO.cs | 씬 전환 통합 페이로드 |
Assets/_Game/Scripts/Lobby/Core/LobbySceneCompositionRoot.cs | 로비 진입점 (페이로드 소비 확인용) |
Workflow
Step 1: 어드레서블 로딩 및 싱글톤 검사
LoadAddressableManager의 구현 방식과 코딩 표준 준수 여부를 확인합니다.
파일: Assets/_Game/Scripts/Title/LoadAddresaableManager.cs
검사:
grep "class LoadAddresaableManager" Assets/_Game/Scripts/Title/LoadAddresaableManager.cs
grep "Addressables.InitializeAsync()" Assets/_Game/Scripts/Title/LoadAddresaableManager.cs
PASS: 초기화 로직이 존재함
FAIL: 어드레서블 로딩 로직이 없거나 명칭이 일치하지 않음
Step 2: 로그인 MVVM 바인딩 및 DI 검사
View와 ViewModel 간의 결합도와 의존성 주입 구조를 확인합니다.
파일: Assets/_Game/Scripts/Title/LoginViewMVVM.cs, Assets/_Game/Scripts/Title/LoginViewModel.cs
검사:
grep "m_viewModel = new LoginViewModel(m_serverManager.Auth)" Assets/_Game/Scripts/Title/LoginViewMVVM.cs
grep "m_viewModel.OnLoginSuccess += OnLoginSuccess" Assets/_Game/Scripts/Title/LoginViewMVVM.cs
grep "private readonly IAuthenticationService m_authService" Assets/_Game/Scripts/Title/LoginViewModel.cs
PASS: 인터페이스 기반 DI 및 이벤트 바인딩이 확인됨
FAIL: 구체 클래스 직접 참조 또는 바인딩 누락
수정: IAuthenticationService 인터페이스 사용 및 BindViewModel 로직 보강
Step 3: 초기화 시 앱 업데이트 체크 및 리모트 동기화 수행 확인
앱 시작 시 AppUpdateManager를 통해 업데이트를 확인하는지 검증하고, LoadAddresaableManager에서 리모트 데이터 동기화가 수행되는지 확인합니다.
파일: Assets/_Game/Scripts/Title/LoginViewMVVM.cs, Assets/_Game/Scripts/Title/LoadAddresaableManager.cs
검사:
LoginViewMVVM.cs에서 앱 업데이트 체크 확인.
LoadAddresaableManager.cs에서 UpdateAllRemoteDataAsync 호출 확인.
grep "await AppUpdateManager.Instance.CheckForUpdateAsync()" Assets/_Game/Scripts/Title/LoginViewMVVM.cs
grep "UpdateAllRemoteDataAsync" Assets/_Game/Scripts/Title/LoadAddresaableManager.cs
PASS: 업데이트 체크 및 리모트 동기화 로직이 올바른 위치에서 확인됨
FAIL: 호출 누락 또는 잘못된 위치에서 호출됨
Step 4: 로비 전환 페이로드 및 첫 로그인 플래그 검사
로그인 성공 후 로비로 전환할 때 ScenePayloadDTO를 올바르게 구성하고 IsFirstLogin 플래그를 설정하는지 확인합니다.
파일: Assets/_Game/Scripts/Title/LoginViewMVVM.cs, Assets/_Game/Scripts/Lobby/Core/LobbySceneCompositionRoot.cs
검사:
grep "IsFirstLogin = true" Assets/_Game/Scripts/Title/LoginViewMVVM.cs
grep "if (payload.IsFirstLogin)" Assets/_Game/Scripts/Lobby/Core/LobbySceneCompositionRoot.cs
PASS: 타이틀에서 플래그를 설정하고 로비에서 이를 분기 조건으로 사용함
FAIL: 플래그 설정 누락 또는 로비에서 조건 없이 항상 서버 로드 시도
수정: ScenePayloadDTO 생성 시 IsFirstLogin = true 할당 및 로비 진입점에서 조건 처리
Step 5: 사운드 초기화 순서 검증
저장된 볼륨 설정이 적용된 상태에서 BGM이 재생되도록 LoadSoundSetting 호출이 Play 보다 선행되는지 확인합니다.
파일: Assets/_Game/Scripts/Title/LoginViewMVVM.cs
검사:
grep -nE "LoadSoundSetting|Play\(SoundKeys.Intro" Assets/_Game/Scripts/Title/LoginViewMVVM.cs
PASS: LoadSoundSetting 호출 라인 번호가 Play 호출 라인 번호보다 작음
FAIL: Play 이후에 설정이 로드되어 볼륨이 튀는 현상 발생 가능
수정: LoadSoundSetting() 호출을 BGM 재생 시점 위로 이동
Output Format
로그인 흐름 검증 결과
| 검사 항목 | 상태 | 파일/상세 |
|---|
| 어드레서블 로딩 | PASS | LoadAddresaableManager 확인 |
| MVVM 바인딩 | PASS | LoginViewMVVM-LoginViewModel 연결됨 |
| 씬 전환 페이로드 | PASS | ScenePayloadDTO 및 IsFirstLogin 플래그 확인 |
Exceptions
LoadAddresaableManager는 인프라 성격상 싱글톤 사용이 허용됨.
AppUpdateManager는 에디터나 iOS 환경에서는 동작하지 않으므로 플랫폼 분기(if) 처리 여부 확인.