Wwise SDK 2022.1.17
|
Wwise에서 2차 출력은 일반 TV 오디오 출력이 아닌 모든 물리적 오디오 엔드포인트를 지정합니다. The most common secondary outputs are headsets, game controller speakers, and haptic feedback for game controllers. Haptic feedback integration is described in detail in Wwise Motion(모션) 통합하기. This topic focuses on audio outputs (headsets and controller speakers).
You can use secondary outputs to define separate mixes for each of these outputs without affecting the main speaker/TV mix. The same Wwise feature set applies to the secondary outputs as for the regular mix. The only difference is that the output targets controllers instead of the speaker/TV.
저작 측면에는, Audio Device 장치의 믹싱을 따로 정의하려면 새로운 마스터 버스를 만들어야합니다. 그 다음 이 새로운 버스의 Audio Device ShareSet 속성이 다른 장치를 가리키도록 변경합니다. 서드파티에서 만든 Audio Device 플러그인을 사용하고자 할 경우, 먼저 올바른 플러그인 타입의 Audio Device ShareSet를 생성해야 할 수도 있습니다. 그러면 사운드를 새로운 버스 또는 하위 버스에 정상적으로 라우팅할 수 있습니다. Wwise에서 어떤 Audio Device를 사용할 수 있는지에 대해 자세한 정보를 보시려면 Audio Devices를 확인하세요.
2차 출력 인스턴스 하나에만 종속된 사운드의 경우 Output Bus를 직접 설정하는 것이 좋습니다. 예를 들어 플레이어가 쏘는 총소리, 테니스 라켓 휘두는 소리, PDA 소리, 게임플레이 피드백 등이 있습니다. 그러나 그 외 다른 버스 계층 구조에서는 Auxiliary Bus에 User나 Game Send를 사용할 수 있습니다. 이 방법은 스파이 카메라 또는 안내 방송과 같이 동일한 사운드가 다양한 출력과 TV에서 동시에 들릴 경우 선호되는 방법입니다.
동일한 음원으로 복수의 컨트롤러와 TV에 동시에 같은 소리를 재생할 수 있습니다. 설계 측면에서는, 게임 플레이어가 몇 명이 될 지 알 수 없습니다. 버스 계층 구조는, 게임에 등록된 각 출력의 라우팅 템플릿으로 사용됩니다. 따라서 재생되는 음원이나 게임 오브젝트에 대해 활성화돼있는 RTPC 및 Switch 값에 따라 각 출력에는 서로 다른 믹싱과 Effect가 적용될 수 있습니다. 아래 예제 섹션에서 이와 관련한 예제를 참고하세요.
TV와 게임 컨트롤러와 같이 여러 장치에 동일한 오디오를 출력할 때, 두 장치 간 레이턴시가 발생할 것입니다. 오디오 신호의 경로에 서로 다른 하드웨어로 인한 레이턴시는 불가피하게 발생하게 됩니다. 컨트롤러 쪽에서는, 오디오 신호가 무선 채널을 통해 전송되어 유선 컨트롤러와는 다른 지연이 발생합니다. TV의 경우, 신호가 콘솔에서 나와 리시버나 TV로 전송돼 해당 프로세서가 일정량의 지연을 추가시킵니다. 이러한 지연은 각 시스템의 AV 설정이 다르게 돼있어 발생되는 것이기 때문에 스피커/TV와 게임 컨트롤러로 사운드가 동시에 전송되도록 동기화하는 것은 불가능합니다. 이런 제약은 개발하는 사운드 설계 단에서 극복해야 합니다.
동일한 타입에 대해 복수의 출력이 있는 경우 (예를 들어 게임 컨트롤러 스피커), 해당 장치의 각 인스턴스를 구별해줘야 합니다. 일반적인 Listener/GameObject
개념을 사용하는데, 그 이유는 특정 리스너/이미터 전송을 허용하기 때문입니다. 더 많은 정보는 리스너 개념 를 참고하세요. 게임 프로그래머는 AK::SoundEngine::AddOutput
를 이용해 반드시 출력 장치를 Listener와 연결시켜줘야 합니다. 그리고 프로그래머는 AK::SoundEngine::SetActiveListeners
를 이용해 리스너와 게임 오브젝트의 관계를 설정해야 합니다. 복수의 장치에서 사운드를 동시에 재생해야 하는 경우, 복수의 리스너를 지정할 수 있다는 점을 명심하세요 (아래 예제 참고).
참고: 특정 타입(System, DVR, 등)의 출력이 하나밖에 없는 경우에는 여러 개의 리스너가 필요하지 않습니다. 이런 경우, Wwise 프로젝트에 지정된 라우팅에만 의존하면 됩니다. 게임에 싱글 플레이어만 있으면 플레이어에 특화된 출력(예: Game Controller Speaker 및 Communication)의 경우에도 위와 동일합니다. 즉, 게임에 활성화된 컨트롤러가 하나뿐이라는 뜻입니다. 리스너 통합하기 에서 리스너와 관련된 더 자세한 정보를 확인하세요. |
참고: 플레이어 장치 측면에서는, 게임 컨트롤러가 시스템에 연결되거나 연결 해제될 때마다 게임 코드가 AK::SoundEngine::AddOutput 와 AK::SoundEngine::RemoveOutput 를 호출해야 합니다. 어느 장치를 어느 리스너 및 플레이어와 연결되는지에 대해 Wwise가 자동으로 알지는 못합니다. 시스템 장치(예: 주요 출력 및 DVR)는 Wwise에 의해 자동으로 관리됩니다. |
이 예제는 PS4를 대상으로 쓰였으나 다른 플랫폼에도 적용할 수 있습니다. AK::SoundEngine::AddOutput
함수에 대한 문서를 확인하세요. Integration Demo 예제 에서 DemoMotion 페이지(멀티 플레이어)와 BGMDemo 페이지(DVR/BGM 관리)에 보면 복수의 출력 관리에 대한 작업 예제를 확인할 수 있습니다.
참고: 가독성을 높이기 위해 이 예제들에는 함수 호출 전에 필요로 하는 AK::SoundEngine 이 생략돼있습니다. |
UserIDs를 얻는 코드 (PS4에만 해당됨):
게임 컨트롤러 출력에서 나는 사운드:
두 개의 서로 다른 컨트롤러에서 나오는 동일한 사운드:
두 개의 서로 다른 컨트롤러에서 나오는 다른 사운드:
한 개의 게임 컨트롤러 출력과 TV에서 나는 동일한 사운드:
아래는 Windows에서 2차 출력, 즉 헤드폰을 추가하는 예제입니다.
참고: Windows에서 모든 장치는 "System" 장치입니다. 따라서 장치를 하나 추가할 때에는, 각각의 장치를 구별해줘야 합니다 (더 많은 정보는 복수의 출력에 대해 장치 및 리스너, 게임 오브젝트 설정하기 를 확인하세요). 이에 따라 다른 리스너가 필요합니다. |
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요