Wwise SDK 2019.1.11
|
프로젝트의 Release 설정(이는 개발한 게임의 출시 버전을 빌드하는데 사용되는 설정에서 "Ship"이나 "Retail" 등으로 불릴 수도 있습니다.)에서 AK_OPTIMIZED
심볼을 정의해줘야 합니다.
해당 심볼은 Release 버전에서 몇몇 코드 컴파일을 피하고자 다양한 곳에서 사용합니다.
Wwise 사운드 엔진은 Wwise와 게임 간에 커뮤니케이션을 활성화하도록 해서, Wwise 사용자는 사운드 엔진을 인게임과 결합하고 프로파일링을 수행할 수 있습니다. 그러나 이 커뮤니케이션은 성능상의 이유로 릴리즈(release) 설정에서는 작동하지 않습니다.
게임에서 커뮤니케이션을 활성화하면, 해당 게임의 Release 버전에서는 #ifndef
AK_OPTIMIZED / #endif로
감싸진 코드가 제외됩니다.
Wwise 사운드 엔진에서 wchar_t 타입을 사용하는 함수를 호출하려면, 사운드 엔진 라이브러리에 알맞게 연결되도록 프로젝트 설정에서 "Treat wchar_t as Built-in type" 옵션을 활성화해줘야 합니다. 그러기 위해서는 Configuration Properties > C/C++ > Language로 이동해서 "Treat wchar_t as Built-in Type"을 "Yes"로 설정합니다. 이 옵션은 실제로 "/Zc:wchar_t" 컴파일 플래그로 지정됩니다.
그러나 wchar_t 타입을 사용하는 사운드 엔진의 어떠한 함수도 호출하지 않는다면 이 옵션이 필요하지 않습니다. 모든 함수는 wchar_t 대신에 char 타입을 사용하는 대응 관계의 함수를 갖는다는 점을 명심하세요.
wchar_t를 사용하는 함수를 호출하나 "Treat wchar_t as Built-in Type"의 활성화를 생략하면, 컴파일러에서 함수 AK::SoundEngine::LoadBank(const wchar_t *,long,unsigned long &)에 대해 AK::SoundEngine::LoadBank(unsigned short const *,long,unsigned long &)로 잘못 해석하여 다음과 유사한 링크 오류가 발생하게 됩니다. unresolved external symbol "enum AKRESULT __cdecl AK::SoundEngine::LoadBank(unsigned short const *,long,unsigned long &)"
주의: 프로젝트에서 "Treat wchar_t as Built-in Type" 설정을 활성화하길 추천합니다. 이 옵션을 활성화하지 않겠다면 다음 내용을 확인하세요. 몇몇 플랫폼에서 wchar_t를 typedef로 명시한 AkOSChar 타입에 대해 매우 주의를 기울여야 합니다. 이 타입은 디스크 I/O와 관련된 함수에서 사용됩니다. 좀 더 구체적으로, Stream Manager (AK::IAkStreamMgr) 와 Low-Level I/O (AK::StreamMgr::IAkFileLocationResolver) 인터페이스에서 사용됩니다. Audiokinetic의 기본 Stream Manager가 게임 내에서 전반적으로 I/O 관리자처럼 사용되면, wchar_t를 typedef로 명시한 AkOSChar를 사용하는 플랫폼에서 선택의 여지가 없이 "Treat wchar_t as Built-in Type" 설정을 활성화해줘야 합니다. 그러나 일반적으로 Wwise 사운드 엔진은 Stream Manager의 사용자일 뿐입니다. 이러한 경우, 프로젝트에서 "Treat wchar_t as Built-in Type"를 활성화해줘야 할 필요가 없습니다. "Treat wchar_t as Built-in Type" 설정을 호출하지는 않았지만, 구현만 했다면, Low-Level I/O API와 문제가 없습니다. File Package Low-Level I/O 예제가 wchar_t를 typedef로 명시한 AkOSChar를 사용하는 wchar_t 타입을 사용하는 사운드 엔진의 몇 가지 함수를 호출한다는 걸 명심하세요. 해당 예제를 프로젝트에서 "Treat wchar_t as Built-in Type" 설정을 활성하지 않고 사용하려면, 필요한 곳 어디에서나 wchar_t 문자열을 char로 적절한 변환을 위해 일부 코드를 수정해줘야 합니다. 이를 위해 AKPLATFORM::AkWideCharToChar() 헬퍼 함수를 사용할 수 있습니다. 이 함수는 AK/Tools/Common/AkPlatformFuncs.h에 정의되어 있습니다. I/O와 관련해서 Wwise를 통합하는 방법에 관한 더 많은 정보는 streamingdevicemanager를 참고하세요. |
AkSoundEngineDLL 프로젝트 예제와 같이(아래 내용 참조), Windows용 게임에서 Wwise 사운드 엔진과 관련된 모든 라이브러리를 DLL로 만들어 사용하려면, 사운드 엔진 API의 심볼을 올바르게 가져오기 위해 게임 실행 또는 다른 DLL에 의존하는 프로젝트에서 AKSOUNDENGINE_DLL을 정의해야 합니다.
Wwise 사운드 엔진의 라이브러리와 정적으로 연결한 프로젝트는 AKSOUNDENGINE_DLL을 정의하면 안 됩니다.
사운드 엔진 통합 과정은 기본 통합 및 단계별 작업, 초기화, 개별 모듈 처리를 통해 안내해줍니다. 예제 DLL 프로젝트로 작업하기를 선호한다면, SDK에 DLL 하나를 포함해야 합니다. AkSoundEngineDLL 프로젝트는 "Initialize"나 "Terminate"처럼 일부 통합 작업을 상위 레벨 호출로 감싸놓았습니다. 이번 예제에서는 사용되지 않았으나 각 단계를 개별적으로 볼 수 있는데, 게임에서 DLL이나 수정된 버전의 DLL을 사용할 수 있습니다. 해당 DLL을 어떻게 사용하는지는 AkCube 사운드 엔진 통합 예제 프로젝트 를 참고하세요.
참고: Windows에서 AkSoundEngineDLL를 사용하기 위해서는 Visual Studio 2013 패키지를 설치해야 합니다. |
또한, AkSoundEngineDLL 프로젝트는 하위 레벨 I/O의 구현을 포함하고 있다는 점을 명심하세요. 이는 원하는 대로 교체가 가능합니다. Low-Level I/O와 관련해 더 많은 정보는 Low-Level I/O를 참고하세요.
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요