UNREAL · 게임 시스템
미니맵·월드맵 좌표가 어긋나는 고질 버그
미니맵과 월드맵에서 플레이어 마커와 아이콘 좌표가 계속 조금씩 어긋났다. 어떤 맵에선 맞고 어떤 맵에선 틀리는, 잡았다 싶으면 또 나오는 고질 버그였다. 원인은 좌표 변환의 기준값을 잘못된 곳에서 읽은 데 있었다.
원인 — 맵 경계값을 런타임 SceneCapture에서 읽고 있었다
월드 좌표를 맵 UI 좌표로 바꾸려면 맵의 경계값(bounds)이 필요하다. 그 경계값을 런타임 SceneCapture 액터에서 읽는 구조였다. 그런데 이 SceneCapture가 상황(스트리밍, 로딩 순서)에 따라 로드되지 않는 경우가 있었고, 그러면 경계값이 비거나 엉뚱한 값으로 계산돼 좌표가 어긋났다. ‘어떤 맵에선 맞고 어떤 맵에선 틀리는’ 비결정적 증상의 정체였다.
해결 — 경계값을 DataAsset으로 직렬화
맵 경계값을 DA_MapConfig 같은 DataAsset에 직렬화해두고, 서브시스템이 이를 직접 로드하게 바꿨다. 런타임 캡처가 있든 없든 항상 같은 경계값을 쓰니 좌표가 흔들리지 않는다. 좌표 계산에서 SceneCapture 의존 자체를 끊은 것이다.
배운 점
좌표 변환처럼 ‘항상 같아야 하는 기준값’을 런타임에 존재해야만 하는 액터에 의존시키면 로딩 타이밍에 취약해진다. 있으면 맞고 없으면 틀리는 비결정적 버그가 여기서 나온다.
변하지 않는 설정값은 DataAsset으로 직렬화해 단일 소스로 두고, 서브시스템이 직접 읽게 하면 런타임 상태와 무관하게 안정적이다.