menu
 
버전
2022.1.19.8584

2024.1.5.8803

2023.1.13.8732

2022.1.19.8584

2021.1.14.8108

2019.2.15.7667

2019.1.11.7296

2018.1.11.6987

2017.2.10.6745

2017.1.9.6501

2016.2.6.6153

2015.1.9.5624


menu_open
Wwise Unreal Integration Documentation
WwiseProjectDatabase 모듈

WwiseProjectDatabase 모듈은 Editor를 포함해서 쿠킹되지 않은 프로젝트에서 사용할 수 있습니다. 이 모듈은 Wwise 프로젝트에서 생성된 SoundBank의 현재 상태에 관한 메모리 기반 데이터베이스 뷰를 제공합니다. SoundBank를 생성할 때 만들어진 JSON 메타데이터 파일에서 사용 가능한 모든 값과 정보는 Project Database에서 접근할 수 있습니다. 이 뷰는 정보 제공용이며 생성된 파일이 업데이트될 때만 변경됩니다. 새로운 데이터베이스 버전이 비동기적으로 로드되는 경우에도 해당 데이터베이스의 구조체에 대한 참조는 스레드로부터 안전합니다.

다음은 데이터베이스가 제공하는 두 가지 유형의 정보입니다.

  • Metadata structures는 JSON 파일의 원시적 정보를 제공합니다.
  • Ref classes는 메타데이터와 관련된 인접 정보에 대한 접근을 허용합니다.

Metadata 구조체

Metadata 구조체는 생성된 SoundBanks 메타데이터를 설명하는 JSON 파일과 동일하게 정의됩니다. 맥락(context)은 제공되지 않으며 이를 위한 편리한 도구는 거의 없습니다. 소수의 예외를 제외하고 이러한 구조체의 멤버 이름은 JSON 파일의 이름과 동일합니다.

파일 정의 자체의 경우 파일이 선언할 수 있는 선택적인 루트 오브젝트의 종류를 정의하는 WwiseMetadataRootFile 오브젝트에서 시작하세요. 그러면 이 구조체는 발생할 수 있는 다양한 내부 오브젝트 및 값을 노출합니다.

이 오브젝트와 값이 메모리에 로드되면 이러한 구조체가 생성된 SoundBank의 명확한 이미지를 작고 효율적인 형태로 나타냅니다.

이 정보의 단 하나의 복사본이 FWwiseRootDataStructure의 메모리와 FWwisePlatformDataStructure JSON 파일에 보관됩니다.

Ref 클래스

Ref 클래스는 필요한 메타데이터를 찾는 방법에 대한 설명을 통해 각 메타데이터 오브젝트를 다시 정의합니다. 이 클래스는 생성된 SoundBank의 메타데이터에는 정보의 중복이 거의 없고 다양한 데이터 구조체에 대한 참조를 사용하기 때문에 유용합니다. 따라서 Event에는 ID로 참조하는 미디어 목록이 있지만 파일의 위치와 같은 미디어의 메타데이터는 더 높은 계층의 SoundBank 메타데이터에서 정의됩니다.

예를 들어 Event의 Switch Container 값을 가리키기 위해 Ref 클래스는 파일의 루트에 대한 공유 포인터 복사본을 유지하고 Switch Container를 찾는 방향을 포함합니다. 이 방향은 해당 파일, SoundBanks 구조 안, 첫 번째 SoundBank, 네 번째로 선언된 Event, 세 번째로 선언된 Switch Container와 같은 식으로 제공됩니다.

다음 샘플 코드에서 설명된 것을 보세요.

struct WWISEPROJECTDATABASE_API FWwiseMetadataMediaAttributes : public FWwiseMetadataMediaReference
{
FName Language;
bool bStreaming;
EWwiseMetadataMediaLocation Location;
bool bUsingReferenceLanguage;
uint32 Align;
bool bDeviceMemory;
FWwiseMetadataMediaAttributes(FWwiseMetadataLoader& Loader);
private:
static EWwiseMetadataMediaLocation LocationFromString(const FName& LocationString);
};
struct WWISEPROJECTDATABASE_API FWwiseMetadataMedia : public FWwiseMetadataMediaAttributes
{
FName ShortName;
FName Path;
FName CachePath;
uint32 PrefetchSize;
FWwiseMetadataMedia(FWwiseMetadataLoader& Loader);
};

예시 미디어:

"Media": [
{
"Id": "274591330",
"Language": "English(US)",
"Streaming": "false",
"Location": "Loose",
"ShortName": "Hello.wav",
"Path": "Media/English(US)/27/274591330.wem",
"CachePath": "Voices/English(US)/Hello_10C4C929.wem"
}

본질적으로 Ref 클래스는 맥락(context)을 제공합니다. 따라서 Switch Container 정보를 얻을 수 있으며 Event, SoundBank, 해당 파일과 같은 상위 클래스에 대한 정보도 얻을 수 있습니다.

참조된 일부 유형은 추가 정보를 요구합니다. 예를 들어 Platform 정보에는 ProjectInfo.jsonPlatformInfo.json이라는 두 개의 보완(complementary) 파일로 정보가 분할되어 있기 때문에 플랫폼 Ref에는 자연스럽게 두 개의 서로 다른 구조체가 포함됩니다. 마찬가지로 일부 다른 참조 형식은 여러 위치에 있을 수 있으며 Ref 클래스는 이러한 특수성을 수용하려고 시도합니다.

마지막으로 Ref 클래스는 추가적인 유틸리티를 제공합니다. 필요한 전역적인 맵을 전달하면 특정 Wwise 오브젝트 내부에 포함된 Ref 클래스와 함께 추가 정보를 얻을 수 있습니다. 예를 들어 특정 Event 정의에서 요청된 미디어를 요청하면 미디어를 Refs로 반환받을 수 있습니다.

Ref 정보는 기본 및 파생 구조체(derived struct)로 선언되므로 Switch Container에서 Event의 모든 Switch Container 값을 요청하고 동시에 이러한 형제들을 불러올 수 있습니다. Event에 포함된 다른 유형의 정보도 마찬가지입니다.

AnyRef 클래스

더 높은 계층에서 AnyRef 클래스는 모든 종류의 Ref 구조체에 대한 포인터를 가지고 있습니다. 여기에는 유형(type)과 공유 포인터(shared pointer)가 담겨 있습니다. AnyRef 수준에서는 오브젝트의 Short ID, GUID, 이름 검색과 같은 제한된 작업을 할 수 있습니다. 그 밖의 모든 작업은 boxed Ref 오브젝트를 해당 형식으로 캐스팅하도록 요청할 수 있습니다. 이 클래스가 Null 오브젝트를 가리킬 수 있기 때문에 AnyRef 형식은 참조가 아니라 Ref 오브젝트에 대한 포인터입니다.

정보 접근하기: WwiseProjectDatabase와 WwiseDataStructure

WwiseProjectDatabase 모듈은 해당 접근 메소드를 통해 쿼리를 처리합니다. 예를 들어, 알려진 모든 SoundBank나 하나의 특정 SoundBank를 요청할 수 있습니다. 해당 데이터 자체는 DataStructure 멤버에 보관됩니다.

이 데이터 구조체안에는 두 가지 구조체가 있습니다.

  • Root structure에는 특정 프로젝트 구조에 관한 각 플랫폼의 기본 정보가 포함되어 있습니다.
    • 로드되지 않은 경우에도 프로젝트에 사용 가능한 모든 플랫폼을 나타내는 Platform 목록.
    • Language 목록
  • 프로젝트의 모든 정보가 플랫폼별로 들어 있는 Platforms structure map.

일반적으로 WwiseProjectDatabase에는 쿠킹과 패키징 목적으로 한 번에 하나의 플랫폼만 로드됩니다. 그러나 둘 이상의 플랫폼을 로드하는 것도 가능합니다.

info참고:Mac에서 프로젝트의 Unreal Editor로 작업할 때는 Mac 플랫폼만 로드해야 합니다.

Data 구조 구조체에는 다음이 포함됩니다.

  • GeneratedPlatformFiles 속성에 로드된 모든 파일 이름 목록.
  • JsonFiles 속성에서 파싱된 각 JSON 파일의 고유한 복사본 하나.
  • 접근 가능한 각 데이터 조각에 대한 Ref.

또한 Data 구조체는 GetRef와 같은 함수를 통해 템플릿으로 된 접근을 허용합니다.


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

지원이 필요하신가요?

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

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

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

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

Wwise를 시작해 보세요