오디오

이 페이지는 작업 중입니다.

모드에서 사운드 효과와 음악을 추가하는 것은 게임에 생명을 불어넣는 데 큰 도움이 될 수 있습니다. 커피 스테인은 새티스팩토리에서 사운드를 재생하기 위해 Wwise 오디오 시스템을 사용합니다. 모드가 수행하려는 작업에 따라, 내장된 언리얼 시스템이나 Wwise 시스템을 사용하는 것이 좋습니다.

ADA 메시지를 위한 오디오

자세한 정보는 ADA 메시지 전용 페이지를 참조하십시오.

언리얼 오디오 시스템

UI(사용자 인터페이스) 또는 클라이언트 전용 효과를 위해 사운드를 재생하는 경우, 언리얼의 내장 사운드 시스템을 사용하는 것이 더 쉬울 수 있습니다. 이 경우 ADA와 같은 게임 시스템과의 통합 및 Wwise의 고급 기능을 잃게 됩니다.

"Play Sound 2D" 및 "Play Sound at Location" 블루프린트 노드는 이 목적에 유용합니다.

Wwise

Wwise 사운드 시스템과 인터페이스하려면 Wwise 프로젝트를 설정하고 이를 모딩 프로젝트와 통합해야 합니다.

많은 수의 Wwise 사운드를 사용하는 경우, 프로젝트에 대한 Wwise 인디 라이센스를 받아야 할 수 있습니다.

Wwise 에디터 열기

Wwise 애셋을 생성하고 편집하려면 Wwise 에디터 앱을 사용해야 합니다.

간단한 방법은 프로젝트 폴더에서 SatisfactoryModLoader_WwiseProject/SatisfactoryModLoader_WwiseProject.wproj에 위치한 Wwise 프로젝트 파일을 여는 것입니다. 이 경로와 이름은 언리얼 프로젝트 경로의 이름에 따라 약간 다를 수 있습니다.

또한 Wwise 런처 앱의 "Unreal Engine" 탭에서 wwise 로고 원과 "Wwise에서 열기" 버튼을 눌러 열 수도 있습니다(삼각형 버튼 옆).

사운드 뱅크 생성

사운드 뱅크를 생성하면 Wwise가 언리얼 에디터가 사용할 수 있는 파일을 생성하게 합니다. 모딩 프로젝트를 설정할 때 Wwise 데이터베이스를 설정하고 새로운 Audiokinetic 사운드뱅크를 만들 때마다 이 작업을 한 번씩 수행해야 합니다.

Wwise 에디터의 프로젝트 탐색기의 SoundBanks 탭에서 Default Work Unit을 우클릭 후 Generate Soundbank(s) for all platforms를 클릭하십시오.

Wwise_Soundbank_Generate

오디오 버스 설정

기본적으로 Wwise 오디오를 사용할 때 Master 볼륨 슬라이더만 작동합니다.

다른 슬라이더에 연결된 다양한 오디오 버스를 수동으로 생성해야 합니다.

TODO: 모드는 Wwise 바닐라 버스 애셋을 재사용할 수 없습니다. 자신의 오디오 버스를 생성하고 바닐라 버스의 설정 값을 복사해와야 합니다. 이를 위한 구체적인 지침 작성이 필요합니다.

감쇠 설정

Wwise 오디오를 건물이나 장비에 사용할 계획이라면 감쇠를 설정해야 합니다. 기본적으로 오디오는 맵의 반대편에 있어도 전체 볼륨으로 재생됩니다. 감쇠는 소리의 거리에 따라 소리가 더 조용해지거나 전혀 재생되지 않도록 합니다.

UI 또는 ADA 메시지에 대한 오디오를 사용할 계획이라면 감쇠는 필수 사항이 아니며 이 단계를 건너뛸 수 있습니다.

Wwise의 프로젝트 탐색기에서 ShareSets 탭으로 이동합니다. Share Sets는 여러 Wwise 객체에 동일한 구성을 제공하는 데 유용합니다.

Attenuations → Default Work Unit 섹션을 볼 수 있습니다.

Wwise_Attenuation_ProjectExplorer

Default Work Unit을 우클릭 후 New Child → Attenuation을 선택하여 새 감쇠 객체를 생성합니다.

Wwise_Attenuation_Create

이름은 원하는 대로 지정할 수 있지만, 같은 이름을 두 번 사용할 수는 없습니다.

새 감쇠 ShareSet을 두 번 클릭하여 엽니다.

주요 섹션에서 다음을 볼 수 있습니다:

Wwise_Attenuation_Info

거리

첫 번째 설정인 볼륨을 클릭합니다(기본적으로 자동으로 선택됨). 이 항목은 스크린샷에서 노란색으로 표시됩니다.

그런 다음 Max Distance 설정을 설정해야 합니다.

이 숫자는 언리얼 단위(uu)입니다. 변환은 100uu = 1미터입니다.

최대 거리는 플레이어가 소리를 들을 수 있는 건물에서의 거리입니다.

기본 건물에 따라, 작은 건물은 최대 거리가 4,000에서 6,000 사이이며, 큰 기본 건물은 약 6,000에서 10,000 사이입니다.

확산

기본적으로 확산은 0으로 설정됩니다. 이는 소리가 플레이어가 회전할 때 특정 지점에서 나오는 것을 의미합니다.

이것은 플레이어가 건물 바로 옆에 서 있을 때 매우 혼란스러울 수 있습니다.

위의 스크린샷에서 빨간색으로 표시된 드롭다운을 Custom으로 변경합니다. 그러면 하단 섹션에 확산 그래프가 표시됩니다.

라인을 더블 클릭하여 그래프에 새 포인트를 추가할 수 있습니다. 그런 다음 X 값을 대략 건물의 크기로 설정하고 Y 값을 100으로 설정합니다.

그래프에서 약간 더 멀리 있는 또 다른 포인트를 추가하고, X 값을 건물의 크기보다 약간 더 크게 설정하고 Y 값을 0으로 설정합니다.

Wwise_Attenuation_Spread_Graph

Wwise에 미디어 파일 가져오기

먼저, 상단 메뉴의 Layout → Designer를 통해 디자이너 레이아웃을 활성화하십시오.

왼쪽에 있는 프로젝트 탐색기에서 오디오 탭을 선택합니다.

Wwise_Import_ProjectExplorer

Actor-Mixer Hierarchy 아래에 Default Work Unit이 있습니다.

모든 것을 정리하기 위해 Wwise 파일을 보관할 새 가상 폴더를 만들고 이를 모드 참조와 동일한 이름으로 지정합니다.

Wwise_Import_VirtualFolderCreate

이제 오디오 파일을 가져올 차례입니다!

.wav 파일을 이 새로 생성된 가상 폴더로 드래그합니다. Audio File Importer 창이 표시됩니다.

Wwise_Import_ImportWindow

가져오기 모드에서 Create New Objects가 선택되어 있는지 확인하고, 올바른 폴더로 가고 있는지 확인한 후 Import를 클릭합니다.

이제 오디오 파일이 Wwise에 가져와졌으며 언리얼 시스템에서 참조할 준비가 되었습니다.

오디오에 감쇠 추가하기

오디오에 감쇠를 사용할 계획이라면, 먼저 문서의 감쇠 섹션을 따라야 합니다. 감쇠 설정.

오디오에 감쇠를 설정하려면 Wwise 프로젝트 탐색기 Audio 탭에서 오디오 파일을 두 번 클릭합니다.

그런 다음 오디오가 주요 섹션에서 열리면 Positioning 탭으로 이동합니다.

3D Spatialization 설정을 Position + Orientation으로 변경합니다(스크린샷에서 파란색으로 표시됨).

>> 버튼을 클릭한 다음 목록에서 감쇠 ShareSet을 선택합니다(스크린샷에서 빨간색으로 표시됨).

Wwise_Attenuation_Audio_Settings

Audiokinetic 이벤트 생성하기

Audiokinetic 이벤트(일반적으로 `AKEvents`로 축약됨)는 모드 코드가 Wwise 사운드 시스템에 작업을 수행하도록 지시할 수 있게 해줍니다. 예제 AKEvent 유형에는 Play, Pause, Stop이 포함됩니다. 사용하려는 각 사운드는 일반적으로 여러 이벤트와 연결되어야 합니다.

모드에서 오디오를 재생하려면 Wwise에서 이벤트를 생성해야 합니다. 먼저, .wav 파일을 Wwise에 가져오는 위의 단계를 따르십시오.

Wwise의 프로젝트 탐색기에서 Audio 탭으로 이동하고 이벤트를 생성하려는 오디오를 찾습니다.

오디오를 우클릭 후 New Event → Play를 선택합니다. 이렇게 하면 새 Play 이벤트가 생성됩니다.

Wwise_AkEvent_Create

이벤트가 성공적으로 생성되었는지 확인하려면 프로젝트 탐색기의 Events 탭으로 이동합니다. Play_<오디오이름> 이벤트를 볼 수 있어야 합니다. 이벤트를 두 번 클릭하면 이벤트의 세부 정보가 중앙 섹션에 표시됩니다.

확인해야 할 몇 가지 사항이 있습니다:

  • 이벤트 ID를 기록해 두십시오. 나중에 언리얼 에디터의 값과 비교해야 합니다(스크린샷에서 빨간색).

  • Inclusion이 체크되어 있는지 확인하십시오(스크린샷에서 녹색).

  • 대상이 올바른 오디오인지 확인하십시오(스크린샷에서 파란색).

Wwise_AkEvent_Info

모드에서 재생하려는 모든 다른 오디오에 대해 이 프로세스를 반복하십시오.

조직을 쉽게 하기 위해 모드 폴더 내에 하나 이상의 가상 폴더를 생성하여 AKEvents를 저장하는 것을 고려하십시오.

Audiokinetic 사운드뱅크 생성하기

모든 이벤트를 저장할 새 사운드뱅크를 생성해야 합니다.

Wwise에서 레이아웃을 사운드뱅크로 변경합니다. 이는 상단의 Layouts → Soundbanks에서 찾을 수 있습니다.

왼쪽의 프로젝트 탐색기에서 SoundBanks 탭을 선택합니다.

기본적으로 다음과 같은 트리 구조가 있습니다:

Wwise_Soundbank_ProjectExplorer

Default Work Unit을 우클릭 후 New Child → Soundbank를 선택하여 새 사운드뱅크를 생성합니다.

Wwise_Soundbank_Create

사운드뱅크 이름을 모드참조_Soundbank로 지정합니다. 사운드뱅크 이름은 이 형식일 필요는 없지만, 모드 참조를 포함하면 조직에 도움이 됩니다.

새로 생성된 사운드뱅크를 두 번 클릭하면 새 창이 열립니다.

주요 Wwise 창에서 프로젝트 탐색기의 Events 탭으로 이동합니다.

사운드뱅크 창이 여전히 열려 있는 상태에서 Default Work Unit을 사운드뱅크 창으로 드래그합니다. 이벤트를 위한 특정 가상 폴더를 생성한 경우 해당 폴더를 대신 드래그합니다.

Wwise_Soundbank_Window

Edit 탭으로 이동하여 모든 이벤트가 사운드뱅크에 포함되어 있는지 확인합니다.

Wwise_Soundbank_EditTab

이제 언리얼 엔진을 위한 사운드뱅크를 생성할 시간입니다. 각 섹션의 단계를 따라 완료하십시오.

언리얼 프로젝트 구성

언리얼 엔진 프로젝트 설정을 열고 Wwise 통합 설정으로 이동합니다.

Root Output Path 설정을 <Wwise프로젝트경로>/GeneratedSoundBanks로 변경합니다. 그런 다음 Unreal Audio Routing 설정을 Both Wwise and Unreal audio로 변경합니다. 이 변경을 한 후 언리얼 에디터를 다시 시작해야 할 수 있습니다.

언리얼 엔진에서 AKEvents 생성하기

이제 Wwise에서 오디오, 이벤트 및 사운드뱅크를 정의했으므로, 이를 언리얼 엔진에서 활용할 시간입니다. 이 작업을 수행하는 첫 번째 단계는 Wwise 자산을 참조하는 언리얼 애셋을 생성하는 것입니다. Wwise 브라우저를 사용하여 이를 생성하는 것이 가능하지만, 이는 권장되지 않습니다. 이렇게 하면 잘못된 프로젝트 폴더에 배치됩니다. 따라서 아래 단계를 따라 언리얼 에디터를 통해 생성하십시오.

콘텐츠 브라우저의 빈 영역을 우클릭 후 새 Audiokinetic 이벤트를 생성합니다.

Audiokinetic → Audiokinetic Event로 이동합니다.

Wwise_UEAkEvent_Create

새 자산의 이름을 Wwise에서 생성한 이벤트와 정확히 동일하게 지정합니다. 이렇게 하면 언리얼이 애셋의 필드에 올바른 이벤트 정보를 자동으로 채울 수 있습니다.

자산을 열고 설정이 Wwise에서 구성한 것과 일치하는지 확인합니다:

  • Wwise Short ID가 Wwise의 이벤트 ID와 일치하는지 확인합니다.

  • Wwise Name이 이벤트 이름과 일치하는지 확인합니다.

Wwise_UEAkEvent_Verify

모든 것이 올바르게 작동했다면, 이제 언리얼에서 이벤트를 테스트할 수 있습니다. 언리얼에서 이벤트를 우클릭 후 Play Event를 클릭합니다. 이렇게 하면 이벤트가 에디터에서 발동되어, 예를 들어 이벤트가 Play 유형 이벤트인 경우 소리가 재생됩니다.

코드에서 AKEvents 발동하기

AKEvents를 발동하는 것은 일반적으로 블루프린트 코드에서 수행됩니다. C‍+‍+에서 트리거하는 것도 가능하지만, 이는 권장되지 않습니다. 많은 애셋 참조를 C‍+‍+ 쪽으로 전달해야 하기 때문입니다. C‍+‍+에서 이벤트를 발동하려면, BlueprintImplementableEvent UFUNCTION을 정의하여 C‍+‍+ 코드가 호출할 수 있도록 하고, 블루프린트에서 구현을 정의할 수 있습니다.

Fire & Forget 이벤트

스파크 소리와 같은 일회성 AK 이벤트를 재생하려면, 블루프린트에서 다음 방법을 사용해야 합니다.

Wwise_UEAkEvent_FireAndForget

이렇게 하면 새로운 임시 AK Component가 생성되고 지정된 AK 이벤트가 재생됩니다.

AK 이벤트가 종료되면 임시 AK Component는 자동으로 정리됩니다.

루프 이벤트

반복할 수 있는 사운드 효과(예: 건물의 우웅거리는 소리)를 재생하려면, 참조를 쉽게 하고 생성/파괴 오버헤드를 피하기 위해 동일한 AK Component를 사용해야 합니다. 액터 블루프린트에 AK Component를 추가하고 해당 구성 요소의 AK Audio Event 변수를 설정합니다.

액터가 파괴될 때 오디오를 중지해야 하며, 그렇지 않으면 중지할 방법 없이 계속 재생됩니다.

Wwise_UEAkEvent_EndPlay

모드에서 Wwise 값 업데이트하기

Wwise는 현실 시간 매개변수 제어(RTPC)라는 기능을 사용하여 언리얼 또는 유니티와 같은 게임 엔진이 Wwise 애셋의 값을 실시간으로 변경할 수 있도록 합니다. 이 기능은 제조 건물의 사운드 볼륨이 제작법 진행에 따라 변동하는 것과 같은 특별한 동작을 가능하게 합니다.

Wwise와 언리얼에서 RTPC를 설정한 후, 블루프린트 코드는 오디오 매개변수 값을 업데이트할 수 있습니다.

이 설정을 하려면, Wwise 프로젝트에서 프로젝트 탐색기로 이동하여 Game Syncs 탭으로 이동합니다.

Game Parameters → Default Work Unit 아래에서 기본 작업 단위를 우클릭 후 New Child → Game Parameter를 선택하여 새 게임 매개변수를 생성합니다.

Wwise_RTPC_Create

이름은 원하는 대로 지정할 수 있습니다.

새로 생성된 게임 매개변수를 열면 다음과 같은 내용을 볼 수 있습니다:

Wwise_RTPC_Range

매개변수는 범위가 정의되어야 합니다. 유용한 범위는 0.0에서 1.0까지입니다. 많은 기존 게임 및 엔진 시스템이 이 범위를 시작-끝, 최소-최대 또는 꺼짐-켜짐 스케일로 사용합니다.

이제 RTPC 게임 매개변수를 오디오에 할당합니다.

Wwise에서 오디오를 열고 RTPC 탭으로 이동합니다. 메인 섹션에서 >>을 클릭하여 업데이트할 항목을 설정합니다. 이 예는 음성 볼륨 업데이트를 보여줍니다.

그 후 첫 번째 항목의 오른쪽에 있는 >>를 클릭하고 게임 매개변수를 선택합니다.

Wwise_RTPC_Configure

완료했다면, 다음과 비슷한 것이 보일 것입니다.

Wwise_RTPC_Overview

다음으로, 언리얼 엔진과 Wwise의 연결을 생성하려면 언리얼 엔진에서 게임 매개변수를 생성해야 합니다.

Wwise_UE_RTPC_Create

Wwise에 있는 것과 동일한 이름을 사용하십시오.

이제 블루프린트를 사용하여 RTPC 게임 매개변수 값을 업데이트할 수 있습니다.

Wwise_UE_RTPC_Usage

재생 제한

Wwise는 동시에 재생할 수 있는 오디오의 양을 제한합니다. 이 제한을 초과하여 재생하려고 하면 발자국 소리, 음악 또는 동물과 같은 낮은 우선 순위 오디오가 중지됩니다.

이를 해결하려면 각 오디오 파일에 대한 재생 제한을 설정해야 합니다. 이는 오디오의 고급 설정 탭에서 수행할 수 있습니다.

Wwise_PlaybackLimit

You will need to set the Limit sound instance to amount; this is the number of instances that can play this audio on the AK Component in Unreal. Also, set the dropdown next to this limit to Per Game Object. In Unreal, this means per AK Component.

Next, you will need to change the When limit is reached to Kill voice and set the drop-down menu under that to Discard oldest instances. This means that when the limit for this audio is reached, it will kill any oldest instances and discard them.

Finally, you will need to set up playback priority. The playback priority requires that you set up Attenuation.

Set the priority of your audio to something like 10, then set the Offset priority by setting to -10.

This setting will set the audio priority to 10, and then when you are outside the attenuation distance, it will set the priority to 0, allowing for more important audio, like the game sounds, to be played.

Even with Attenuation and playback limits set, the audio will still play and count towards the Wwise Playback Limit.

  • Attenuation will only lower the volume of the audio and not stop the audio.

  • Playback limits only limit the number of audio instances playing on a game object.

So, to prevent audio from playing when you are outside of the attenuation range, you will need to use the Significance Manager.

For playing background building sounds, use the Gained Significance and Lost Significance events:

Wwise_Significance

For fire and forget AK events, use the Get Is Significant function before posting the event:

Wwise_IsSignificant

Wwise 및 소스 제어

이 제목은 진행 중입니다. SML 팀은 향후 기본 게임 Wwise 이벤트에 대한 스텁을 포함하는 Wwise 프로젝트를 배포할 계획입니다. 이 제목에서 제안된 접근 방식은 해당 과정이 완료되면 변경될 수 있습니다.

Wwise 프로젝트 파일은 소스 제어에 저장하는 데 추가 고려가 필요합니다. 원시 오디오 애셋을 배포하는 것은 때때로 오디오 라이센스에 의해 금지됩니다.

한 가지 접근 방식은 Wwise 프로젝트를 저장할 별도의(비공식) 저장소를 만들고 원시 오디오 파일에 대해 Git LFS를 활성화하는 것입니다. 그러나 이는 여러 모드의 파일을 하나의 저장소에 묶어 여러 모드의 파일을 연결함으로써 일반적인 하나의 저장소 당 하나의 모드 구조를 방해합니다.

Wwise는 자체 문서에서 소스 제어에 연결하는 방법에 대한 조언을 제공합니다.

볼륨 옵션

사용자의 볼륨 옵션을 검색하려면 "Get FGGame User Settings" 및 "Get Float Option Value"를 사용하십시오.

조정할 CVAR를 찾으려면, 자신의 사용자 설정 값을 조정한 다음 해당 값이 저장된 내용을 확인하십시오. GameUserSettings.ini 파일에서 확인할 수 있습니다.

1.0 배포 업데이트 기준으로, 주요 볼륨 카테고리에 대한 CVAR는 다음과 같습니다:

RTPC.Menu_Volume_Master
RTPC.Menu_Volume_Dialogue
RTPC.Menu_Volume_SoundEffects
RTPC.Menu_Volume_UI
RTPC.Music_Bus_Volume
RTPC.Menu_Volume_Ambience
RTPC.Consumables_Bus_Volume
RTPC.Menu_Volume_Creatures
RTPC.Menu_Volume_Equipment
RTPC.Menu_Volume_Factory
RTPC.Menu_Volume_Foley
RTPC.Menu_Volume_Vehicules
RTPC.Menu_Volume_Weapons

이 값들은 0.0(꺼짐)에서 1.0(전체 볼륨)까지의 스케일로 설정됩니다. 여러 카테고리가 적용되는 경우, 최종 볼륨 값을 얻기 위해 이들을 곱해야 합니다. 예를 들어, 전기톱의 볼륨은 아마도 Master와 Equipment, 전기톱의 특정 범주를 곱한 값일 것입니다.

자신의 볼륨 슬라이더를 구현하고 이를 믹스에 포함시키는 것도 원할 수 있습니다. 제안된 접근 방식은 모드 실수형 구성 옵션을 생성하여 0.0에서 1.0까지의 범위를 가지며, 이를 다른 관련 볼륨 범주와 곱하여 최종 볼륨으로 사용하는 것입니다.

언리얼 오디오 시스템의 볼륨

언리얼의 사운드 재생 노드는 볼륨을 실수형 매개변수로 사용합니다. 주요 볼륨 옵션 섹션의 단계를 따라 관련 볼륨 슬라이더 값을 결합하여 최종 입력 볼륨을 얻으십시오.

Wwise의 볼륨

게임의 마스터 볼륨 슬라이더는 Wwise를 통해 재생되는 모든 사운드에 자동으로 적용됩니다. 기타 기본 게임 볼륨 슬라이더를 따르려면 이벤트의 해당 오디오 버스를 사용해야 합니다.

RTPC 시스템은 다른 소스의 임의 볼륨 옵션을 고려하는 데 사용될 수 있습니다.