Audio: Multiphase Destruction – Arma Reforger
The Multiphase Destruction (MPD) system handles environmental destruction (e.g., breaking signs, crumbling walls, etc.). Each MPD entity transitions through "damage phases", altering its model, spawning debris and particle effects, or emitting sounds.
- For efficiency, sounds are managed by the Audio: SCR SoundManagerEntity system, not individual entities. Entities reference enums in SCR_DestructionMultiPhaseComponent for sound definitions.
- Sounds are triggered:
- When an entity's damage phase changes (using SCR_EMaterialSoundTypeBreak).
- When spawned debris collides with the environment or other entities (using SCR_EMaterialSoundTypeDebris).
- When triggering a sound:
- The enum string (e.g., "METAL_HEAVY") combines with "SOUND_MPD_" to form the sound name (e.g., "SOUND_MPD_METAL_HEAVY").
- The system plays the sound from the .acp file linked to the MPDestructionManager.
Design
- All sound events are defined in one .acp: Sounds\Destruction\Multiphase\Destruction_Multiphase.acp
- A "manager" needs to be present in the gameworld: Prefabs\MP\MPDestructionManager.et
- Available sound types are defined via enums (SCR_EMaterialSoundTypeDebris and SCR_EMaterialSoundTypeBreak)
MPD Enum Overview
Sounds use enum values. Pick one of the following two to mod:
- SCR_EMaterialSoundTypeBreak if the sound is supposed to play when the entity changes its damage phase.
In this case, the enum must start with "BREAK_", e.g. "BREAK_GLASSBOTTLE"; - SCR_EMaterialSoundTypeDebris if the sound is supposed to play when debris collides with the environment
Add the desired name to the correct enum through modding - make sure to choose a descriptive one. Example:
Break Sounds | Debris Sounds | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SCR_EMaterialSoundTypeBreak | SCR_EMaterialSoundTypeDebris | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined via the "Material Sound Type" entry in the "Unsorted" category .
These sounds will play once when the entity breaks OR changes its damage phase (PhasesToDestroyed Signal). Example: A wooden fence breaking and playing a snapping/splintering sound. |
Defined in the "Small Debris" classes of the destructible entity. This sound will trigger when the spawned debris collides with something else and a certain impact threshold is exceeded.
Example: Broken off wooden fence plank falls over and impacts with the ground. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Signals
Not all signals are available for each type of sound.
Signal Name | Description | Available for Break Sounds | Available for Impact Sounds |
---|---|---|---|
PhasesToDestroyed | An integer indicating how damaged the entity is.
|
![]() |
![]() |
EntitySize | The entity's mass, usually used in order to "scale" sounds. | ![]() |
![]() |
CollisionDV | A value reflecting the change in speed of an entity upon contact (how fast was it before, how much was it slowed down?) | ![]() |
![]() |
Debugging
If any issues arise, the first step should always be to make sure an MPDestructionManager entity exists in the world. Check if the SCR_DestructionMultiPhaseComponent is actually enabled (if it is an Entity with integrated MPD functionality, make sure "Enabled" is checked in the "Unsorted" tab). Entities with integrated MPD functionality will always use the values stored in their Prefabs - meaning a per-instance change will not work. A Prefab change also requires a reload of the current world.
Diag Menu
If a DestructionMPDestructionManager.et is present in the world, a Diag Menu entry can be found:
Diag Menu \ Sounds \ Show MPD Impulse Values
Upon colliding, the debris entity will then display the impulse data in the format <impulse value>
Sound Definition Check
In the main Workbench Window (not World Editor), the "Multiphase Destruction Soundless Prefab Search" tool can be accessed via Plugins → Prefabs. The tool will go through all prefabs and list in the debug console log those which do not have a "Break" or "Impact" sound defined.