버전
menu

Wwise SDK 2025.1.3
중요한 마이그레이션 참고 사항 2025.1

2025.1에 새로운 기능이 추가됨에 따라 ( 새로운 기능 개요 2025.1 참고 ), Wwise 2025.1로 마이그레이션할 때 다음 사항에 주의하시기 바랍니다.

Application Binary Interface (ABI) 변경 사항

플러그인 인터페이스의 바이너리 표현 방식이 변경되었습니다. 모든 플러그인은 Wwise 2025.1 런타임에서 로드되려면 Wwise 2025.1 SDK 헤더에 맞게 다시 컴파일해야 합니다.

C/C++ API 개선 사항

C에서 특정 타입을 사용 가능하게 하고 플랫폼 간 일관된 표현을 위해, C++ API의 일부 요소들이 변경되었습니다:

외부 음원

AkExternalSourceInfo::szFile는 이제 OS 네이티브 문자열(AkOSChar*) 대신 UTF-8 문자열(char*)입니다.

콜백 시스템

PostEvent 콜백 서명이 변경되었습니다. 기존 콜백 정보 구조체는 두 개로 분리되었습니다:

  • 모든 콜백 타입에 공통적인 데이터는 AkEventCallbackInfo 구조체에 대한 포인터로 전달됩니다.

이 포인터는 다른 타입으로 캐스팅하면 안 됩니다. 이 포인터는 다른 타입으로 캐스팅하면 안 됩니다.

  • 콜백 타입별 고유 데이터는 void 포인터로 전달됩니다. 이 포인터는 in_eType 파라미터 값에 따라 적절한 콜백 정보 구조체 타입으로 캐스팅합니다. 추가 정보가 필요 없는 일부 콜백 타입(예: AK_EndOfEvent, AK_Starvation, AK_MusicPlayStarted)에서는 이 포인터가 null임에 유의하세요.

또한 PostEvent와 BusVolume 콜백은 이제 사용자 쿠키를 명시적 파라미터로 전달받습니다. 쿠키는 더 이상 정보 구조체에 저장되지 않습니다.

기타 사소한 타입 변경 및 이름 변경

  • 열거형 AK::SoundEngine::AkActionOnEventType 가 전역 네임스페이스에 AkActionOnEventType 로 이름이 변경되었습니다. 해당 값들도 유사하게 변경되었습니다.
  • 열거형 AK::AkAudioDeviceEvent 가 전역 네임스페이스에 AkAudioDeviceEvent 로 이름이 변경되었습니다. 해당 값들도 유사하게 변경되었습니다.
  • 열거형 AK::SoundEngine::MultiPositionType 가 전역 네임스페이스에 AkMultiPositionType 로 이름이 변경되었습니다. 해당 값들도 유사하게 변경되었습니다.
  • 열거형 AK::SoundEngine::DynamicSequence::DynamicSequenceType 가 전역 네임스페이스의 AkDynamicSequenceType 로 이름이 변경되었습니다. 해당 값들도 유사하게 변경되었습니다.
  • 구조체 AkMIDIPost 는 더 이상 AkMIDIEvent 를 상속하지 않으며, 대신 midiEvent 멤버 변수를 갖습니다.
  • AkWorldTransformAkTransform 는 이제 struct 타입입니다.
  • WaveFormatExtensible 는 실제 WAVE 형식 정의와 혼동을 피하기 위해 WemFormatExtensible 로 이름이 변경되었습니다.

AkMusicEngine 라이브러리 제거

전체 AK::MusicEngine 네임스페이스와 관련 함수 및 라이브러리가 제거되었습니다. AK::MusicEngine의 기능은 모두 AK::SoundEngine으로 이전되었으며, 그 외에는 이전과 동일하게 작동합니다.<segment 1264> Unity 또는 Unreal을 사용하는 게임의 경우, 기본 통합이 이에 맞게 변경되어 자연스럽게 적용됩니다. 개인 게임 엔진을 사용하는 게임의 경우 이 변경 사항이 빌드에 문제를 일으킬 수 있습니다. 코드 마이그레이션을 위해 다음 단계를 따르세요.

  • AkMusicEngine.lib/so 파일은 제거되었습니다. 게임 빌드 스크립트는 링커 입력에서 해당 라이브러리를 제거하도록 수정해야 합니다.
  • include AK/MusicEngine/Common/AkMusicEngine.h 이 제거되었습니다. 이 파일에 대한 모든 인클루드(include) 문을 삭제하세요.
  • AK::MusicEngine::Init과 AK::MusicEngine::Term 함수가 제거되었습니다. Wwise 초기화 코드에서 이 함수들과 AkMusicSettings 타입에 대한 참조를 삭제하세요.
  • AK::MusicEngine::GetPlayingSegmentInfo 함수는 AK::SoundEngine::GetPlayingSegmentInfo로 이동했습니다. 코드에서 네임스페이스만 변경하면 됩니다.

AK::SoundEngine::GetSourcePlayPosition 및 AK_EnableGetSourcePlayPosition 변경 사항

이제 소스의 위치가 기본적으로 추적됩니다. 더 이상 AK_EnableGetSourcePlayPosition 플래그를 AK::SoundEngine::PostEvent 에 전달할 필요가 없습니다. 이 플래그는 제거되었으므로 코드 내 모든 참조를 삭제하세요.

AK::SoundEngine::GetSourcePlayPosition() 도 이제 위치를 더 정확하게 반환합니다. 이 차이는 AkPlatformInitSettings::uNumRefillsInVoice에 정의된 재생 레이턴시와 관련이 있습니다. 25.1 이전에는 레이턴시가 반영되지 않아 보고된 시간이 다른 자연스러운 타이밍 불확실성 외에도 재생된 시간보다 최대 4버퍼(40에서 80ms) 앞서 있을 수 있었습니다. 새로운 타이밍은 이제 1버퍼(10에서 20ms) 단위로 정확해졌습니다.

기타 주목할 만한 제거 사항

IAkVoicePluginInfo::ComputePriorityWithDistance 는 더 이상 사용되지 않아 제거되었습니다.

이제 사용자 지정 BankManager 스레드를 사용한 비동기 작업이 지원됩니다.

AkInitSettings::bUseSoundBankMgrThreadfalse 로 설정되면, 뱅크 API 호출의 비동기 버전이 즉시 실행되지 않습니다. 대신 작업들이 큐에 추가되며, 게임에서 AK::SoundEngine::ProcessBanks 를 호출해 큐에 쌓인 작업들을 처리해야 합니다. Sound Engine 스레드 커스터마이징에 관한 자세한 내용은 CPU 사용 최적화하기 를 참고하세요.

AkInitSettings::bUseSoundBankMgrThreadtrue (기본값)로 설정된 경우 동작에는 변화가 없습니다.

Actor-Mixer Hierarchy와 Master-Mixer Hierarchy, Interactive Music Hierarchy

이번 Wwise 버전에서는 프로젝트 폴더 구조가 상당히 업데이트 되었습니다.

다음 루트 노드가 업데이트되었습니다:

  • Audio Devices: Devices 로 이름 변경
  • Master-Mixer Hierarchy: Busses 로 이름 변경
  • Actor-Mixer Hierarchy: Containers 로 이름 변경
  • Interactive Music Hierarchy: Containers 로 이동하며 Music (Migrated) 로 이름 변경

이 경로들을 참조하는 모든 도구, 스크립트, 엔진의 업데이트가 필요합니다.

Wwise는 들어오는 경로를 자동으로 새 이름으로 변환하는 별칭(alias)을 제공합니다. 예를 들어 \Actor-Mixer Hierarchy\SFX_CHARACTER\SFX_EXPL_01 경로는 자동으로 \Containers\SFX_CHARACTER\SFX_EXPL_01 로 변환됩니다.

SDK 함수 AK::SoundEngine::SetActorMixerEffec t는 AK::SoundEngine::SetContainerEffect 로 이름이 변경되었습니다.

WAAPI와 WAQL에서의 프로젝트 경로 참조

프로젝트 구조 변경은 WAAPI와 WAQL 스크립트에도 영향을 미칩니다. 앞서 언급된 경로를 참조하는 모든 코드가 영향을 받습니다.

클라이언트 코드 내에 \Actor-Mixer Hierarchy\Default Work Unit 같은 경로를 하드코딩하는 것은 권장하지 않습니다. 대신 ak.wwise.core.getProjectInfo 를 호출하여 defaultWorkUnits 또는 defaultImportWorkUnit 값을 가져옵니다.

Interactive Music Hierarchy 는 더 이상 존재하지 않습니다. 이제 Music 오브젝트는 직접 Containers 계층 내에 생성할 수 있습니다.

Tab Delimited Import에서의 프로젝트 경로 참조

프로젝트 구조 변경은 Tab Delimited Import 파일에도 영향을 미칩니다.

Tab Delimited Import 생성기 및 스프레드시트를 새로운 경로 이름에 맞게 업데이트해야 합니다.

Authoring Plug-ins의 속성 변경 사항

  • InfiniteValue: 이 속성은 이제 정수형 속성 타입으로 제한됩니다.

Actor-Mixer가 Property Container로 이름 변경

Actor-Mixer 객는 이제 Property Container라고 불립니다.

WAAPI, WAQL 및 Tab Delimited Import 파일에서 "Actor-Mixer"와 "ActorMixer" 사용은 각각 "Property Container"와 "PropertyContainer"로 변경해야 합니다.

Master Audio Bus가 Main Audio Bus로 이름 변경

새 프로젝트를 생성할 때, "Master Audio Bus" 객체의 이름이 이제 "Main Audio Bus"로 변경됩니다. 새 프로젝트의 경우 WAAPI와 WAQL 스크립트를 "Main Audio Bus"로 업데이트하고, 기존 프로젝트에서는 "Master Audio Bus"를 사용합니다.

MasterMixerConsole이 BussesConsole로 이름 변경

"MasterMixerConsole" 뷰 식별자는 "BussesConsole"로 이름이 변경되었습니다. WAAPI와 WAQL 스크립트를 "BussesConsole"로 업데이트 합니다.

"MasterMixerConsole" 뷰를 참조하는 레이아웃도 업데이트가 필요합니다.

ObjectList 데이터 모델 변경 사항

ObjectList의 내부 구조가 변경되었습니다. 일부 ObjectList 내 객체들은 이제 다르게 접근해야 합니다. 다음 리스트들은 Wwise 객체 참조를 가진 InnerObjects를 포함합니다: Arguments, EntryPath, Metadata, Playlist.

  • Arguments: 참조 Argument 가 있는 InnerObject ArgumentsSlot를 포함합니다. Note: 이는 Dialogue Event 객체에 적용됩니다.
  • Arguments: 참조 Argument가 있는 InnerObject MusicArgumentsSlot를 포함합니다. Note: 이는 Music Switch Container 객체에 적용됩니다.
  • EntryPath: 참조 EntryPathObject가 있는 InnerObject EntryPathSlot를 포함합니다.
  • Metadata: 참조 Metadata가 있는 InnerObject MetadataSlot를 포함합니다.
  • Playlist: 참조 PlaylistObject가 있는 InnerObject PlaylistSlot를 포함합니다.

WAAPI 객체 목록

다음 표는 ak.wwise.core.object.set을 사용해 객체 목록을 구성할 때 관련된 변경사항을 보여줍니다.

기존 스타일새로운 스타일
"@Arguments": [object1, object2]

"@Arguments": [{"type": "ArgumentsSlot", "name": "", "@Argument": object1}, {"type": "ArgumentsSlot", "name": "", "@Argument": object2}]

참고: 이는 Dialogue Event 객체에 적용됩니다.

"@Arguments": [object1, object2]

"@Arguments": [{"type": "MusicArgumentsSlot", "name": "", "@Argument": object1}, {"type": "MusicArgumentsSlot", "name": "", "@Argument": object2}]

참고: 이는 Music Switch Container 객체에 적용됩니다.

"@EntryPath": [object1, object2]"@EntryPath": [{"type": "EntryPathSlot", "name": "", "@EntryPathObject": object1}, {"type": "EntryPathSlot", "name": "", "@EntryPathObject": object2}]
"@Metadata": [object1, object2]"@Metadata": [{"type": "MetadataSlot", "name": "", "@Metadata": object1}, {"type": "MetadataSlot", "name": "", "@Metadata": object2}]
"@Playlist": [object1, object2]"@Playlist": [{"type": "PlaylistSlot", "name": "", "@PlaylistObject": object1}, {"type": "PlaylistSlot", "name": "", "@PlaylistObject": object2}]

WAQL 객체 목록

다음 표는 WAQL 쿼리에서 객체 목록을 사용할 때 관련된 변경사항 예시를 제공합니다.

기존 스타일새로운 스타일

where @metadata.any and @metadata.any(pluginname = "Wwise System Output Settings")

"\\Busses\\Default Work Unit\\Master Audio Bus\\BusA" select metadata.at(1)

return: ["metadata.at(1).name"]

where @metadata.any and @metadata.any(@metadata.pluginname = "Wwise System Output Settings")

"\\Busses\\Default Work Unit\\Master Audio Bus\\BusA" select metadata.at(1).metadata

return: ["metadata.at(1).metadata.name"]

from type plugininnerobject where pluginname = "metadataslot" select metadata.where(pluginname="Wwise System Output Settings")

from type randomsequencecontainer select playlist.where(type = "sound") from type randomsequencecontainer select playlist.where(playlistobject.type = "sound")
where @Arguments.any(name = "StateGroup1") where @Arguments.any(argument.name = "StateGroup1")
where @EntryPath.any(name = "State1") where @EntryPath.any(entrypathobject.name = "State1")

Command ID 이름 변경

  • 명령어 ShowAudioFilesImporterShowAudioFileImporter 로 이름이 변경되었습니다.

Wwise Reflect 속성 변경 사항

Doppler 효과 관리를 위한 여러 속성이 업데이트되었습니다. 일부는 더 이상 사용되지 않으며 인터페이스에서 숨겨졌고, 일부는 동작 변경을 포함합니다.

이름 변경된 속성

다음 속성들은 이름만 변경되었으며 기능은 동일합니다:

  • Distance Smoothing: Delay Smoothing 로 이름 변경됨.
  • Pitch Threshold: Pitch Limit 로 이름 변경됨.

숨겨지고 더 이상 사용되지 않는 속성들

다음 속성들은 더 이상 사용되지 않습니다. 여전히 존재하며 사용자 인터페이스에서 숨겨져 있습니다. 이들은 추후 버전에서 완전히 제거될 예정입니다.

  • Smoothing Type: 숨겨지고 더 이상 사용되지 않음. 앞으로는 효율적인 IIR 모드만 지원됩니다.
  • Threshold Mode: 숨겨지고 더 이상 사용되지 않음. Continuous 모드에서는 새로운 Delay Error Tolerance 속성을 통해 접근 가능한 추가 Doppler 제어 알고리즘이 추가되었습니다. 이 동작은 이전의 Step 모드와 유사합니다.
  • Distance Threshold 는 이제 숨겨지고 더 이상 사용되지 않습니다.

Step 모드는 폐기되었습니다. 이전 동작을 재현하려면, 새로운 Delay Error Tolerance 속성과 낮은 Pitch Limit 값을 함께 사용하세요. Distance Threshold 와 관련된 반면, Delay Error Tolerance 는 임계값을 절대 거리가 아닌 지연의 상대적 측정값으로 정의합니다. 자세한 내용은 Reflect 도움말을 참조하세요.

주의: Threshold Mode 를 Step으로 설정했고, 더 이상 사용되지 않는 Distance Threshold 를 변경하거나 개선된 Continuous 모드로 전환하려면, UI에서 숨겨진 속성을 표시해야 합니다. 이를 위해 Authoring\x64\Debug\bin\Plugins\AkReflect.xml 파일을 열고, 원하는 속성을 찾아 IsVisible="false"IsVisible="true" 로 변경하세요. 그 후 Wwise를 다시 엽니다.

AK Expander 플러그인 라이브러리 제거

AK Expander 플러그인은 더 이상 독립적인 라이브러리나 DLL이 아니며, 모든 기능이 AK Compressor 라이브러리로 통합되었습니다. 컴파일 시 AkExpanderFX 라이브러리나 AkExpanderFXFactory에 대한 참조는 제거하거나 AKCompressorFX 라이브러리를 참조하도록 업데이트해야 합니다. Wwise Authoring 설치가 그 자리에서 업데이트되는 경우, 중복된 플러그인 ID로 인한 프로젝트 로드 오류를 방지하기 위해 Wwise Authoring의 Plugins 디렉터리 내 AkExpander 라이브러리가 삭제되어 있는지 확인하세요.

Android 플랫폼 초기화 설정 변경

Android에서 오디오 출력 초기화를 더 잘 제어할 수 있도록 일부 초기화 설정이 제거되고 다른 설정이 추가되었습니다:

대부분의 Android 기기에서 이제 PerformanceMode=LowLatency 및 SharedMode=Shared를 사용하여 기본적으로 AAudio가 설정됩니다. 이는 Wwise 2024.1의 PerformanceMode=LowLatency 및 SharedMode=Exclusive를 기본으로 하던 것과 다릅니다. 새로운 기본 설정은 레이턴시에 눈에 띄는 영향을 주지 않으면서 더 다양한 장치와의 호환성을 제공합니다.


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

지원이 필요하신가요?

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

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

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

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

Wwise를 시작해 보세요