2025. 12. 30. 23:23ㆍ본 캠프
오늘 있었던 가장 큰 문제 중 하나는 HUD 및 화이트보드가 게임페이즈의 정보를 받지를 못하는 상황이었다.
1. 런타임 시 첫번째 진입시에는 문제가 없었다.
2. 다음 루프로 가기(신 재로딩) 또는 게임 중단 후 다시 새로운 게임 진입 후 HUD가 안나옴
이 상황이었는데 이벤트가 사라진 것도 아니고 어디서 문제가 터졌는지 찾기가 힘들어서 오래 헤맸다.
씬 재로딩 시 게임 상태는 초기화되는데 DDOL UI는 그 사실을 모르고 이전 상태를 전제로 동작해서
GameManager 쪽에서 리로딩시 페이즈변환됐다는 부분을 명시하고
그걸 수신해서 각 구독자들이 현재 어떤 '상태'인지를 알게 만드는 구조를 짰어야했다.
씬 재로딩/ 페이즈/ 루프 형식의 게임구조다보니 이벤트 구조에서 이런 문제가 필연적으로 발생할 수 밖에 없었고
이번 경험을 통해 추후 게임신의 구조를 알게되면 이런 부분을 바로 처리할 수 있도록 생각하게 된 좋은 경험이었다.

UI에서 주로 사용하게 될 루프/씬 재로딩시 게임의 상태를 알 수 있는 이벤트를 받아서
날짜/페이즈 별로 처리할 수 있는 이벤트를 만들어주고

항상 현재의 상태를 적용할 수 있도록 이전 루프의 캐싱을 지우는 단계를 꼭 진행해줘야 한다.
그리고 현재 게임매니저가 보고있는 페이즈와 동기화를 진행하고
Timer의 경우 Patrol 페이즈 진입시 켜져야 하기에 페이즈 제한을 설정해둔다.
UI를 이벤트를 통해서 활용할 경우 이렇게 씬 이동을 통해 전 상태에 대한 캐싱이 남아있기 때문에 항상 이 부분을 염두에 둬야한다.
비록 DDOL이라고 하더라도 직전 신에 연결되어 있던 상태자체는 따로 초기화하지않으면 이렇게 추적하기가 더 힘들어지기 때문에
신경써줘야 하는 부분이다.

현재 페이즈만 알면 되지않을까? 라고 생각했지만 새로운 루프에 진입했을 때 어떤 페이즈인지 게임매니저가 알려줘야 하는 부분도 잊고 있었기에 이 이벤트를 통해서 추후 작업에 있어서도 확장성이 좋아졌다.
또한 모든 Canvas를 DDOL로 운영하는 건 비효율적이라는 것도 깨달은 날이었는데
기존의 구조에서는 메인메뉴(인트로신 전용)도 같이 DDOL로 들고 있었지만 어차피 게임중단 또는 게임종료 시 IntroScene에 진입하게 되는 구조인데 굳이 DDOL로 들고 있을 필요가 없었다.
오히려 어렵게 가는 길이어서 고려해야되는 부분이 너무많았다. ESC입력 막기라던가 플레이어 입력 막기 등
고려에 고려같은 끊임없는 예외처리가 계속 생겨나는 이런 구조는 오히려 게임흐름에 독이 될 뿐이었다.
'본 캠프' 카테고리의 다른 글
| [내일배움캠프 본 캠프 67일차] 중간발표의 날 (0) | 2026.01.02 |
|---|---|
| [내일배움캠프 본 캠프 66일차] 상세보기 카메라를 분리하는 이유 (0) | 2025.12.31 |
| [내일배움캠프 본 캠프 64일차] 월드 오브젝트에 UI를 표시하기 (0) | 2025.12.29 |
| [내일배움캠프 본 캠프 63일차] 플레이루프 및 상세보기 테스트 (0) | 2025.12.26 |
| [내일배움캠프 본 캠프 62일차] EventBus 디버깅 (0) | 2025.12.24 |