오디오 메모리 사용 최적화

다음 섹션에서는 게임 오디오의 런타임 메모리 필요량을 가능한 한 낮게 유지하는 데 사용할 수 있는 몇 가지 전략에 대해 설명합니다. 만드는 게임, 게임 내의 사운드 수, 대상 플랫폼을 비롯한 다양한 요소에 따라 선택하는 방법이 달라집니다.

Wwise 엔진에서 메모리를 관리하는 방법에 관한 Wwise 도움말 항목을 참조하십시오.

또한 게임의 메모리 사용 모니터링에 대한 팁과 다른 영역에서 런타임 메모리 사용을 줄이는 방법은 메모리 사용 최적화를 참조하십시오.

Wwise 프로파일러로 오디오 사용 모니터링

Wwise 편집기에는 Stingray 엔진에서 제공하는 공유 메모리 모니터링 도구보다 더 미세한 수준에서 게임이 오디오 클립을 로드 및 사용하는 방식을 추적하는 데 사용할 수 있는 기본 프로파일링 및 모니터링 시스템이 포함되어 있습니다.

프로파일링을 시작하는 방법:

  1. Stingray 편집기에서 로컬 PC 또는 연결된 다른 플랫폼에 있는 Stingray 프로젝트를 실행합니다.

  2. Wwise의 기본 메뉴에서 Layouts > Profiler를 선택합니다.

  3. 도구 모음에서 Remote...를 클릭합니다. 게임을 실행하는 호스트(나열된 경우)를 선택하고 Connect를 클릭합니다. 게임 호스트가 나열되지 않은 경우 Refresh를 클릭해 보거나 Connect to IP...를 클릭해 IP 주소를 지정합니다.

Memory 탭을 선택해 다음 그림과 같이 Wwise 엔진에서 사용하는 메모리에 대한 개요를 확인합니다.

Wwise 프로파일링은 최종 출시 버전이 아니라 게임의 디버그 및 개발 빌드에서만 사용할 수 있습니다.

프로파일링메모리 통계에 관한 Wwise 설명서를 참조하십시오.

다중 사운드 뱅크 사용

게임에서 리소스 패키지 로드 및 언로드를 위해 시스템을 설정한 경우 Wwise에서 여러 가지 다른 사운드 뱅크(또는 오디오 클립 집합)를 생성해 여러 Stingray 리소스 패키지에서 이러한 여러 사운드 뱅크를 들어 메모리 사용을 줄일 수 있습니다. 이렇게 하면 지정한 시간에 게인에서 실제로 필요한 사운드 세트만 메모리로 로드할 수 있습니다.

예를 들어 각 수준에 다른 리소스 패키지를 사용하도록 게임을 설정한 경우 각 수준에 대해 해당 수준에 필요한 사운드만 포함된 사운드 뱅크를 생성할 수도 있습니다. 그런 다음 각 수준의 뱅크를 해당 수준의 리소스 패키지에 추가합니다.

또는 게임에서 사운드를 아주 많이 사용하는 경우 보다 세부적인 뱅크 및 리소스 패키지를 생성할 수 있습니다. 예를 들어, 게임에 12가지 다른 모델의 무기가 있고 각기 별개의 고유한 사운드 효과가 있는 경우 각 무기의 오디오 클립에 대해 별도의 사운드 뱅크와 리소스 패키지를 생성할 수 있습니다. 그런 다음 플레이어가 새 무기를 선택할 때마다 게임 플레이 코드에서 해당하는 사운드 뱅크와 함께 새 리소스 패키지에서 스트리밍할 수 있습니다.

게임을 현지화하는 경우 특정 캐릭터 또는 수준에 대한 해설 및 대화 트랙을 해당 캐릭터 또는 수준에서 사용한 다른 사운드 효과와 별개의 뱅크 및 패키지에 보관하려고 할 수 있다는 점을 염두에 두십시오.

Stingray 리소스 패키지 사용에 대한 자세한 내용은 런타임 시 컨텐츠 로드 및 언로드를 참조하십시오.

클립 압축 및 다운샘플링

Wwise에서 사운드 뱅크를 생성할 때 프로젝트의 각 오디오 클립은 각 대상 플랫폼에 대해 형식 변환 과정을 거칩니다. 각 플랫폼에서 각 클립에 대해 사용되는 변환 설정을 변경할 수 있습니다.

Wwise에서는 변환 설정을 사전 설정에 저장하고 이러한 설정은 Conversion Settings Editor 창에서 편집할 수 있습니다. 새 Stingray 프로젝트를 만드는 경우 기본적으로 모든 클립에 대해 다음 기본 설정과 함께 해당하는 Wwise 프로젝트가 생성됩니다.

채널 수를 줄이고(즉, 스테레오 트랙에서 모노로 전환), 샘플링 속도를 낮추고, 적용되는 형식 및 압축 품질을 변경하는 등의 여러 가지 방법으로 변환 중 사용되는 메모리를 줄일 수 있습니다. 이러한 모든 방법은 결과 클립의 사운드 품질에 영향을 미치므로 설정을 지나치게 크게 변경하지 않도록 주의해야 합니다.

프로젝트의 모든 클립에 사용되는 기본 사전 설정을 지정하는 방법:

특정 클립 또는 컨테이너에 대한 변환 설정을 관리하는 방법:

자세한 내용은 플랫폼 교차 작성에 대한 Wwise 설명서를 참조하십시오.

오디오 클립 스트리밍

Wwise 엔진은 메모리로 전체 클립을 로드하는 대신 디스크에서 직접 데이터를 읽어 클립을 재생합니다. 따라서 파일을 로드하는 데 사용되는 메모리가 줄어들지만 디스크에서 데이터를 가져오는 동안 대기 시간이 약간 추가될 수 있습니다.

이 방법은 메모리가 크게 절약되는 긴 오디오 클립에 특히 유용합니다. 대기 시간이 발생할 수 있기 때문에 이 방법은 일반적으로 총알 발사와 같은 게임 이벤트에 맞춰 트리거되어야 하는 강력한 공격 사운드에는 적절하지 않습니다.

또한 DVD와 같은 느린 데이터 소스에서 게임을 읽어 오는 경우 일반적으로 대기 시간이 더 길어질 수 있습니다. 사운드 파일의 일부를 '미리 로드'하여 지연 시간을 상쇄할 수 있긴 하지만 이렇게 하면 절약되는 메모리의 양이 줄고 디스크 지연 시간이 사전 로드 버퍼보다 긴 경우 사운드가 빠질 수 있습니다.

클립에 대한 스트리밍을 활성화하려면 WWise Project Explorer에서 클립을 선택합니다. Property EditorGeneral Settings 탭에서 Stream 상자를 선택합니다.

Wwise 설명서를 참조하십시오.

Wwise 엔진 설정 최적화

Wwise 엔진은 게임 중 반복해서 사용하는 메모리 풀 여러 개를 예약합니다. 기본적으로 Stingray는 상당히 복잡한 오디오가 필요한 게임에 적절한 매우 큰 값을 사용해 이러한 엔진 풀에 대해 Wwise를 초기화합니다. 게임의 오디오 요구사항이 좀 더 완화된 경우 이러한 풀의 크기를 조정할 수 있습니다.

이러한 설정은 Stingray 게임의 settings.ini 파일에서 찾을 수 있습니다.

표시되는 Wwise 엔진 설정 목록은 Stingray 엔진 settings.ini 파일 참조를 참조하고, Wwise 설명서의 메모리 사용량 축소 팁도 참조하십시오.

사운드 디자인 기법

게임의 사운드 사용을 디자인하는 방식은 해당 디자인을 실현하기 위해 게임에서 필요로 하는 메모리의 양에 상당히 큰 영향을 미칠 수 있습니다.

긴 오디오 클립을 사전에 녹음해 메모리로 로드하는 것보다 런타임 시 게임에서 짧은 클립을 함께 동적으로 결합해 긴 사운드를 구성하는 것이 더 좋습니다. 이렇게 하려면 액터/믹서 계층에서 만든 임의, 시퀀스, 혼합 및 스위치 컨테이너에서 사운드를 동적으로 선택할 수 있도록 Wwise에서 제공하는 옵션을 활용할 수 있습니다.

예를 들어, 도시의 환경 소음이 필요한 경우 몇 분 길이의 단일 클립을 녹음해 반복해서 재생할 수 있습니다. 그러나 보다 짧은 클립을 여러 개 녹음한 다음 임의의 순서로 재생하도록 설정하고 클립 간에 크로스 페이딩해 유사한 효과를 얻을 수 있습니다. 이렇게 하면 계속해서 변화하는 주변 소음을 끊김 없이 원활하게 생성할 수 있습니다.

마찬가지로, 이러한 컨테이너를 사용해 작은 샘플로 구성된 라이브러리에서 여러 가지 종류의 무기 사운드를 결합할 수 있습니다. 예를 들어, 한 발의 총성이 녹음된 작은 클립 여러 개를 사이에 다양한 시간 차를 두고 결합하거나, 반동을 공유하거나, 여러 무기 간에 사운드를 다시 로드하는 방법으로 다양한 종류의 기관총 발사 사운드를 만들 수 있습니다.