24.05.27 20:20 작성
·
186
0
강의와는 별개로 아무리 찾아봐도 해결이되지않아서 혹시나 싶어서 질문남깁니다 ㅜㅜ.
비동기로 씬을 전환하는데, main씬-> loading씬(빈공간) -> 던전씬 으로 이동을 하려할때 main씬에서 로딩씬으로 이동 실행하면 에디터가 멈추고 10 ~ 15초 정도 뒤에 로딩씬으로 이동하고 또다시 10~ 15초 뒤에 던전씬으로 이동이 됩니다.
원인은 하이어라키에 맵이 좀 큰거같다고 생각합니다.
그래서 던전에 있는 오브젝트를 비활성화 or 삭제를 했는데도 loading 에서 -> 던전까지 멈춤이 5초정도 걸립니다. ㅜㅜ.
보통 게임같은거보면 맵이 아무리 커도 로딩씬까지 이동이 바로되고 그러던데 어떤방식인지, 어떤식으로 접근해야할지 궁금합니다 ㅜㅜㅜ.
답변 1
1
2024. 05. 27. 21:40
안녕하세요.
방식은 보통 두 가지가 있습니다.
하나는 보통 존 혹은 심리스 로딩이라고 불리는 방식으로 큰 맵을 여러 구역으로 쪼갠 뒤, 주변 맵을 캐릭터의 위치에 따라 동적으로 로딩하는 방식입니다.
https://www.youtube.com/watch?v=AKfjpCspFy8
해당 영상을 보시면 이해가 빠르실겁니다.
다른 하나는 위와 비슷하게 하나의 씬을 여러 씬으로 쪼개뒤(객체 별로 비슷한 속성의 것들끼리 모아서) Additive 모드로 Loading하는 방식입니다. 플레이를 하면서 실시간으로 전체 맵을 Load해가는거죠. 옛날 3D 게임들을 보면 맵이 실시간으로 Load되는 모습을 쉽게 볼 수 있구요, Scene이 실시간으로 Load되는 모습을 유저에게 보이면 디자인적으로 좋지 않다고 여겨지기 때문에 많은 게임들이 맵 디자인과 다양한 눈속임으로 실시간으로 Load되는 모습을 감춥니다. 상대적으로 맵 규모가 작다면 이 방식이 훨씬 편합니다.
위 두 방식을 섞어 사용해서 Loading 시간을 더욱 단축시키기도 합니다.
참고로 유니티에선 위 두 방식을 직접 구현해야하지만 언리얼 엔진에서는 레벨 스트리밍이라는 이름으로 기능을 제공합니다.
Loading씬으로 빠른 전환이 필요하시다면 이것 또한 속임수가 있습니다. 바로 Loading Scene 이동을 시키는 것이 아니라 Additive 모드로 Loading Scene을 불러와서 화면에 Loading Scene이 보이게 한 다음, Main Scene을 Unload하고 다음 Scene의 Loading을 진행하면 실제론 Loading Scene에서 이전 Scene의 해제와 새로운 Scene의 Load가 다 일어나지만 유저가 보기에는 바로 Loading Scene으로 넘어와서 새로운 Scene의 Load만 일어나는 것처럼 보이게 됩니다. 물론 눈속임이기 때문에 Main Scene 해제에 15초, 다음 Scene Loading에 15초가 걸렸다면 유저는 다음 Scene Loading만 30초가 걸리는 것처럼 보일겁니다. 조삼모사이긴 하지만 Main Scene의 해제가 오래걸린다면 효과적인 방법입니다.
위 두 방식에 이런 눈속임까지 섞는다면 로딩이 더욱 빨라보이겠죠.
이처럼 실제 Loading 시간과 유저가 느끼는 체감 Loading 시간을 줄이기 위해서는 다양한 기법과 속임수가 필요하며 많은 개발자들이 항상 고민하는 문제이기도하니 다각도로 접근해보시기 바랍니다. 다만 Loading 시간을 줄이기 위해서 동적 로딩 방식을 취하게되면 그에 따라서 여러 설정들도 동기화 시켜야하기 때문에 개발 난도가 올라간다는 점은 명심하셔야합니다.
감사합니다.
2024. 05. 27. 22:25
감사합니다 ㅠㅠ