사운드스케이프(Soundscape) 는 플레이어가 월드 안에서 움직일 때 스트리밍되는 앰비언트 사운드를 프로시저럴하게 생성합니다. 플러그인을 설정하면 이러한 사운드 시스템이 자동으로 관리되고 구성되므로 수동으로 생성할 필요가 없어집니다.
이 가이드에서는 기본 사운드스케이프를 설정하는 방법을 알아봅니다.
전제조건
- 사운드스케이프 플러그인은 기본적으로 비활성화되어 있습니다. 활성화하려면 편집(Edit) > 플러그인(Plugins) 을 선택하여 플러그인(Plugin) 패널을 열고 검색 바에서 플러그인을 찾은 다음 해당되는 체크박스를 클릭합니다.
- 삼인칭 템플릿 등 이동을 지원하는 플레이어 캐릭터 가 있는 프로젝트가 필요합니다.
- 이 가이드에 따르면 프로젝트에 사운드 웨이브(Sound Wave) 에셋도 필요합니다. 사운드 웨이드를 생성하는 방법에 대한 자세한 내용은 오디오 파일 임포트하기를 참고하세요.
- (선택적) 사운드스케이프는 3D 공간에 사운드를 구성하므로, 사운드 웨이브에 어테뉴에이션 세팅(Attenuation Settings) 을 사용하면 결과가 더욱 공간화됩니다. 공간화에 대한 자세한 내용은 공간화 및 사운드 어테뉴에이션을 참고하세요.
1 - 사운드스케이프 상태 데이터 테이블 생성
사운드스케이프는 게임플레이 태그(Gameplay Tags) 를 상태로 사용합니다. 블루프린트 또는 C++를 사용해 이러한 상태를 제어할 수 있으며, 사운드스케이프는 설정한 조건에 자동으로 반응합니다.
-
데이터 테이블(Data Table) 에셋을 생성하려면 콘텐츠 추가(Add Content) 를 클릭하거나 콘텐츠 브라우저 에서 빈 공간을 우클릭하고 기타(Miscellaneous) > 데이터 테이블 을 선택합니다. 행 구조 선택(Pick Row Structure) 창이 표시됩니다.
-
드롭다운에서 GameplayTagTableRow 를 선택합니다.
- 확인(Ok) 을 클릭합니다.
- 데이터 테이블 이름으로 'SoundscapeStates'를 입력합니다.
-
새 데이터 테이블 에셋을 우클릭하고 컨텍스트 메뉴에서 편집(Edit) 을 선택합니다. 새 데이터 테이블 에디터(Data Table Editor) 창이 표시됩니다.
- 추가(Add) 를 클릭해 새 게임플레이 태그를 생성합니다.
- 열 에디터(Row Editor) 패널에서 Tag(태그) 를 'Soundscape.Active'로 변경합니다.
- 데이터 테이블을 저장합니다.
2 - 프로젝트 세팅에 데이터 테이블 추가
게임플레이 태그를 프로젝트 세팅의 중앙 태그 딕셔너리에 추가해야 엔진이 인식할 수 있습니다. 게임플레이 태그에 대한 자세한 내용은 게임플레이 태그를 참고하세요.
- 편집(Edit) > 프로젝트 세팅(Project Settings)... 으로 이동하여 프로젝트 세팅 패널을 엽니다.
- 패널 왼쪽에서 프로젝트(Project) 헤딩 아래의 GameplayTags 를 클릭합니다.
- 게임플레이 태그 테이블 목록(Gameplay Tag Table List) 의 엘리먼트 추가(Add Element) 를 클릭합니다.
-
인덱스(Index) [0] 드롭다운을 클릭하고 앞서 생성한 SoundscapeStates 데이터 테이블을 선택합니다. 이제 Soundscape.Active 상태가 게임플레이 태그 목록(Gameplay Tag List) 에 표시됩니다.
3 - 사운드스케이프 팔레트 및 컬러 생성
사운드스케이프 시스템을 주도하는 에셋에는 두 가지 타입이 있습니다. 팔레트(Palettes) 와 컬러(Colors) 에셋입니다. 사운드스케이프 컬러(Soundscape Color)에는 사운드 에셋 레퍼런스와 사운드 재생 방식을 제어하는 행동 프로퍼티가 포함됩니다. 사운드스케이프 팔레트(Soundscape Palette)에는 컬러 레퍼런스와 팔레트의 활성화 시기를 제어하는 재생 조건이 포함됩니다.
-
사운드스케이프 팔레트 에셋을 생성하려면 콘텐츠 추가(Add Content) 를 클릭하거나 콘텐츠 브라우저 에서 빈 공간을 우클릭하고 오디오(Audio) > 사운드스케이프(Soundscape) > 사운드스케이프 팔레트(Soundscape Palette) 를 선택합니다.
- 원하는 팔레트 이름을 입력합니다. 일반적으로 이 이름은 팔레트를 활성화하는 조건을 반영해야 합니다.
- 사운드스케이프 컬러 에셋을 생성하려면 콘텐츠 추가(Add Content) 를 클릭하거나 콘텐츠 브라우저 에서 빈 공간을 우클릭하고 오디오(Audio) > 사운드스케이프(Soundscape) > 사운드스케이프 컬러(Soundscape Color) 를 선택합니다.
- 원하는 컬러 이름을 입력합니다. 일반적으로 이 이름은 컬러가 재생할 사운드의 내용을 반영해야 합니다.
4 - 프로젝트 세팅에 팔레트 추가
사운드스케이프를 프로젝트 세팅의 사운드스케이프 팔레트 컬렉션(Soundscape Palette Collection) 에 추가해야 엔진이 인식할 수 있습니다.
- 편집(Edit) > 프로젝트 세팅(Project Settings)... 으로 이동하여 프로젝트 세팅 패널을 엽니다.
- 패널 왼쪽에서 게임(Game) 헤딩 아래의 사운드스케이프(Soundscape) 를 클릭합니다.
- 사운드스케이프 팔레트 컬렉션(Soundscape Palette Collection) 에서 엘리먼트 추가(Add Element) 를 클릭합니다.
-
드롭다운을 클릭하여 앞서 생성한 사운드스케이프 팔레트를 선택합니다.
5 - 팔레트 설정
팔레트가 컬렉션에 있더라도 환경설정해야 합니다.
- 콘텐츠 브라우저(Content Browser) 에서 사운드스케이프 팔레트(Soundscape Palette) 를 더블클릭하여 디테일(Details) 패널을 엽니다.
- Soundscape Palette Playback Conditions 옆의 편집(Edit) 을 클릭합니다. 새 태그 에디터(Tag Editor) 창이 표시됩니다.
- 루트 표현식(Root Expression) 드롭다운을 클릭하고 모든 태그 매치(All Tags Match) 를 선택합니다. 새 태그(Tags) 엔트리가 표시됩니다.
- 태그(Tags) 드롭다운을 클릭하고 Soundscape.Active 를 선택합니다.
-
태그 에디터(Tag Editor) 창 왼쪽 상단의 저장하고 닫기(Save and Close) 를 클릭합니다.
- 컬러(Colors)의 엘리먼트 추가(Add Element) 를 클릭합니다.
- 인덱스(Index) [0] 왼쪽의 화살표를 클릭하여 해당 섹션을 펼칩니다.
- 사운드스케이프 컬러(Soundscape Color) 드롭다운을 클릭하고 인덱스 [0] 에 대해 앞서 생성한 사운드스케이프 팔레트를 선택합니다.
-
사운드스케이프 팔레트를 저장합니다.
6 - 컬러 설정
이제 팔레트에 컬러가 생겼으니, 컬러에 사운드와 비헤이비어를 추가하겠습니다.
- 콘텐츠 브라우저(Content Browser) 에서 사운드스케이프 컬러(Soundscape Color) 를 더블클릭하여 디테일(Details) 패널을 엽니다.
-
사운드스케이프(Soundscape) > Color > Sound 드롭다운을 선택하고 재생할 사운드 웨이브 에셋을 선택합니다.
- Modulation Behavior > Randomize Pitch 체크박스를 활성화합니다. 그러면 사운드를 재생할 때마다 피치가 랜덤화됩니다.
- Spawn Behavior > 연속 리스폰(Continuously Respawn) 체크박스를 활성화합니다. 그러면 사운드가 계속 생성됩니다.
- Spawn Behavior > Max Spawn Distance 에 50.0을 입력합니다. 그러면 사운드가 청취자에게 더 가깝게 생성됩니다.
-
사운드스케이프 컬러를 저장합니다.
7 - 트리거 볼륨 배치
컬러 내의 사운드는 팔레트 조건이 충족되면 재생됩니다. 조건은 게임플레이 태그 Soundscape.Active 가 설정되면 충족됩니다. 블루프린트 또는 C++를 사용하여 상태를 원하는 대로 설정할 수 있지만, 이 가이드에서는 레벨 블루프린트(Level Blueprint) 와 트리거 볼륨(Trigger Volume) 을 사용하여 레벨 내에서 사운드스케이프를 재생할 영역을 정의하겠습니다.
-
액터 배치(Place Actors) 패널을 사용하거나 레벨 에디터 툴바 에서 빠른 추가 를 클릭하고 볼륨(Volumes) > 트리거 볼륨(Trigger Volume) 을 선택하여 레벨에 트리거 볼륨을 배치합니다.
-
레벨 내에서 트리거 볼륨의 위치, 크기, 셰이프를 조정하여 캐릭터가 안팎으로 움직일 수 있게 합니다.
8 - 블루프린트 설정
- 트리거 볼륨을 선택합니다.
-
레벨 에디터 툴바 에서 블루프린트(Blueprint) 버튼을 클릭하고 레벨 블루프린트 열기(Open Level Blueprint) 를 선택합니다.
- 그래프에서 빈 공간을 우클릭하여 트리거 볼륨에 On Actor Begin Overlap 노드를 추가합니다.
- 그래프에서 빈 공간을 우클릭하여 트리거 볼륨에 On Actor End Overlap 노드를 추가합니다.
- 그래프에서 빈 공간을 우클릭하여 Get SoundscapeSubsystem 노드를 추가합니다.
- Soundscape Subsystem 의 핀 연결을 그래프의 빈 공간으로 드래그하여 연결된 Set State 노드를 추가합니다.
- Soundscape Subsystem 의 핀 연결을 그래프의 빈 공간으로 드래그하여 연결된 Clear State 노드를 추가합니다.
- On Actor Begin Overlap 노드의 실행 핀을 Set State 노드에 연결합니다.
- On Actor End Overlap 노드의 실행 핀을 Clear State 노드에 연결합니다.
-
레벨 블루프린트를 저장합니다.
9 - 결과 듣기
- 레벨 에디터 툴바(Level Editor Toolbar) 에서 레벨 플레이(Play Level) 버튼을 클릭합니다.
- 캐릭터를 트리거 볼륨으로 움직인 다음 멈춥니다.
- 새 사운드스케이프를 듣습니다!
사운드스케이프를 계속 개발하는 과정에서 다음 콘솔 명령이 유용하게 쓰일 것입니다.
au.debug.sounds 1: 레벨 내 모든 활성 사운드의 목록과 관련 정보를 뷰포트에 표시합니다.au.3dVisualize.Enabled 1: 활성 사운드의 위치를 3D 스페이스에 표시합니다.
오디오 콘솔 명령에 대한 자세한 내용은 오디오 콘솔 명령을 참고하세요.
10 - 직접 해보기
기본 사운드스케이프를 생성했으니, 이를 바탕으로 더 발전시켜 보세요.
다음과 같은 작업을 직접 해 보세요.
- SoundscapeStates를 더 생성하여 레벨 내에서 추가 조건 지원
- 블루프린트 또는 C++를 사용하여 하루의 시간 등 다른 앰비언트 상황에 대한 추가 로직 스크립팅
- 컬러와 팔레트의 디테일을 조작하여 행동 변경
- 팔레트에 컬러를 더 추가하여 추가 사운드 레이어링
- 사운드스케이프에 팔레트를 더 추가하여 그 자체로 사용하거나 기존 팔레트에 레이어링
- 컬러에 사운드 웨이브 대신 메타사운드 소스 사용. 자세한 내용은 메타사운드를 참고하세요.