버전

menu_open
Wwise SDK 2023.1.3
통합 세부사항 - Switch

소개

스위치는 완전히 새로운 사운드가 있어야 하는 게임 액션이나 환경에서의 변화입니다. 스위치 시스템은 게임 오브젝트 기반의 스위치 컨테이너를 다루는 데에만 목적을 둡니다.

예제: 스위치 그룹

예를 들어, 지면 텍스처를 스위치로 설정하면, 발소리가 발생할 때 어떤 사운드를 재생할지 결정하게 됩니다.

스위치 그룹은 다음과 같이 될 수 있습니다.

  • Ground (지면)

그리고 해당 그룹의 다양한 스위치는 다음과 같이 될 수 있습니다.

  • Gravel (자갈)
  • Metal (금속)
  • Sand (모래)

주어진 시간에 두 개의 서로 다른 캐릭터가 두 개의 서로 다른 지면 텍스처에 놓이면, 각 캐릭터의 스위치-상태가 달라집니다.

스위치 설정

스위치 그룹에서 현재 스위치가 없는 경우, 해당 스위치 그룹은 기본 스위치를 사용합니다. 이 상황은 게임이 시작할 때 또는 개발 중간에 발생할 수 있습니다. 또한, 게임 코드에서 존재하지 않는 스위치를 참조하면 스위치 컨테이너는 기본 스위치를 사용하게 됩니다. 예를 들어, 사운드 디자이너가 컨테이너를 변경해 스위치를 제거했지만 오디오 프로그래머에게 이를 알리지 않을 경우 이 스위치는 여전히 코드에 남게 됩니다. 게임에서 해당 코드가 실행되면 참조되는 스위치가 더는 존재하지 않아서 기본 스위치가 사용됩니다.

스위치 다루기

스위치를 다루기 위한 세 가지 선택사항이 있습니다. SDK AK::SoundEngine::SetSwitch() 메소드 또는 Wwise 이벤트에서 생성된 "SetSwitch" 액션 및 RTPC가 있습니다. 그러나 이와 같은 선택 사항을 동시에 사용하면 문제가 발생할 수 있습니다. 예를 들어 사운드 디자이너가 생성한 이벤트 내에서 SetSwitch 액션을 다룰 때 오디오 개발자가 SDK AK::SoundEngine::SetSwitch() 명령어를 사용해 스위치를 다루면, 해당 스위치를 제어하기가 어려워질 수 있습니다. 각각의 스위치 그룹 또는 전체 프로젝트에 대해 사운드 디자이너와 오디오 개발자가 실제로 어떻게 스위치를 다룰지 협의해 결정하는 것이 좋습니다. 스위치를 어떻게 변경할지 합의가 되면 이 세 가지 방법을 모두 함께 사용할 수도 있습니다. 예를 들어, 오디오 개발자는 SDK AK::SoundEngine::SetSwitch() 명령어를 사용해 스위치를 초기화하지만, 게임의 나머지 부분에서는 이벤트에 의해서 다루도록 놔둘 수 있습니다.

AK::SoundEngine::SetSwitch()로 스위치 설정

SDK로부터 스위치를 설정하는 두 가지 방법으로 문자열(유니코드나 ansi)의 사용 또는 ID를 사용하는 방법이 있습니다.

문자열의 사용은 코드를 더욱 읽기 쉽게 만들며, 개발하는 동안이나 일반적으로 문자열을 사용하는 환경에서 작업할 때 적합합니다. ID의 사용은 탐색 시간을 줄이고 문자열 매핑의 저장에 사용되어야 하는 메모리를 절약합니다.

SDK로부터 스위치 설정은 단순히 다음 호출과 같습니다.

L"Ground",
L"Gravel",
myGameObject1
);

또는

AK::SWITCHES::GROUND::GROUP,
AK::SWITCHES::GROUND::SWITCH::GRAVEL,
myGameObject1
);

SetSwitch() 함수의 세 번째 매개 변수는 스위치가 적용되어야 하는 게임 오브젝트입니다. 재생 액션을 포함하는 이벤트가 이 게임 오브젝트를 사용해 트리거 되면, 스위치 컨테이너에서 무엇을 재생할지 선택하도록 특정한 스위치를 사용하게 됩니다. 스위치가 게임 오브젝트에 대해서 설정되지 않으면 해당 오브젝트는 스위치 컨테이너 옵션에 지정된 기본 스위치를 사용하게 됩니다.

게임 오브젝트가 등록 해지되면 현재 스위치도 지워지게 된다는 점에 주의하세요. 게임 오브젝트가 나중에 다시 사용되면 해당 스위치는 초기화될 것입니다.

더 많은 정보는 통합 세부사항 - 게임 오브젝트 를 참고하세요.

ID 사용 활성화

ID로 동작하려면 뱅크는 반드시 Wwise의 Generate SoundBanks 대화상자에서 "Generate header file" 옵션으로 생성되어야 합니다. Wwise_IDs.h라는 이름의 정의 파일은 필요한 모든 ID를 포함합니다. 이 파일은 각각의 뱅크가 생성될 때마다 갱신됩니다.

스위치와 상태의 비교

상태 그룹과 스위치 그룹의 주된 차이점으로 스위치는 게임에서 모든 게임 오브젝트에 대해 달라질 수 있다는 점입니다. 상태와 스위치의 또 다른 점으로 스위치가 변경되면 스위치 컨테이너만 영향을 받게 된다는 점입니다. 상태가 변경되면 스위치 컨테이너에 영향을 받는 것 뿐만 아니라 다양한 다른 오브젝트(사운드, 액터-믹서, 버스 등)의 매개 변수도 변경될 수 있습니다.

작은 정보: 스위치가 게임에서 전역으로 사용되어 모든 게임 오브젝트에 적용하려면, 게임 오브젝트에 전부 스위치를 설정하는 대신에 상태(이미 전역으로된)를 사용합니다. 이는 작업시간을 줄여주며 플랫폼 메모리와 처리 시간을 단축시킵니다.

스위치 통합 예제는 Switch 예제 를 참고하세요.

참고
Understanding Switches, 통합 세부사항 - 게임 오브젝트, 통합 세부사항 - State (상태), AK::SoundEngine::SetSwitch(), RTPC와 게임 오브젝트
AKSOUNDENGINE_API AKRESULT SetSwitch(AkSwitchGroupID in_switchGroup, AkSwitchStateID in_switchState, AkGameObjectID in_gameObjectID)

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

지원이 필요하신가요?

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

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

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

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

Wwise를 시작해 보세요