버전

menu_open
Wwise Unreal Integration Documentation
WwiseFileHandler 모듈

The WwiseFileHandler module prepares and handles all External Sources, media, and SoundBank files. 이 모듈은 파일을 미리 로드하고 스트리밍하지만 모듈 자체가 관련 파일의 종속성을 확인하지는 않습니다.

각 파일은 한 번만 열리는 개별 오브젝트로 처리되며 파일 사용은 File State를 통해 개별적으로 추적됩니다. 아래에 설명된 세 가지 관리자 중 하나에 File State를 사용할 수 있게 되면 해당 파일을 Sound Engine I/O Hook과 Sound Engine File Location Resolver 에서 사용할 수 있게 됩니다.

WwiseFileHandler는 파일을 File State의 옵션으로 함께 먼저 등록하기 위해 WwiseResourceLoader 가 필요합니다. 그러면 Sound Engine의 File Location Resolver에서 해당 파일에 접근할 수 있게 됩니다.

메타사운드가 GeneratedSoundBanks 폴더에 저장되며 패키징 정보로 에셋과 함께 쿠킹되기 때문에 WwiseResourceLoader 모듈 는 어떤 리소스가 필요한지 결정할 수 있고 WwiseFileHandler는 필요할 수 있는 리소스를 로드하기 전에 모든 File State를 제공하게 됩니다.

File State

File State는 WwiseFileHandler 모듈에 known file을 선언합니다. Load와 Unload 작업을 사용해서 파일이 WwiseFileHandler에 표시되어 이미 로드되었는지 여부와 참조 횟수를 결정합니다. 해당 파일에 대한 사용자가 있는 한 해당 File State는 활성 상태로 유지됩니다.

각 File State와 관련된 새로운 모든 작업은 해당 Execution Queue에서 실행되며 대기 중인 작업은 비동기식이며 순차적으로 실행됩니다. 이러한 File State의 비동기식 특성으로 인해 각 File State에는 공용 비동기 메소드(public asynchronous method)와 보호된 동기 메소드(protected synchronous method)의 두 가지 레벨이 있습니다. 각 공용 메소드는 그저 작업을 Execution Queue로 푸시하는 래퍼(wrapper)입니다.

여기에서는 Closed, Opened, Loaded의 세 가지 기본 상태를 사용할 수 있습니다. 이러한 각 상태의 정의는 약간 모호하지만 대략적으로 다음과 같이 정의할 수 있습니다.

  • Closed: 해당 파일을 안전하게 삭제할 수 있음. 시스템에서 사용 중인 리소스가 없으며 적은 양의 메모리만 사용합니다.
  • Opened: 정의 파일 작업이 완료됨. 해당 파일이 열렸고 부분적 또는 완전히 메모리에서 읽혔을 수 있는 상태입니다. 스트리밍 미디어의 경우 파일이 열려 있으며 미리 로드된 데이터가 필요한 양 만큼 캐시되어 있는 상태입니다. 메모리에 계속 존재하는 미디어의 경우 파일이 열린 다음 전부 읽히고 닫힌 상태입니다. 사용 가능한 포인터는 Opened 상태입니다.
  • Loaded: 정의된 Sound Engine 작업이 완료됨. Sound Engine이 파일을 인식하고 있거나 사용할 수 있는 상태입니다. 예를 들어, 스트리밍 미디어의 경우 I/O Hook에서 파일의 콘텐츠를 읽을 수 있습니다. 메모리에 로드된 미디어 파일의 해당 데이터는 SetMedia 작업을 통해 Sound Engine으로 전송되었습니다. 마찬가지로 SoundBank의 경우 데이터는 LoadBank 메소드 계열을 통해 처리됩니다.

또한 기본 File State 중 하나로의 전환을 나타내는 중간 File State도 있습니다.

작업이 시간이 오래 걸릴 수 있고 비동기적이기 때문에 여러 작업이 동일한 파일이 로드되기를 기다리고 있을 수 있습니다. 이럴 경우 하나의 작업만 진행되고 다른 모든 작업은 작업이 완료될 때까지 기다린 후 상태를 반환합니다. . 예를 들어, 12개의 서로 다른 Event가 포함된 User-Defined SoundBank에서 12개 Event 모두 동일한 SoundBank를 로드하도록 요청할 수 있습니다. 이 경우 Event는 해당 SoundBank가 로드되었을 때만 진행됩니다.

Unloading 시 오디오 작업이 길다면 특별한 주의가 필요합니다. 예를 들어, 긴 리버브 꼬리가 있는 AK Convolution Reverb 파일은 공명(resonation)이 완료될 때까지 언로드할 수 없습니다. 또는 특정 미디어의 반복 재생이 계속해서 중단되지 않을 수도 있습니다. 이러한 작업은 몇 초 동안 일시적인 상태로 유지될 수 있습니다.

또한 리버브의 꼬리가 처리되는 동안, 우연히 동일한 미디어가 필요한 새 맵에 대한 리소스를 수집하는 등 같은 파일이 요청될 수도 있습니다. 이 경우 Unloading 상태에 갇히지 않고 Reloading으로 상태가 변경되고 Unloading 작업이 가능한 한 빨리 취소된 다음 Loaded 상태로 돌아갑니다.

Sound Engine I/O Hook과 Sound Engine File Location Resolver

Sound Engine I/O Hook과 Sound Engine File Location Resolver는 함께 작동하여 스트리밍된 에셋의 수명을 처리합니다. 먼저 File Location Resolver는 WwiseFileHandler에게 파일을 열도록 요청합니다. 그리고 파일이 열리면 I/O Hook은 WwiseFileHandler가 필요에 따라 해당 파일에 대한 비동기식 Read 요청을 충족하도록 요청합니다.

Resolver를 통해 파일을 열려면 다음 단계를 따르세요.

  1. 전달된 Short ID를 기반으로 File State 맵을 찾습니다.
  2. 새로운 스트리밍 요청을 확인하도록 File State에 요청해서 File State 알고리즘에 따라 상태가 변경될 수 있도록 합니다.
  3. Sound Engine에 결과를 반환합니다.

일반적인 게임에서 이 작업은 모두 1밀리초 이내에 완료될 수 있지만 이 1밀리초가 긴 것으로 간주될 수 있습니다. 그러나 File State가 이미 열려 있고 사용할 준비가 되었기 때문에 추가 시스템 I/O 작업이 아예 필요하지 않을 수 있습니다.

스트리밍을 위해 파일이 열린 다음, I/O Hook의 비동기 Read 작업은 이러한 Read 작업을 독점적으로 처리하는 또 다른 전용 Execution Queue를 통해 처리됩니다. 이 큐의 목표는 효율적이고 빠른 Read 작업을 최적화된 방식으로 일괄 처리하는 것입니다. 또한 이 큐는 스트리밍된 미디어에 대한 Close 작업을 제공하고 보류 중인 Read 작업 다음에 Close 작업이 수행되도록 합니다.

모든 Sound Engine 콜백과 마찬가지로 이 작업은 Unreal이 소유하지 않은 스레드에서 호출됩니다. 작업의 Unreal 스레드 로컬 데이터는 서로 다르며 스택의 크기와 우선 순위도 다를 수 있습니다. 이로 인해 Stat 수집과 같은 많은 Unreal 작업이 실패하게 됩니다.

파일 이름 기반 Location Resolver

Location Resolver에서 대부분의 Open 작업은 다양한 맵에 저장된 Short ID를 기반으로 수행됩니다.

파일 경로 이름을 기반으로 한 파일 열기는 통합에서 지원되지 않습니다. Unreal 통합은 Short ID 기반으로만 파일을 엽니다. 그러나 파일 경로 이름에 따라 Sound Engine이 파일을 열 수 있는 경우가 있습니다. 예를 들어, XML Error Translator와 같은 일부 알고리즘은 'SoundBanks.xml' 파일을 요청합니다. 또 다른 경우는 Sound Engine이 파일을 쓰는 경우입니다. 이는 일반적으로 디버그 및 프로필 빌드에서 로깅 목적으로 수행됩니다.

SoundBank와 Media Manager

SoundBank Manager는 LoadSoundBank 및 UnloadSoundBank 작업을 제공하는 반면 Media Manager는 LoadMedia 및 UnloadMedia 작업을 제공합니다. 이 두 관리자는 생성된 File State를 추적하고 File State가 스트리밍 목적으로 요청되면 Location Resolver에 정보를 보냅니다.

둘 다 동일한 Execution Queue 패턴을 통해 비동기적으로 작동합니다. File State 생성 프로세스는 상대적으로 효율적이기 때문에 일반적으로 여러 작업을 동시에 실행할 때 지연되는 일은 거의 없습니다. 그러나 파일이 사용하기에 적합한 상태여야 하고 Sound Engine 로드/언로드를 해야해서 콜백을 실행하는 데 더 많은 시간이 걸릴 수 있습니다.

External Source Manager

The External Source Manager (refer to 외부 음원 사용하기) manages File States for External Sources. It is designed to be overridden by a user-developed module that implements a data model to track External Source media dependencies. The Wwise Simple External Source Manager is an example that uses Data Tables (.csv files) to map the External Sources to their corresponding media.

The manager provides a supplemental, editor-only operation for cooking that the user can override to properly stage External Source files. With this approach, users don't have to override the WwiseResourceCooker 모듈 only to support their External Source Manager implementations.

Because the posted Events must include the External Sources they use when they are posted, the Integration automatically queries the External Source Manager for this information at the appropriate time. 더 자세한 내용은 Wwise Simple External Source Manager 사용하기 을 참고하세요.


이 페이지가 도움이 되었나요?

지원이 필요하신가요?

질문이 있으신가요? 문제를 겪고 계신가요? 더 많은 정보가 필요하신가요? 저희에게 문의해주시면 도와드리겠습니다!

지원 페이지를 방문해 주세요

작업하는 프로젝트에 대해 알려주세요. 언제든지 도와드릴 준비가 되어 있습니다.

프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.

Wwise를 시작해 보세요