Wwise SDK 2024.1.0
|
Wwise 사운드 엔진을 통합하는 첫 번째 단계는 다양한 모듈을 적절하게 초기화하는데 있습니다. 이러한 모듈은 게임을 시작할 때 구성하게 됩니다.
예제 프로젝트에서 다음 함수는 사운드 엔진의 초기화와 관련된 모든 작업을 수행하도록 정의되어 있습니다:
이 함수는 메인 함수의 시작 부분에서 호출됩니다. 초기화가 필요한 다양한 요소들을 살펴보세요.
맨 먼저 반드시 초기화 해줘야 하는 것에 Memory Manager (메모리 매니저)가 있습니다. 다음 코드는 기본 Memory Manager를 생성합니다.
참고: 위에서 나오는 코드를 필요에 따라 반드시 적용해야 하는 경우, 메모리 매니저를 오버라이드할 수 있습니다. 더 많은 정보는 메모리 매니저 오버라이딩 을 참고하세요. |
메모리 매니저와 관련된 더 많은 정보는 메모리 매니저 를 참고합니다.
메모리 매니저가 초기화되면 스트리밍 매니저를 초기화할 수 있습니다.
다음 코드는 기본 스트리밍 매니저 (Streaming Manager)를 초기화합니다. 이 코드는 AK::StreamMgr::IAkFileLocationResolver
인스턴스가 필요하며, 스트리밍 장치를 생성합니다. 여기에는 AK::StreamMgr::IAkLowLevelIOHook
인스턴스가 필요합니다. 이 인터페이스는 AkStreamMgrModule.h 에 정의되어 있으며, 여기에는 SDK와 함께 제공되는 기본 Stream Manager 구현에 대한 모든 정의가 포함되어 있습니다.
디스크 I/O와 관련해서 추천하는 사운드 엔진의 통합 방법은 기본 스트림 매니저의 구현을 사용하고 AkStreamMgrModule.h에 정의된 인터페이스를 구현하는 것입니다. 인터페이스는 하위-레벨 I/O 모듈로 구성됩니다. 더 많은 정보는 스트리밍 / 스트림 매니저 를 참고하세요.
이 예제는 CAkFilePackageLowLevelIODeferred 를 사용합니다. 해당 클래스는 AK::StreamMgr::IAkFileLocationResolver 와 AK::StreamMgr::IAkLowLevelIOHook 두 개의 인터페이스로 구현되며, File Packager 유틸리티(File Packager에 관한 더 많은 정보와 하위-레벨 I/O에서 어떻게 동작하는지는 refer to 파일 패키지 Low-Level I/O 구현 과 File Packager 유틸리티 참조)로 생성된 파일 패키지를 불러올 수 있습니다.
하위-레벨 I/O에 대한 더 많은 정보는 Low-Level I/O 를 참고하세요.
기본 스트림 매니저와 스트리밍 장치의 초기화 설정에 관한 더 많은 정보는 Audiokinetic Stream Manager 초기화 설정 를 참고하세요.
경고: 몇몇 초기화 설정은 AkThreadProperties와 같이 플랫폼에 특화된 멤버 구조체를 사용합니다. |
기본 하위-레벨 IO의 구현이나 완전한 스트리밍 매니저를 오버라이드하길 결정했다면, 이 코드를 알맞게 적용해야 합니다. 더 많은 정보는 스트리밍 / 스트림 매니저 를 참고하세요.
이제 기본 모듈이 초기화되어 사운드 엔진 자체를 초기화할 준비가 됐습니다.
사운드 엔진을 초기화하는 방법에 관한 더 많은 정보는 고급 사운드 엔진의 통합 을 참고하세요.
자신의 프로젝트에서 상호 작용하는 음악 기능을 사용하려면, 사운드 엔진 다음에 뮤직 엔진을 초기화해야 합니다.
자신의 프로젝트가 Wwise Spatial Audio를 사용할 경우, 사운드 엔진을 초기화한 다음 Spatial Audio 라이브러리 또한 초기화해줘야 합니다. Spatial Audio 사용법과 관련한 종합적인 정보를 보려면 API Setup 를 참고하세요. Spatial Audio의 환경 설정과 관련한 다양한 매개 변수를 보려면 AkSpatialAudioInitSettings 를 참고하세요.
참고: Spatial Audio를 사용하려면 Spatial Audio 모듈에 연결해야합니다. |
게임과 연결되도록 Wwise 편집 애플리케이션을 사용해 게임 내의 믹싱 및 프로파일링, 문제해결을 수행하기 위한 다음 단계로 커뮤니케이션을 초기화합니다. 게임 내에서 믹싱과 프로파일링, 문제해결은 사운드 디자이너가 더욱 효과적으로 게임의 오디오 작업을 하기 위한 상당히 강력한 방법입니다. 이러한 이유로 커뮤니케이션 작업을 진행하길 강력하게 추천합니다.
참고: 커뮤니케이션을 사용하기 위해서는 CommunicationCentral 모듈로 연결해야 합니다. |
참고: 커뮤니케이션은 사운드 엔진만의 Debug와 Profile 설정으로 사용 가능합니다. 커뮤니케이션은 게임의 배포 버전에서는 필요가 없기 때문에, 사운드 엔진의 Release 빌드에는 포함되지 않습니다. 다음 코드는 릴리즈 빌드에서 커뮤니케이션과 관련된 코드를 무시하기 위해 AK_OPTIMIZED 심볼을 사용합니다. |
지금까지 사운드 엔진의 모듈을 전부 초기화했습니다. 이제 플러그인을 등록해야 합니다. (플러그인 예제 참조) 게임 반복문에서 오디오를 처리하기 위한 호출과 관련된 세부 사항에 관해서는 오디오 처리 과정을 수행하기 위한 재귀 호출의 생성 를 참고하세요.
몇몇 콘솔 커뮤니케이션 라이브러리는 적절한 초기화/종료 호출이 균형을 이루지 않습니다. 그래서 AK::Comm::Term 호출로 콘솔에서 근본적인 하위-레벨 커뮤니케이션 라이브러리를 종료합니다. 이는 효과적으로 게임에 모든 TCP/IP 커뮤니케이션을 닫습니다. 게임이 종료된 후에도 커뮤니케이션 라이브러리가 활성화되도록 유지하기 위해, AkCommSettings은 시스템 라이브러리를 초기화할지 안 할지 결정하는 하나의 매개 변수를 갖습니다. 커뮤니케이션 라이브러리 자체를 초기화하도록 선택하려면 아래에 나오는 Wwise 사운드 엔진 코드를 확인하세요. 게임에서 이와 유사하게 동작해야 합니다.
Windows 소켓 초기화:
종료:
AkCommSettings 구조체의 AkCommSettings::ports 멤버는 Wwise 저작 애플리케이션과 사운드 엔진 간의 통신을 위해 사용되는 네트워크 포트를 나타냅니다. Wwise 커뮤니케이션이 활성화되면 게임에서 모든 포트가 열려있게 됩니다.
포트 중 하나인 AkCommSettings::Ports::uDiscoveryBroadcast는 동적 포트(0으로 설정이 불가능)가 될 수 없습니다. 저작 애플리케이션은 네트워크상에서 게임을 찾을 수 있도록 이를 인지하고 있어야 합니다. 게다가 여기서 지정한 값은 저작 애플리케이션 내 Project Settings의 Network 탭에서 지정한 값과 같아야 합니다.
작은 정보: 개발팀에서 여러 개의 게임에 Wwise로 작업을 진행한다면, 각각의 게임에 대해 서로 다른 Discovery Broadcast 포트를 사용하고 싶을 것입니다. Wwise 저작 애플리케이션에서 Remote Connections 창을 열면, 현재 열린 Wwise 프로젝트에 응답하도록 해당 게임에 대해서만 목록이 나타납니다. 해당 포트를 변경할 때 저작 애플리케이션 내의 Project Setting과 게임에서 AK::Comm::Init()로 전달되는 AkCommSettings 둘 다 변경해줘야 합니다. |
해당 구조체에서 다른 포트들은 동적 포트(또는, 임시 포트)가 될 수 있습니다. 이는 고정 포트를 사용하는 대신에 운영체제에 의해 자동으로 선택되게 합니다.
이 포트가 기본적으로 동적 포트입니다. 다른 애플리케이션과의 충돌 가능성을 최소화하려면 포트를 동적으로 유지하는 것이 좋습니다.
해당 포트가 게임의 다른 구성요소와 충돌할 때에는 AK::Comm::Init() 를 호출하기 전에 AkCommSettings 구조체에서 포트를 변경하면 됩니다.
참고: 멀티 플랫폼 게임에서는 AkCommSettings::Ports::uCommand 에 대해 각 플랫폼별로 다른 포트를 사용하는 것이 가능합니다. |
작은 정보: 동적/임시 포트에 대한 더 많은 정보는 다음 글을 참고하세요. |
Wwise 커뮤니케이션과 관련 있는 한 가지 포트가 더 있습니다. 그러나 해당 포트는 저작 애플리케이션 전용으로 열려 있어서, AkCommSettings::Ports 구조체에 들어있지 않습니다.
이 포트는 네트워크상에서 실행 중인 게임을 검출하도록 전송된 Discovery Broadcast 메시지에 대해서 응답을 받도록 저작 애플리케이션에 의해 사용됩니다. 기본적으로(0으로 설정) 동적 포트이지만, 저작 애플리케이션 내의 Project 설정에서 변경할 수 있습니다.
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요