데브허브 | DEVHUB | [Unite On-Air 2025] Valheim의 에셋 스트리밍 구현 사례[Unite On-Air 2025] Valheim의 에셋 스트리밍 구현 사례
- 발하임은 콘텐츠 증가로 인해 메모리 사용량과 로딩 시간이 늘어나, 특히 Xbox One과 같은 구형 플랫폼에서 메모리 한계에 직면했습니다. 🎮
- 애슐렌즈 업데이트 출시를 위해 에셋 스트리밍을 도입하여 기본 메모리 사용량을 38% 절감하는 데 성공했습니다. 🚀
- 소프트 레퍼런스는 세밀한 제어가 가능하지만 로딩 지연을 유발할 수 있고, 하드 레퍼런스는 편리하지만 불필요한 에셋까지 미리 로딩할 수 있어 각각 장단점이 있습니다. 🔄
- 유니티는 기본적으로 대부분의 에셋을 하드 레퍼런스로 처리하여, 발하임처럼 단일 신에서 모든 게임플레이가 이루어지는 경우 모든 콘텐츠가 항상 메모리에 로드되어 확장성에 제약이 있었습니다. 🏗️
- 에셋 스트리밍은 게임플레이를 방해하지 않으면서 소프트 레퍼런스를 통해 에셋을 필요할 때 로드/언로드하는 기법으로, 주로 오픈월드 게임의 메모리 효율성을 높이는 데 사용됩니다. 🌊
- 에셋 스트리밍에 적합한 에셋은 필요 시점을 미리 예측할 수 있고, 평소에는 로드할 필요가 없으며, 고유하고 메모리를 많이 차지하는 콘텐츠여야 합니다. 🎯
- 발하임에서는 플레이어 근접도에 따라 스폰되는 '로케이션'과 '룸'이 에셋 스트리밍 조건에 완벽하게 부합하여 메모리 절감의 핵심 대상이 되었습니다. 🏘️
- 유니티의 어드레서블은 에셋 번들 기반의 소프트 레퍼런스 관리 패키지이지만, 암묵적 종속성 처리나 에셋 번들 언로드 제약 등 확장성 측면에서 한계가 있었습니다. 📦
- 에셋 번들은 암묵적 종속성으로 인한 중복 에셋 문제, 개별 에셋 언로드의 비효율성, 유니티 시스템 간의 종속성 관리 분리 등 여러 기술적 특이점을 가집니다. 🧩
- 발하임은 어드레서블의 한계를 극복하기 위해 빌드 시점에 프로젝트를 스캔하고 종속성 그래프를 자동 생성하여 최적의 에셋 번들 패킹을 수행하는 커스텀 'SoftRef' 시스템을 개발했습니다. 🛠️
- 커스텀 솔루션 도입 결과, 인게임 메모리 사용량을 38% 절감하고, 추가 최적화를 통해 RAM 사용량을 100-110MB 더 줄였으며, 동시 로드되는 에셋 번들 수를 1000개에서 수십 개로 대폭 감소시켰습니다. 📉
- 게임 개발 초기 단계부터 하드 레퍼런스의 영향을 신중히 고려하고, 특히 메모리 제약이 있는 플랫폼에서는 에셋 번들의 복잡성을 이해하여 프로젝트 규모에 맞는 맞춤형 솔루션을 고려하는 것이 중요합니다. 💡