메모리 풀 크기 설정하기

사운드 엔진 내부의 메모리 풀의 기본 크기는 굉장히 큽니다. 그 이유는 사운드 엔진을 처음 사용할 때 최악의 경우에도 사용할 수 있는 충분한 자원을 확보해놓기 위해서입니다.

각 풀의 실제 기본 크기는 다음과 같습니다.

  • 16 MB - 기본 메모리 풀

  • 16 MB - 엔진 내부(lower engine) 메모리 풀

[참고] 참고

스트리밍 관리자를 통합할 때 샘플 코드가 사용된 경우 스트리밍 버퍼에 8 MB가 또 할당됩니다.

기본 메모리 풀의 크기는 궁극적으로 제작 중인 게임의 유형에 따라 다릅니다. 예를 들어 게임 오디오 에셋의 크기가 몇 기가바이트나 되지만 동시에 네 다섯 개 이상의 사운드를 재생하는 때가 거의 없으며 효과도 거의 사용하지 않을 경우, 기본 메모리 풀의 메모리 요구 사항은 더 크고, 엔진 내부 메모리 풀의 메모리 요구 사항은 더 작을 수 있습니다. 반대로 게임에 들어간 사운드는 몇 개 안 되지만 잔향, 반향, 다른 환경적 효과 등과 같은 여러 효과와 함께 사운드를 동시에 재생하는 일이 잦은 1인칭 슈팅 게임 류라면, 기본 메모리 풀의 메모리 요구 사항은 보다 작지만 엔진 내부 메모리 풀의 요구 사항은 더 커야 합니다.

엔진 내부 메모리 풀의 크기는 궁극적으로 사운드 엔진을 사용하는 법에 따라 달라집니다. 게임이 동시에 많은 보이스를 재생하고 여러 개의 효과를 처리해야 한다면 이 풀에는 더 많은 메모리가 필요합니다.

[참고] 참고
여기에는 가상 보이스도 포함됩니다!

PC라면 불러온 뱅크가 없거나 재생하는 사운드가 없을 때의 메모리 양이 대략 150kB 정도가 되어야 합니다. 정확한 값을 확인하려면 Wwise에서 Profiler 레이아웃으로 전환하여 Performance Monitor에서 Total Used Memory값을 확인하세요. 당연히 이 값은 불러오는 에셋의 개수, 재생하는 보이스의 개수, 게임 오브젝트 위치 등에 따라 올라갈 것입니다.

메모리 풀에 요구되는 크기는 오디오의 음질, 불러온 사운드의 개수, 동시에 재생하는 보이스의 개수, 사운드 구조의 복잡성, 인코딩 방식, 처리해야하는 효과의 개수, 3D 위치 지정(positioning)된 사운드의 개수, Switch 등 다양한 요인에 따라 달라집니다.

필요한 메모리의 양을 알 수 있는 유일한 방법은 다음 과정을 거치는 것입니다.

  • 메모리 풀에 임의적(arbitrary) 양의 메모리를 할당합니다. 가능하다면 기본 메모리 크기를 사용하는 것으로 시작하세요.

  • Wwise에 게임을 연결합니다.

  • Profile 버전의 사운드 엔진으로 아주 바쁜 게임 상황을 실행해 봅니다.

  • Advanced Profiler에서 Memory 탭을 확인합니다. Peak Used 열을 보면 필요한 풀의 크기가 얼마인지 예측할 수 있습니다. 대부분 각 풀의 최적의 크기는 피크 메모리 사용 값보다 15-20%만큼 더 많은 수준입니다.

  • Communications, Monitor, Monitor Queue 메모리 풀의 크기는 뺍니다. 이 풀은 디버그용 할당만 포함하기 때문에 출시 버전에는 포함되지 않습니다. 이 풀들의 크기를 빼면 출시 버전에 적합한 메모리 사용량을 예측할 수 있습니다.

[참고] 참고

또한 게임에 연결하지 않고 사운드 엔진 메모리 사용량을 프로파일링할 수도 있습니다. 간단히 캡처 세션을 시작한 후 Transport Control이나 Soundcaster에서 한 개 이상의 Event나 오브젝트를 재생하세요. 이러한 Event와 오브젝트를 재생하는 데에 사용한 메모리의 양이 Advanced Profiler의 Memory 탭에 표시됩니다.