[언리얼엔진 메타사운드 기초] 05. 여러 사운드를 랜덤하게 재생하는 방법 2

728x90

게임(내지는 메타버스)에서 사운드를 랜덤하게 재생하는 방법에는 두 가지 방법이 있습니다.

하나는 이전 글에서 언급한 Random Get이며 다른 하나는 Shuffle입니다.

 

 

두 방식은 비슷하다고 볼 수 있으나, 매커니즘에서 차이가 있습니다.

 

통계학적으로 보자면

랜덤(Random)은 세팅해놓은 배열 중에서 무작위로 하나의 elements를 선택한다음 그 elements를 다시 배열에 반영하는 형식으로 독립시행(복원추출)으로 볼 수 있습니다.

반면 셔플(Shuffle)은 무작위로 선택한 elements는 배열에서 제외하고 다시 뽑는 방식으로 종속시행(비복원추출)이죠.

 

하지만 메타사운드에서의 셔플(Shuffle)은 약간 다른 의미로 사용됩니다.

 

메타사운드의 셔플(Shuffle)은 배열 내 요소를 무작위로 섞은 뒤 해당 노드를 실행할 때마다 앞서 무작위로 섞어놓은 배열에서 다음 값을 가져옵니다. 이는 비복원추출과 유사한 개념입니다.

Auto Shuffle을 활성화시켰을 경우 배열 내 모든 요소를 완전히 읽었을 때 자동으로 재셔플 합니다.

Enable Shared State를 활성화시켰을 경우 해당 메타사운드를 재생하는 모든 인스턴스가 동일한 배열과 element 재생상태을 공유하여 작동합니다.

 

 

실제로 개발을 하다보면 보다 자연스러운 사운드 구현을 위해 랜덤과 셔플 사이의 무언가를 선택해야 할 경우가 있습니다.

예를들어, 동일한 발자국 소리가 연달아 들리지 않아야 하거나, 공격 사운드가 연달아 동일하게 들리지 않아야 하는 경우 등이 그런 경우입니다.

 

그럴 때는 Random Get의 No Repeats 기능을 사용하면 됩니다.

No Repeats에 설정한 값만큼 마지막으로 재생된 요소를 반복하지 않습니다.