Wwise SDK 2024.1.3
|
2023.1에 새로운 기능이 추가됨에 따라 ( 새로운 기능 개요 2023.1 참고 ), Wwise 2023.1로 마이그레이션할 때 다음 사항에 주의하시기 바랍니다.
이전에는 WwiseConsole의 convert-external-source
와 generate-soundbank
명령이 인자를 프로젝트의 디렉터리에 상대적인 경로로 결정하는 경우가 있었습니다. 이제 WwiseConsole로 전달되는 모든 경로는 콘솔의 현재 작업 디렉터리에 상대적으로 결정됩니다.
이전에 Authoring/x64/Release/bin/Tools에 있던 실행 파일이 이제 Wwise.exe와 같은 디렉터리인 Authoring/x64/Release/bin에 있습니다. 프로젝트에서 SoundBank Post-Generation 단계로 FilePackager를 사용하셨다면 FilePackager.Console.exe 실행 파일로의 경로를 반드시 업데이트해야 합니다.
Low-Level I/O Hook 인터페이스가 Web 애플리케이션 같이 레이턴시가 높은 장치에서 스트리밍 인터페이스의 효율성을 높일 수 있도록 23.1에서 크게 변경되었습니다. 또한 이전 변경 사항을 좀 더 일관된 인터페이스로 통합하기 위해 인터페이스도 일반적으로 리팩토링 작업이 진행되었습니다. 게임 빌드를 손상시킬 수 있는 이 주요 변경 사항은 다음 섹션에서 설명되어 있습니다.
차단 I/O 연결 샘플이 제거되었습니다. 차단 I/O 호출이 별도의 스레드에서 만들어지지만 이로 인해 순서가 뒤바뀐 I/O 호출을 방지하여 일부 시스템에서 불필요한 파일 접근 레이턴시가 추가되었습니다. 게임이 이 샘플을 사용한다면 CAkDefaultIOHookDeferred
로 교체해 주세요. API는 동일합니다.
AK::StreamMgr::IAkLowLevelIOHook
, AK::StreamMgr::IAkIOHookDeferred
, AK::StreamMgr::IAkIOHookDeferredBatch
인터페이스가 AK::StreamMgr::IAkLowLevelIOHook
로 병합되었습니다. 이전에 이 인터페이스는 '차단' 배리언트(variant)를 허용하기 위해 분리됐었지만 이제는 지원되지 않기 때문에 분리된 채로 유지할 필요가 없습니다. I/O 연결이 IAkIOHookBlocking
, IAkIOHookDeferred
, IAkIOHookDeferredBatch
에서 파생되었을 경우 IAkLowLevelIOHook
로 교체하고 누락된 함수를 구현하세요.
게임이 이미 기본 CAkDefaultIOHookDeferred
샘플 클래스를 사용할 경우 해당 샘플에 필요한 변경 사항이 실행되었기 때문에 이 섹션과 무관합니다.
게임이 자체적인 I/O 후크나 File Location Resolver를 구현할 경우, AK::StreamMgr::IAkFileLocationResolver::Open()
의 위치를 특정 I/O 장치 전용 인터페이스로 옮기고 이름을 변경하는 것이 가장 중요합니다. 새로운 인터페이스에서는 AK::StreamMgr::IAkLowLevelIOHook::BatchOpen()
함수가 동시에 여러 개의 파일 열기 요청을 수락합니다. 이는 작업을 즉시 수행하거나(동기식), 혹은 먼저 작업을 전달하고 나중에 알릴 수 있습니다(비동기식). BatchRead()
함수와 마찬가지로 BatchOpen()
도 이제 콜백 함수 포인터를 받아 작업 결과에 대한 알림을 보냅니다. 이 변경 사항에 대한 더 많은 정보는 지연 열기 을 참고하세요.
If your game handles multiple I/O devices, be aware of the implementation of the new AK::StreamMgr::IAkFileLocationResolver::GetNextPreferredDevice
function. 단일 장치 게임의 경우 AK_NotImplemented를 리턴하면 시스템이 올바르게 작동합니다. 하지만 여러 장치를 사용할 경우 CAkDefaultLowLevelIODispatcher
샘플을 사용하거나 File Location Resolver 에서 해당 주제에 대해 더 확인하세요.
I/O 장치 생성에 사용되던 AkDeviceSettings
의 uSchedulerTypeFlags
멤버가 더 이상 사용되지 않으며 제거되었습니다. 관련 AK_SCHEDULER_BLOCKING
과 AK_SCHEDULER_DEFERRED_LINED_UP
상수도 제거되었습니다. 코드가 이러한 심볼을 참조할 경우 관련 코드를 삭제하세요.
Streaming Manager를 위해 파일을 식별하는 AkFileDesc
구조체는 이제 반드시 AK::StreamMgr::IAkLowLevelIOHook::BatchOpen()
함수에 의해 생성되어야 하며 AK::StreamMgr::IAkLowLevelIOHook::Close()
함수에 의해 삭제되어야 합니다.
AkFileDesc::pCustomParam
과 AkFileDesc::uCustomParamSize
멤버가 CAkDefaultIOHookDeferred
의 하위 클래스에서 사용되었을 때 사용이 분명하지 않아 제거되었습니다. I/O 연결이 AkFileDesc
와 함께 추가 데이터를 유지해야 할 경우 기본 구조체에서 파생하세요. 이전 섹션에서 설명한 것처럼 I/O 연결이 이제 AkFileDesc
구조체를 생성 및 파괴합니다.
CAkDefaultIOHookDeferred
샘플에서 파생되는 I/O 연결의 경우 AkFileDesc
타입을 파생할 수 있도록 AkFileDescType
타입 정의(typedef)가 하위 클래스와 필요할 경우 중간 하위 클래스를 위해 제공됩니다. AkFileDesc
가 확장되었을 경우 올바른 타입을 생성할 수 있도록 CAkDefaultIOHookDeferred::CreateDescriptor
함수도 오버라이드하세요.
중요한 마이그레이션 참고 사항 2022.1 에서 발표한 바와 같이 Mixer 플러그인이 Wwise 2023.1에서 제거되었습니다.
Mixer 플러그인을 반드시 Effect 플러그인으로 변환해야 합니다.
IAkOutOfPlaceObjectPlugin
인터페이스를 구현하여 이전의 IAkMixerEffectPlugin
인터페이스를 교체해줘야 합니다.ConsumeInput
함수에 있던 코드를 Execute
함수로 옮기세요.![]() | 참고: in_objects.ppObjects[i]->arCustomMetadata 는 해당 함수로 전달되는 메타데이터를 담습니다. 이 함수는 제거된 GetInputParam 함수를 교체합니다. |
AK Channel Router 플러그인이 Mixer 플러그인에서 Effect 플러그인으로 변환되어 Property Editor의 Effects 탭에 삽입됩니다. 이 Effect는 Bus Configuration이 Audio Objects로 설정된 버스에만 삽입할 수 있습니다.
Audio Objects 버스 구성에는 특정한 두 가지 속성이 있습니다.
마이그레이션은 Ak Channel Router Mixer 플러그인의 모든 인스턴스를 제거하지만 이를 AK Channel Router Effect 플러그인으로 자동 교체하지 않습니다. 그렇기 때문에 알맞은 버스에 AK Channel Router Effect를 직접 추가해야 합니다. 새로운 메타데이터 타입인 Channel Router Settings는 Ak Channel Router Mixer 플러그인에서 기존의 AttachableMixerInput를 교체합니다. 이 마이그레이션은 AttachableMixerInput의 모든 인스턴스를 제거하고 새로운 메타데이터로 교체합니다.
샘플 Subversion 소스 컨트롤 플러그인이 추후 Wwise 버전에서 사용 중단됩니다.
이제 Source Control 옵션을 사용자 인터페이스 없이 실행할 수 있습니다. Silent Mode를 활성화하면 WAAPI 요청이 Source Control과 상호작용할 때 대화창이 뜨지 않습니다. 이 변경 사항을 구현하기 위해 AK::Wwise::ISourceControlProgress 클래스 (이전의 AK::Wwise::ISourceControlOperationProgress
)가 재설계되었습니다. 다음 메소드가 변경되거나 추가되었습니다.
ShowProgress()
메소드의 이름을 BeginOperation()
으로 변경OperationCompleted()
메소드의 이름을 EndOperation()
으로 변경IsSilent()
메소드 추가IsAutoCheckout()
메소드 추가autoAddToSourceControl
전달 인자가 이제 다음 WAAPI 함수에서 true로 기본 설정됩니다.
WG-61743 문제로 인해 다음 함수는 대부분의 경우 이미 autoAddToSourceControl
이 true로 기본 설정된 것처럼 작동했습니다.
bypassSave
인자는 이제 다음 WAAPI 함수에서 true로 기본 설정됩니다.
The following command identifiers have been renamed:
Refer to Wwise Authoring Command Identifiers for more information.
변조 경로의 Attenuation, Occlusion, Obstruction, Transmission Loss, Diffraction이 이제 이미터에 지정된 감쇠를 사용하여 Emitter-Room 연결에 적용됩니다. Room Auxiliary Bus에 있는 감쇠 곡선은 이제 무효하며 음원으로 이동시켜야 합니다. Room Auxiliary Bus의 출력은 프로젝트에서나 API를 통해 변경하지 않는 이상 항상 0db입니다.
변조 경로에서의 회절은 이제 이미터와 리스너 간의 경로에 따라 이미터마다 계산됩니다. 변조 경로 회절은 원본 경로 회절을 초과할 수 없습니다.
Geometric Transmission Loss는 이제 이미터와 리스너 사이 광선(ray)을 통과하는 모든 표면의 최대 Transmission Loss 값을 사용하여 변조 경로에 적용됩니다. Room Transmission Loss는 이미터에서 리스너로의 가능한 모든 경로 사이의 최소값입니다. 단일 경로의 Transmission Loss는 해당 경로에서의 모든 Room의 Transmission Loss 최대값입니다.
Room-Listener 연결 안에 있는 광선은 이제 공간화에만 사용되며 연결 볼륨에 영향을 주지 않습니다. 그렇기 때문에 Voice Inspector에 더 이상 표시되지 않습니다.
Enable Game-Defined Sends 체크 상자가 선택된 이미터는 이제 해당 Room의 버스 및 리스너로 돌아가는 활성화된 경로가 있는 인접한 모든 Room으로 전송합니다. 이미터가 리스너와 동일한 Room에 있을 경우 인접한 모든 공간으로 전송합니다.
AkSpatialAudioInitSettings::uMaxEmitterRoomAuxSends
가 추가되어 이미터 당 생성되는 인접한 Room으로의 Emitter-Room 연결 개수를 제한합니다. 기본값인 0은 제한을 비활성화합니다. 제한이 설정되면 이미터 시점에서 인접한 포털로의 확산에 따라 가장 두드러진 전송이 유지됩니다. 제한이 1일 경우 이미터가 있는 Room으로만, 그리고 포털 안에 있을 경우 이미터가 전환되는 Room으로만 전송됩니다.
Wwise의 System Audio Device가 이제 AVAudioEngine을 시스템 오디오 출력으로 지원하여 macOS와 iOS/tvOS 플랫폼 간의 시너지와 채널 구성에 대한 유연성을 제공해 줍니다.
이에 따라 Apple 플랫폼을 위한 AkPlatformInitSettings::eAudioAPI
가 추가되었습니다. 기본값인 AkAudioAPI_Default
는 AVAudioEngine을 지원하는 운영 체제에서 이를 자동으로 선택합니다 (macOS 10.15 이상, iOS/tvOS 13 이상). 이보다 오래된 운영 체제에서 실행되는 Wwise 설치는 계속해서 기본 기능만 제공하는 AudioUnit API를 사용합니다.
AVAudioEngine 기반 싱크의 새로운 작동 방식에 대한 자세한 정보는 플랫폼별 오디오 출력 을 참고하세요.
뿐만 아니라 iOS/tvOS에서 AK::SoundEngine::GetPlatformInitSettings
는 고정된 48000Hz 대신 Audio Session의 기본 샘플 레이트를 리턴합니다.
마지막으로 iOS/tvOS에서 AudioInputCallbackFunc
함수 서명이 오디오 버퍼의 불변성을 적용하도록 업데이트되었습니다.
이 변경 사항으로 인해 애플리케이션을 반드시 AVFoundation.framework와 연결해야 합니다.
일부 플랫폼에서 AK::SoundEngine::Suspend()
와 AK::SoundEngine::WakeupFromSuspend()
호출이 AK::Comm
모듈을 자동으로 중지 및 깨우고 연결된 모든 Wwise Profiler를 연결 해제했습니다. 이제 클라이언트가 AK::Comm
을 반드시 별도로 관리해야 합니다. 지원되는 플랫폼에서 애플리케이션 수명 주기 이벤트 맥락에 따라 AK::Comm
모듈을 관리하는 법은 시스템 전용 이벤트 처리 를 참고하세요.
AK::SpatialAudio::ReverbEstimation::EstimateHFDamping()
이 반환하는 HF Damping 값의 범위가 이제 두 배인 -1~1이 됩니다. 이 값으로 매핑된 RTPC의 범위는 이제 -1~1이 됩니다.
새로운 ISourceControl::Connect()
와 ISourceControl::Disconnect()
메소드는 ak.wwise.core.sourceControl.setProvider
WAAPI 함수에서 소스 컨트롤 로그인을 지원합니다. 이 버전의 Wwise와 호환성을 보장하기 위해서는 ISourceControl
에 이러한 메소드를 추가하고 해당 플러그인을 반드시 다시 빌드해야 합니다.
소스 컨트롤 구현이 연결을 지원하지 않을 경우 이 메소드는 OperationResult_NotImplemented
를 반환합니다.
이제 WAQL 쿼리에서 maxRadiusAttenuation과 maxDurationSource를 사용하여 오브젝트 자체를 참조할 수 없습니다 (예: 'select'를 사용할 경우). 이러한 경우 새로운 접근자인 maxRadiusAttenuationObject와 maxDurationSourceObject를 각각 사용하세요.
ak.wwise.core.audio.import 를 사용할 때 가져오기 로그에서 경고나 오류가 있을 경우 WAAPI를 통해 이를 보고하지 않습니다. 이제 가져오기 로그는 호출을 통해 반환되며 가져오기 오류나 경고를 감지하기 위해 파싱됩니다.
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요