PART 01 · 강의 2/3

Sound Wave와 Sound Cue

UE5의 기본 오디오 에셋인 Sound Wave와 레거시 Sound Cue의 구조와 활용법

01

Sound Wave 에셋

UE5에서 오디오 데이터를 담는 가장 기본적인 에셋

Sound Wave(USoundWave)는 원본 오디오 파일을 임포트하면 생성되는 에셋입니다. PCM 데이터를 플랫폼별 압축 포맷으로 저장하며, 메타데이터(샘플레이트, 채널 수, 길이 등)를 포함합니다.

지원 임포트 포맷

포맷 확장자 권장 여부 비고
WAV (PCM) .wav 권장 무손실, 최고 품질 소스. 16bit/48kHz 권장
OGG Vorbis .ogg 가능 손실 압축이므로 WAV 임포트 후 엔진에서 압축 권장
FLAC .flac 가능 UE 5.1+ 지원, 무손실 압축
임포트 모범 사례

항상 WAV 16bit / 48kHz로 임포트하세요. 엔진이 플랫폼별로 최적의 압축을 자동 적용합니다. OGG로 임포트하면 "손실 → 재압축"이 되어 품질이 추가로 저하됩니다.

주요 프로퍼티

프로퍼티 타입 설명
Sound Class USoundClass* 이 사운드가 속하는 Sound Class (믹싱 그룹)
Volume float 기본 볼륨 배수 (0.0 ~ 1.0, 기본값 1.0)
Pitch float 기본 피치 배수 (0.5 = 반음 아래, 2.0 = 한 옥타브 위)
Looping bool 루프 재생 여부
Loading Behavior ESoundWaveLoadingBehavior ForceInline, RetainOnLoad, PrimeOnLoad, LoadOnDemand 중 선택
Compression Quality int32 압축 품질 (1~100, 기본 40). 플랫폼별 오버라이드 가능
Blueprint - Sound Wave 재생
// Blueprint에서 Sound Wave 직접 재생 // 1. Play Sound 2D (UI 사운드 등 비공간적 재생) UGameplayStatics::PlaySound2D( WorldContext, SoundWave, // USoundWave* 에셋 참조 VolumeMultiplier, PitchMultiplier ); // 2. Play Sound at Location (3D 공간 재생) UGameplayStatics::PlaySoundAtLocation( WorldContext, SoundWave, Location, // FVector 위치 Rotation, // FRotator 방향 VolumeMultiplier, PitchMultiplier, StartTime, AttenuationSettings, // 감쇠 설정 ConcurrencySettings // 동시 재생 설정 );
02

Sound Cue 에디터

노드 기반 오디오 파라미터 그래프 시스템

Sound Cue(USoundCue)는 Sound Wave를 입력으로 받아 볼륨 조절, 랜덤 재생, 피치 변조 등의 처리를 적용하는 노드 기반 그래프입니다. Sound Cue 에디터에서 시각적으로 오디오 로직을 구성할 수 있습니다.

레거시 시스템 주의

Sound Cue는 UE5에서 여전히 사용 가능하지만, Epic Games는 새 프로젝트에서 MetaSounds 사용을 권장합니다. Sound Cue는 새로운 기능이 추가되지 않는 유지보수 모드입니다. Part 02에서 MetaSounds를 자세히 다룹니다.

주요 Sound Cue 노드

노드 기능 주요 파라미터
Wave Player Sound Wave 재생 Sound Wave 에셋, Looping
Random 여러 입력 중 랜덤 선택 Weights, Random Without Replacement
Modulator 볼륨/피치 범위 내 랜덤 변조 Volume Min/Max, Pitch Min/Max
Attenuation 거리 기반 볼륨 감쇠 오버라이드 Attenuation Settings
Mixer 여러 사운드를 동시 재생/믹싱 Input Volumes
Concatenator 사운드를 순차적으로 연결 재생 Input Volumes
Branch Bool 파라미터 기반 분기 Bool Parameter Name
Crossfade by Param 파라미터 값에 따른 크로스페이드 Parameter Name, Fade Curve

Sound Cue 노드 그래프 예시: 발자국 사운드

Footstep Sound Cue Graph
Wave: Step_01
Random
Modulator (Vol 0.8~1.0, Pitch 0.9~1.1)
Output
Wave: Step_02
Wave: Step_03
03

오디오 로딩과 스트리밍

Sound Wave의 메모리 관리와 스트리밍 전략

오디오 에셋은 크기에 따라 인라인 로딩스트리밍으로 나뉩니다. 짧은 효과음은 메모리에 상주시키고, 긴 배경음악이나 대사는 스트리밍으로 처리하는 것이 일반적입니다.

Loading Behavior 옵션

옵션 동작 적합한 용도
ForceInline 전체 PCM 데이터를 메모리에 로드 짧은 효과음 (1초 미만), 즉각 반응 필요
RetainOnLoad 레벨 로드 시 메모리에 유지 자주 재생되는 중간 길이 사운드
PrimeOnLoad 첫 청크만 프라이밍, 나머지 스트리밍 긴 사운드 중 빠른 시작 필요
LoadOnDemand 재생 요청 시 스트리밍 시작 배경음악, 긴 대사
스트리밍 임계값

프로젝트 설정의 Audio > Streaming Threshold를 초과하는 Sound Wave는 자동으로 스트리밍 모드로 전환됩니다. 기본값은 보통 200KB이며, 프로젝트 요구에 따라 조정할 수 있습니다.

C++ - Sound Wave 로딩 설정
// C++에서 Sound Wave의 로딩 동작 설정 USoundWave* SoundWave = LoadObject<USoundWave>( nullptr, TEXT("/Game/Audio/SFX/Explosion_01") ); if (SoundWave) { // 인라인 로딩으로 강제 설정 (짧은 효과음) SoundWave->LoadingBehavior = ESoundWaveLoadingBehavior::ForceInline; // 압축 품질 조정 (1~100) SoundWave->CompressionQuality = 60; // Sound Class 할당 SoundWave->SoundClassObject = SFXSoundClass; }
04

실전 에셋 관리 가이드

프로젝트에서 오디오 에셋을 효과적으로 조직하는 방법

권장 폴더 구조

Content Browser
Content/ Audio/ SFX/ Footsteps/ FS_Concrete_01.uasset FS_Concrete_02.uasset SC_Footstep_Concrete.uasset // Sound Cue MS_Footstep_Concrete.uasset // MetaSound Source Weapons/ Impacts/ UI/ Music/ BGM_Exploration.uasset BGM_Combat.uasset Voice/ Dialogue/ Narration/ Ambient/ Forest/ City/ Mix/ SC_Master.uasset // Sound Class SM_DefaultMix.uasset // Sound Mix SA_DefaultAttenuation.uasset // Attenuation Settings

네이밍 컨벤션

접두사 에셋 타입 예시
없음Sound WaveExplosion_Large_01
SC_Sound CueSC_Explosion_Large
MS_MetaSound SourceMS_Explosion_Large
MP_MetaSound PatchMP_RandomPitchShift
SA_Sound AttenuationSA_DefaultFalloff
SCL_Sound ClassSCL_SFX
SM_Sound MixSM_CombatMix
SCR_Sound ConcurrencySCR_Footsteps
에셋 관리 모범 사례

1) 동일 카테고리의 Sound Wave는 3~5개 이상의 변형을 준비하여 반복 피로를 줄이세요. 2) Sound Wave 이름 끝에 숫자 접미사(_01, _02)를 붙여 변형을 구분하세요. 3) 긴 파일(5초 이상)은 반드시 스트리밍 설정을 확인하세요.

SUMMARY

핵심 요약

  • Sound Wave는 오디오 데이터를 담는 기본 에셋이며, WAV 16bit/48kHz 임포트를 권장한다
  • Sound Cue는 노드 기반 오디오 그래프로, Random/Modulator 등을 통해 다양한 변형을 생성할 수 있다
  • Sound Cue는 레거시 시스템으로, 새 프로젝트에서는 MetaSounds 사용을 권장한다
  • 오디오 로딩은 ForceInline(짧은 효과음)과 LoadOnDemand(긴 음악)를 용도에 따라 선택한다
  • 체계적인 폴더 구조와 네이밍 컨벤션은 프로젝트 규모가 커질수록 중요해진다
PRACTICE

도전 과제

배운 내용을 직접 실습해보세요

실습 1: Sound Wave 임포트 및 설정

WAV 파일을 임포트하고 Sound Wave 에셋의 프로퍼티를 설정하세요. Compression Quality, Streaming, Loading Behavior(Retain on Load, Prime on Load, Load on Demand) 설정에 따른 메모리 사용량 차이를 비교하세요.

실습 2: Sound Cue 노드 그래프 구성

Sound Cue 에디터에서 다음 노드들을 활용한 사운드를 제작하세요: Random (3개 이상 Wave), Modulator (Pitch/Volume 랜덤), Attenuation, Concatenator. 발자국 소리처럼 매번 다른 사운드가 재생되는 Cue를 완성하세요.

심화 과제: Sound Cue 파라미터 제어 시스템

Sound Cue의 Sound Parameter를 C++에서 실시간으로 제어하는 시스템을 구현하세요. UAudioComponent::SetFloatParameter()로 게임플레이 상태(체력, 속도 등)에 따라 사운드를 동적으로 변화시키세요.