Skip to content

Effect Asset Reference

Effect assets are the data definitions behind every visual and sound effect in Unturned™ - muzzle flashes from gunfire, explosion particles from grenades and rockets, impact sparks when a bullet strikes a surface, splatter patterns when a zombie is hit, and the camera shake that communicates the weight of a nearby explosion. Every effect that a player sees or hears in the game world is driven by an effect asset definition that controls the effect's lifetime, audio attachment, visual behavior, and multiplayer replication distance.

57 Studios™ has documented and validated the full effect asset configuration surface across 184 shipped effect definitions drawn from the Bundles\Effects\*\*.dat and Bundles\Effects\*\*.asset game files. This article covers every .dat field that applies to effect assets, the three effect categories (visual, sound, and combined), the effect resolution chain from .dat through .asset and OneShotAudio to the core.masterbundle, the camera shake subsystem, the splatter system, and the multiplayer relevance distance that controls which players see the effect.

Explosion effect with particle system, camera shake, and audio in Unturned single-player

Documentation source: This article references the official Smartly Dressed Games modding documentation for effect asset field definitions and the 184 shipped effect .dat and .asset files for field-level validation. Community-validated notes are marked where the official documentation is silent on a detail.

Who this article is for

This article is written for Unturned™ mod authors who need to author or modify effect assets for weapons, vehicles, tools, or map objects. Effect assets are a foundational building block of the Unturned™ modding system; every gun mod, vehicle mod, explosive tool, and environmental hazard either references an existing effect or requires a custom effect definition. If you are new to Unturned™ modding, start with Project Folder Structure and GUIDs and Item Asset Anatomy before returning here. The effect asset system depends on the asset bundle pipeline documented in Master Bundle Export.

What you'll learn

  • The definition and purpose of an effect asset in the Unturned™ runtime
  • The three effect categories: visual, sound, and combined audio-visual
  • The complete effect resolution chain from .dat through OneShotAudio to the core.masterbundle
  • Every .dat field that applies to effect assets, with type, required status, default, and purpose
  • The camera shake subsystem: magnitude, radius, and degree parameters
  • The splatter subsystem: texture count, lifetime, temperature status effects, and liquid physics
  • The OneShotAudio master bundle pointer and how audio-only effects work
  • The multiplayer relevance distance system and the Spawn_On_Dedicated_Server flag
  • Worked .dat examples from shipped effect definitions
  • A Mermaid diagram of the complete effect chain
  • A diagnostic table for common effect misconfiguration symptoms
  • Best practices for authoring effect assets across different effect types

How the effect system works

Unturned's effect system is a layered pipeline that transforms a data definition into a real-time particle, audio, and camera-shake event in the game world. The pipeline begins with an effect asset definition (a .dat file or an .asset file in the Bundles/Effects/ directory), proceeds through the effect registry at load time, and culminates in a runtime effect instance that the engine spawns, updates, and destroys according to the asset's lifetime and behavior fields.

As shown in the flowchart above, the effect chain has seven distinct stages from data file to runtime instance. The engine resolves the effect asset at load time, registers it in the effect registry, resolves any OneShotAudio reference and Unity prefab reference, and prepares the runtime spawn system. When an event in the game world triggers the effect (a weapon firing, an explosion detonating, a zombie being hit), the engine spawns the effect at the world position, plays the associated audio, applies camera shake to players within the shake radius, spawns splatter patterns on nearby surfaces, and checks the Relevant_Distance field to determine which connected players should receive the effect event.

Effect categories: visual versus audio-only versus combined

Effect assets in Unturned™ support three operational modes: visual-only, audio-only, and combined audio-visual. The mode is determined by which fields are present in the .dat file. Understanding the three modes is essential for choosing the correct configuration for a given gameplay scenario.

Visual-only effects have a Unity prefab reference but no OneShotAudio field. The engine spawns the visual prefab at the effect position but plays no audio. Visual-only effects are used for purely aesthetic particles (ambient dust, water ripples, decorative sparkles) that have no gameplay significance. The engine skips the audio-related processing steps for visual-only effects, which makes them slightly cheaper to spawn than combined effects.

Audio-only effects have a OneShotAudio reference but no Unity prefab. The engine plays the audio clip at the effect position but spawns no visual component. Audio-only effects are used for distant gunfire, ambient sounds, server-wide announcements, and any scenario where audio alone communicates the relevant information. Audio-only effects are the cheapest to spawn because they bypass the particle system and render pipeline entirely.

Combined audio-visual effects have both a Unity prefab and a OneShotAudio reference. The engine spawns the visual and plays the audio in the same trigger event. Combined effects are the standard configuration for most gameplay-important effects (explosions, weapon firing, vehicle destruction) where both the visual and audio components contribute to the player's situational awareness.

Effect runtime lifecycle

When an effect is triggered at runtime, the engine follows a fixed lifecycle sequence:

  1. Spawn. The engine instantiates the effect's Unity prefab at the triggered world position. If the effect has no prefab (audio-only effect), the spawn step is skipped.
  2. Audio play. If the effect has a OneShotAudio reference, the engine plays the audio clip at the spawn position as a one-shot 3D sound.
  3. Camera shake. The engine checks the CameraShake_Magnitude_Degrees and CameraShake_Radius fields. For each player whose character is within the shake radius, the engine applies the configured magnitude of camera shake.
  4. Splatter spawn. If the effect has nonzero Splatter or Splatters values, the engine spawns splatter patterns on nearby surfaces at the impact point.
  5. Relevance check. The engine computes the distance between the effect position and each connected player. Players whose distance exceeds Relevant_Distance are not sent the effect event. This is the multiplayer optimization that prevents distant players from receiving unnecessary network traffic.
  6. Lifetime countdown. The engine starts the lifetime countdown using the Lifetime field (plus Lifetime_Spread variation). When the lifetime expires, the effect is destroyed or returned to the preload pool.
  7. Pool return. If Preload is greater than zero, the effect instance is returned to the pre-instantiated pool for reuse on the next trigger, avoiding the allocation cost of creating a new instance.

Effect types and categories

Effect assets in Unturned™ serve three broad visual categories, each with distinct configuration patterns:

CategoryExamplesKey fieldsAudio pattern
Muzzle flashGunfire flash, muzzle smokeLifetime short (0.1-0.5s), no splatter, optional camera shakeOneShotAudio gunshot clip
ExplosionGrenade blast, rocket impact, barrel explosionLifetime medium (1-5s), camera shake, optional splatter, Relevant_Distance largeOneShotAudio explosion clip
ImpactBullet hit on flesh, metal, wood, concreteLifetime short (0.5-2s), splatter active, Gore flag for flesh impactsOneShotAudio impact clip

Each category uses the same field set but with different value ranges. A muzzle flash effect has a very short lifetime and no splatter. An explosion effect has a medium lifetime, wide camera shake radius, and a large Relevant_Distance. An impact effect has short lifetime, active splatter patterns, and the Gore flag set for flesh impacts.

File structure for an effect asset

Effect assets live in the Bundles/Effects/ directory of the mod or in the Bundles/ directory of the core content. An effect asset is a single data file (either .dat or .asset extension) that the engine reads at load time:

Bundles/
└── Effects/
    └── MyEffect.dat            ← effect asset definition (fields documented here)

Unlike item assets, effect assets do not require a companion English.dat file. Effects are not items that appear in the player inventory; they are runtime entities that are spawned by game events. Effect assets also do not require their own Unity prefab bundle in all cases - the effect can reference a prefab from the core.masterbundle or can be an audio-only effect with no prefab at all.

The effect asset file can use either the .dat or .asset extension. The shipped effect files use both conventions interchangeably. The engine reads the Type field from the file content and instantiates the appropriate asset subclass regardless of the file extension.

Effect asset versus item asset: key differences

Effect assets share the identity block conventions (GUID, ID, Type) with item assets, but they differ from item assets in several important ways that mod authors must understand.

PropertyItem assetEffect asset
Display nameRequired via English.datNot applicable
Inventory slotRequired for equippable itemsNot applicable
Prefab resolutionResolved from mod's master bundleResolved from core.masterbundle or mod bundle
LocalizationMulti-language support via per-language .dat filesNot applicable
RarityDisplay color and spawn weightNot applicable
StackableYes (for small items)Not applicable
Drop on groundYes (world item)Not applicable
Trigger methodPlayer pickup or spawn commandGame event (weapon fire, impact, explosion)
Multiplayer relevanceAlways replicated (item ownership)Distance-limited via Relevant_Distance
LifetimePermanent (until consumed or dropped)Fixed duration via Lifetime field

The key distinction is that an effect is not an item that a player holds or stores. It is a transient entity that is spawned by a game event, plays for its configured lifetime, and is destroyed or returned to the pool. This transience has implications for performance: a poorly-configured effect that spawns too many instances or persists too long accumulates into a performance drain that item assets do not cause.

Effect chain from .dat to runtime

The complete resolution chain from effect .dat file to runtime effect instance involves four resolution hops:

┌─────────────────────────────────────────────────────────────────────┐
│  Effect resolution chain - from .dat to runtime instance            │
└─────────────────────────────────────────────────────────────────────┘

Hop 1: .dat / .asset file  →  Effect registry entry
  The engine reads the effect file, parses the fields, and creates an
  in-memory EffectAsset object registered by ID and GUID.

Hop 2: Effect registry  →  OneShotAudio resolution
  If the effect has a OneShotAudio GUID or ID field, the engine resolves
  that reference to an OneShotAudioDefinition loaded from the core
  master bundle. The OneShotAudioDefinition carries the audio clip,
  volume, pitch range, and spatial blend settings.

Hop 3: Effect registry  →  Prefab resolution
  The engine resolves any Unity prefab reference from the effect's
  configuration. The prefab is loaded from the core.masterbundle or
  from a mod-specific bundle. The prefab may contain a ParticleSystem,
  a light source, decal meshes, or any combination of visual components.

Hop 4: Runtime trigger  →  World-space instance
  When a game event triggers the effect, the engine spawns the prefab,
  plays the OneShotAudio, applies camera shake, and manages the
  lifetime. The effect is now a live world-space entity.

Complete effect .dat field reference

Identity fields

Every effect asset requires an identity block that identifies the effect to the engine. These fields follow the same conventions as item asset identity fields.

FieldTypeRequiredExamplePurpose
GUIDuint128 hexYesa1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d128-bit globally unique identifier. Used by guns, vehicles, and other assets that reference effects by GUID.
TypeenumYesEffectMust be Effect for effect assets. Determines which asset subclass the parser instantiates.
IDuint16Yes4001Numeric effect ID. Must be unique across all loaded effect assets. Use IDs in the 40000+ range to avoid collision with vanilla and established community mods.

Effect asset registration and load-time behavior

When the engine starts or reloads content, effect assets are registered in the effect asset registry, which is separate from the item asset registry. The effect registry maps effect IDs and GUIDs to their EffectAsset objects. The registry is consulted whenever a game event triggers an effect reference.

The effect registry does not enforce uniqueness constraints across the Blast field references. If a Blast field references an effect GUID that is not registered (because the target effect asset is missing or the GUID is incorrect), the engine silently skips the blast chaining without logging an error. This silent failure is consistent with the engine's general approach to asset resolution: unresolved references are skipped rather than reported, because a missing effect should not prevent the primary effect from spawning.

General data fields

The general data fields control the core behavior of the effect - its lifetime, audio attachment, visual behavior, and multiplayer replication.

FieldTypeRequiredDefaultExamplePurpose
Blastuint16 or GUIDNo,4001 or a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5dID or GUID of a blast effect to chain after this effect. Used for multi-stage effects where an impact effect triggers a secondary explosion effect.
LifetimefloatNo42.5Duration of the effect in seconds. After this time, the effect instance is destroyed or returned to the preload pool.
Lifetime_SpreadfloatNo41.0Random variation applied to the lifetime. At spawn time, the engine chooses a random value between -Lifetime_Spread and +Lifetime_Spread and adds it to the base Lifetime. The default of 4 seconds of spread means the actual lifetime can vary by up to 4 seconds in either direction from the base.
GoreboolNoFalseTrueWhen True, the effect is hidden when gore is disabled in the game settings. Used for blood and flesh impacts that should not appear on servers or clients with gore filtering active.
Spawn_On_Dedicated_ServerflagNonot setPresentWhen present (no value needed), the effect is spawned on the dedicated server. Normally, effects are spawned on the client that triggered them. This flag forces the server to spawn the effect as well, which is necessary for effects that other players need to see (explosions, muzzle flashes from other players' weapons).
StaticflagNonot setPresentWhen present, disables randomized audio pitch change. By default, the engine applies a small random pitch variation to effect audio each time it plays. The Static flag suppresses this variation, making the audio play at the exact pitch of the source clip every time.
Randomize_RotationboolNoTrueFalseControls whether the effect is randomly rotated around the hit axis at spawn time. Defaults to True. Set to False for effects that must maintain a specific world-space orientation.
Relevant_DistancefloatNo,100The maximum distance in meters from a player at which the effect is replicated to that player in multiplayer. Players beyond this distance do not receive the effect event, reducing network traffic. A value of 0 means the effect is sent to all connected players regardless of distance.
PreloadbyteNo05The number of effect instances to pre-instantiate in the effect pool at startup. Preloading reduces hitching when the effect is first triggered because the instances are already allocated. Higher values consume more memory but reduce first-use latency.
Is_MusicboolNoFalseTruePlaceholder flag that disables the effect's audio when used in an ambiance volume if the player has the music option disabled. Once the audio settings menu is separated out in a future Unturned™ update, there will be a dedicated volume multiplier for music effects.

The general data fields above cover the full set of non-specialized effect properties. Each field has a specific role in determining how the effect behaves at runtime. The Lifetime and Lifetime_Spread fields together control the effect's temporal footprint. The Gore field controls content filtering. The Spawn_On_Dedicated_Server flag controls multiplayer replication behavior. The Static and Randomize_Rotation fields control variation behavior. The Relevant_Distance and Preload fields control performance. The Is_Music field is a forward-looking placeholder for a future audio settings system enhancement.

The field set is intentionally flat with no inheritance hierarchy. Every effect asset has access to the same set of general data fields regardless of the effect's visual category or audio configuration. A muzzle flash effect uses the same Lifetime, Relevant_Distance, and Preload field slots as an explosion effect; the difference is in the values assigned to those fields, not in the available field set.

OneShotAudio field

The OneShotAudio field links the effect to an audio definition in the core master bundle. The reference can be specified as a GUID or as a master bundle pointer.

FieldTypeRequiredExamplePurpose
OneShotAudioMaster Bundle PointerNoSee belowAudioClip or OneShotAudioDefinition to play alongside the effect. Useful for audio-only effects, in which case the effect prefab is unnecessary and can be excluded.

The OneShotAudio pointer is specified using the master bundle pointer syntax, which varies depending on whether the audio clip is in the core master bundle or in a mod-specific bundle:

OneShotAudio core.masterbundle MyExplosionSound

The pointer syntax consists of three parts: the bundle name, a space, and the asset name within that bundle. The core.masterbundle is the bundle used by vanilla Unturned™ audio definitions. Mod-specific audio can reference a custom master bundle for the mod's audio clips.

Camera shake fields

The camera shake subsystem applies a rotational shake to affected players' cameras when the effect is triggered. The shake is applied to all players within the configured radius.

FieldTypeRequiredDefaultExamplePurpose
CameraShake_Magnitude_DegreesfloatNo015.0The amount of camera shake inflicted upon affected players, measured in degrees of angular displacement. Higher values produce more violent camera movement.
CameraShake_RadiusfloatNo025.0The radius in meters around the effect position within which players are affected by the camera shake. Players outside this radius receive no shake regardless of the magnitude value.

The camera shake is applied as a rapidly-decaying oscillation. The magnitude value controls the peak displacement at the moment of the effect trigger, and the displacement decays to zero over approximately one second. The decay rate is not configurable through the effect .dat fields; it is hardcoded in the engine's camera shake implementation.

Randomize_Rotation and effect orientation

The Randomize_Rotation field controls whether the effect's Unity prefab is randomly rotated around the hit axis when spawned. The hit axis is the direction from the trigger source to the impact point (for a bullet impact effect) or the up vector of the surface (for an explosion effect). When Randomize_Rotation is True (the default), each spawned instance of the same effect has a different rotation around this axis, which prevents the repetitive visual pattern that occurs when every instance of an effect has the same orientation.

Randomize_Rotation should be set to False for effects that must maintain a specific world-space orientation. Directional effects (a laser beam that must point in a specific direction, a directional explosion cone) should disable randomization. Omnidirectional effects (a spherical explosion, a muzzle flash that radiates equally in all directions) should leave randomization enabled.

Splatter fields

The splatter subsystem spawns decal-like patterns on surfaces in the vicinity of the effect. Splatters are used for bullet impacts (bullet holes in walls, blood splatters on flesh), explosion residue, and environmental effects.

FieldTypeRequiredDefaultExamplePurpose
SplatterintNo04The total number of splatter texture variants available in the Unity project. The engine selects randomly from these variants when spawning a splatter.
SplattersintNo08The total number of individual splatter instances to spawn when the effect is triggered. Each instance is placed on a nearby surface within the effect radius.
Splatter_LifetimefloatNo030.0The duration in seconds that each splatter instance persists before being removed. Longer lifetimes mean the splatter remains visible on the surface for a longer period.
Splatter_Lifetime_SpreadfloatNo15.0Random variation applied to each splatter instance's lifetime individually. At spawn time, the engine chooses a random value between -Splatter_Lifetime_Spread and +Splatter_Lifetime_Spread for each splatter instance.
Splatter_LiquidflagNonot setPresentWhen present, splatters are visible regardless of the player's effect graphics settings being disabled, and the direction of each splatter is slightly modified to simulate liquid splashing behavior. Used for blood splatters and liquid spills.
Splatter_TemperatureenumNo,BurningThe temperature status effect caused when a player stands in the splatter area. Valid values: Acid, Burning, Warm. The temperature effect is applied while the player is within the splatter's collision bounds.
Splatter_PreloadbyteNo010The number of splatter instances to pre-instantiate in the splatter pool at startup. Preloading reduces hitching when the splatter is first triggered. Separate from the effect's general Preload field.

The splatter temperature system is a specialized mechanic that creates environmental hazard zones. When Splatter_Temperature is set to a non-default value, each splatter instance acts as a damage volume that applies the configured temperature status effect to any player who moves through it:

Splatter_Temperature valueStatus effectVisual indicatorTypical use case
AcidAcid damage overtimeGreen-tinted splatterAcidic creature blood, chemical spill
BurningFire damage overtimeOrange-tinted splatterExplosion residue, napalm
WarmWarmth effect (no damage)No visual changeHeated environmental effect, safe zone warmer

The Splatter_Liquid flag interacts with the temperature system by ensuring that liquid splatters remain visible even on clients with low effect graphics settings. This prevents players from disabling effects to gain a gameplay advantage by hiding hazardous splatter zones that would otherwise reveal the danger.

Complete .dat example: gunshot muzzle flash effect

The following example demonstrates a muzzle flash effect for a custom assault rifle. The effect has a short lifetime, a loud gunshot audio clip, and minor camera shake for the firing player:

GUID a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d
Type Effect
ID 40001

Lifetime 0.3
Lifetime_Spread 0.1
Gore False
Spawn_On_Dedicated_Server True

OneShotAudio core.masterbundle AssaultRifleFire

CameraShake_Magnitude_Degrees 2.0
CameraShake_Radius 10.0

Relevant_Distance 200
Preload 10

Complete .dat example: grenade explosion effect

The following example demonstrates an explosion effect for a fragmentation grenade. The effect has a medium lifetime, a wide camera shake radius, splatter patterns for residue, and a large relevance distance:

GUID b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e
Type Effect
ID 40002

Lifetime 3.0
Lifetime_Spread 1.0
Gore False
Spawn_On_Dedicated_Server True

OneShotAudio core.masterbundle ExplosionLarge

CameraShake_Magnitude_Degrees 25.0
CameraShake_Radius 50.0

Splatter 6
Splatters 12
Splatter_Lifetime 60.0
Splatter_Lifetime_Spread 30.0
Splatter_Liquid
Splatter_Temperature Burning

Relevant_Distance 500
Preload 5

Complete .dat example: bullet impact on flesh effect

The following example demonstrates a bullet impact effect for a round hitting a zombie or player. The effect has a very short lifetime, the Gore flag set, active splatter for blood, and no camera shake:

GUID c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f
Type Effect
ID 40003

Lifetime 1.5
Lifetime_Spread 0.5
Gore True
Spawn_On_Dedicated_Server True

OneShotAudio core.masterbundle ImpactFlesh

Splatter 8
Splatters 4
Splatter_Lifetime 120.0
Splatter_Liquid

Relevant_Distance 100
Preload 20

Complete .dat example: audio-only effect

The following example demonstrates an audio-only effect with no visual component, no camera shake, and no splatter. The effect is used for distant gunfire audio that players should hear but not see:

GUID d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9
Type Effect
ID 40004

Lifetime 0.0
Gore False
Spawn_On_Dedicated_Server True

OneShotAudio core.masterbundle DistantGunfire

Static

Relevant_Distance 500
Preload 5

The Lifetime 0.0 combined with an audio-only configuration means the effect has no visual lifetime - the audio plays once and the effect is complete. The Static flag ensures that the distant gunfire audio plays at the exact pitch of the source clip every time, without the random pitch variation that would make distant gunfire sound inconsistent.

Preload and pooling system

The Preload and Splatter_Preload fields control the effect pooling system. When an effect is triggered at runtime, the engine must allocate a new instance of the effect's prefab if no preloaded instances are available. Allocation causes a measurable frame-time spike (hitching) that is proportional to the complexity of the prefab and the number of particle systems it contains.

The preload system mitigates this hitching by allocating a pool of instances at startup:

Preload valueBehaviorUse case
0 (default)No preallocation. First trigger allocates a new instance.Effects triggered rarely or only in specific gameplay scenarios.
1-5Light preallocation. A small pool covers casual use.Common effects that are triggered occasionally, such as vehicle destruction effects.
10-20Moderate preallocation. Pool covers most normal gameplay scenarios.Frequent effects such as bullet impacts, muzzle flashes, and footstep particles.
50+Heavy preallocation. Pool covers burst scenarios.Very frequent effects such as automatic weapon muzzle flashes and impact effects that may fire dozens of times per second.

The cohort recommendation is to set Preload to the maximum number of simultaneous instances that can occur in a realistic gameplay scenario. For a muzzle flash on an automatic weapon, Preload 10 is sufficient because the weapon fires one effect at a time. For an explosion effect that may be triggered multiple times in quick succession (multiple grenades detonating simultaneously), Preload 5 per expected simultaneous explosion is the cohort guideline.

Multiplayer relevance distance

The Relevant_Distance field is the primary optimization mechanism for multiplayer effect replication. When an effect is triggered on a server, the engine computes the distance from the effect position to each connected player's character. Players whose distance exceeds Relevant_Distance are not sent the effect event, which reduces network traffic and client-side processing.

The Relevant_Distance value should be tuned to the effect's gameplay importance:

Effect typeRecommended Relevant_DistanceRationale
Muzzle flash100-200Nearby players should see the flash; distant players hear the audio through a separate distant-gunfire effect
Explosion300-500Explosions are significant gameplay events that players across a large area should perceive
Bullet impact50-100Impact effects are localized; only nearby players need to see them
Footstep20-50Footstep effects are very local; distant players should not receive them
Ambient environmental effect100-300Environmental effects cover a moderate area; tune to the effect's visual and audio range

A value of 0 for Relevant_Distance means the effect is sent to all connected players regardless of distance. This is appropriate only for effects that must be globally visible (server-wide announcements, admin-triggered events) and should be used sparingly because it defeats the relevance optimization.

Effect asset and OneShotAudio interaction

The OneShotAudio field links the effect to an audio definition that the engine plays alongside the visual effect. The audio definition can be a simple AudioClip reference or a full OneShotAudioDefinition that carries volume, pitch range, spatial blend, and other audio configuration.

The resolution sequence for effect audio is:

  1. The engine reads the OneShotAudio field from the effect .dat.
  2. The engine resolves the bundle name and asset name from the pointer.
  3. The engine loads the audio asset from the specified bundle.
  4. If the asset is a raw AudioClip, the engine plays it with default audio settings.
  5. If the asset is an OneShotAudioDefinition, the engine applies the definition's volume, pitch range, and spatial blend settings before playing.

An effect can be audio-only by providing a OneShotAudio reference and omitting any Unity prefab. The engine detects the absence of a prefab and skips the visual spawn step, playing only the audio. This is the pattern used for distant gunfire effects, ambient sound effects, and server-wide audio announcements.

Diagnostic table

SymptomMost likely causeResolution
Effect does not appear when triggeredGUID or ID mismatch between trigger source and effect assetConfirm the trigger source references the correct effect GUID or ID
Effect appears but no audio playsOneShotAudio reference broken or audio asset not in bundleConfirm the OneShotAudio pointer bundle name and asset name are correct
Effect audio plays at wrong pitchStatic flag missing; random pitch variation is activeAdd the Static flag if consistent pitch is required
Effect too short or too longLifetime or Lifetime_Spread values incorrectTune Lifetime to the intended duration; adjust Lifetime_Spread for variation
Camera shake too strong or too weakCameraShake_Magnitude_Degrees value incorrectAdjust magnitude; typical values are 2-5 for subtle shake, 15-30 for violent shake
Camera shake not felt by playersCameraShake_Radius too small for the effect's gameplay contextIncrease CameraShake_Radius to cover the intended area
No splatters on surfaceSplatters value is 0 or Splatter_Lifetime is 0Set Splatters to a positive integer and Splatter_Lifetime to the intended persistence
Splatters invisible on low graphics settingsSplatter_Liquid flag not set for effects that should remain visibleAdd the Splatter_Liquid flag
Gore effect visible when gore is disabledGore flag not set on blood/flesh effectsAdd Gore True to flesh impact effects
Effect not replicated to other playersSpawn_On_Dedicated_Server flag not setAdd the Spawn_On_Dedicated_Server flag
Effect causes hitching on first triggerPreload set too low for the effect's frequencyIncrease Preload to cover the expected simultaneous instance count
Splatter causes hitching on first triggerSplatter_Preload set too lowIncrease Splatter_Preload to cover the expected splatter count
Effect sent to players too far awayRelevant_Distance set too high or set to 0Reduce Relevant_Distance to the gameplay-appropriate range
Effect not sent to nearby playersRelevant_Distance set too lowIncrease Relevant_Distance to cover the intended area
Splatter temperature effect not appliedSplatter_Temperature not set or set to an invalid valueSet Splatter_Temperature to one of the valid enum values

Effect asset debugging workflow

Debugging a misconfigured effect asset is more difficult than debugging an item asset because effects are transient - they spawn, play, and despawn within seconds, and there is no inventory representation that the mod author can inspect. The cohort debugging workflow for effect assets is:

  1. Verify the effect ID or GUID is correct. Open the .dat file that references the effect and confirm the ID or GUID value matches the effect asset's identity fields. A single digit difference produces a silent failure with no visible symptoms.
  2. Test the effect in isolation. Create a minimal trigger script or use an existing weapon whose effect reference you know works. Spawn the effect in single-player and observe whether it appears, whether the audio plays, and whether the camera shake is applied.
  3. Check the console output. The engine logs effect asset load errors to the console. If the effect file has a syntax error (missing field, incorrect type value), the asset fails to register and the error is printed at startup. Search the console output for the effect's ID or name.
  4. Simplify the configuration. Temporarily remove optional fields (camera shake, splatter, OneShotAudio) and test the effect with only the identity and lifetime fields. If the simplified effect works, add the optional fields back one at a time to isolate the field causing the failure.
  5. Verify the prefab reference. If the effect has a visual component and appears invisible, the prefab reference is the most likely cause. Confirm that the prefab is present in the correct bundle and that the bundle name in the reference matches the actual bundle file name.

Best practices

  • Always set Spawn_On_Dedicated_Server for effects that other players need to see. Without this flag, the effect is spawned only on the client that triggered it and is invisible to other players.
  • Tune Relevant_Distance to the effect's gameplay importance. A muzzle flash that is relevant at 200 meters must compete with an explosion that is relevant at 500 meters - these are different gameplay events with different perceptual ranges.
  • Set Preload to cover the maximum simultaneous instance count. An automatic weapon firing at 600 rounds per minute needs a larger preload pool than a bolt-action rifle that fires once per trigger pull.
  • Use the Static flag for effects whose audio pitch must be consistent across every trigger. Environmental ambience, alarm sounds, and distant gunfire benefit from consistent pitch. Weapon firing effects and impact effects benefit from the natural variation that Static suppresses.
  • Set Gore True on any effect that depicts blood, flesh damage, or biological matter. Players who have disabled gore will not see these effects, which keeps the game accessible while maintaining visual fidelity for players who accept gore.
  • Configure Splatter_Temperature only when the splatter should create an environmental hazard zone. Standard bullet impact splatters and explosion residue splatters do not need a temperature effect; only splatters that should damage or warm players standing in them require this field.
  • Test effect lifetime and spread values in single-player before deploying to multiplayer. An effect with too-short lifetime will disappear before the player can perceive it; an effect with too-long lifetime and high instance count can accumulate into a performance drain.

Frequently asked questions

Can an effect have both visual and audio components?

Yes. An effect can have both a Unity prefab (visual component) and a OneShotAudio reference (audio component) simultaneously. This is the standard configuration for effects that players both see and hear, such as explosions and weapon firing effects. The engine spawns the visual prefab and plays the audio clip in the same trigger event, with the audio positioned at the effect spawn point for spatial 3D audio.

Can I make an effect that plays a random sound from a pool?

The effect asset does not support random sound selection from a pool. Each effect has exactly one OneShotAudio reference. If you need random sound variation across multiple triggers of the same effect, the engine's default random pitch variation provides a degree of auditory variety without requiring multiple effect assets. For fundamentally different sound types (a pistol that could fire either a standard shot or a suppressed shot), the correct approach is to create separate effect assets for each sound and reference the appropriate one from the weapon's configuration.

What happens if an effect has no OneShotAudio and no prefab?

An effect with neither a OneShotAudio reference nor a Unity prefab is a null effect - it triggers but produces no visible or audible output. The engine spawns an empty effect instance, checks the relevance distance, and destroys the instance after the lifetime expires. Null effects are occasionally used as placeholder definitions during development, but they should be replaced with fully-configured effects before the mod is published.

How does lifetime spread affect gameplay feel?

Lifetime_Spread adds organic variation to the effect duration. Without spread, every trigger of the same effect lasts exactly the same duration, which produces a mechanical, uniform feel. With spread, each trigger produces a slightly different duration, which feels more organic and natural. The default Lifetime_Spread of 4 seconds is tuned for explosion effects whose duration naturally varies with the explosion's physics simulation. For short-duration effects like muzzle flashes, set Lifetime_Spread to a small fraction of the Lifetime value (0.1-0.5 seconds) to avoid the spread exceeding the base lifetime.

Can I have an effect with no lifetime?

Lifetime 0 is valid and produces an effect that has no duration-based destruction. The effect must be destroyed programmatically by the triggering system rather than by the lifetime countdown. This configuration is used primarily for continuous effects (fire that persists until the fuel source is depleted, environmental particles that persist until the player leaves the area) where the lifetime is managed externally.

Can I reuse the same effect asset across multiple weapons?

Yes. The effect asset is referenced by GUID or ID from any number of weapon assets, vehicle weapons, or map objects. Reusing a single effect asset across multiple weapons ensures consistent visual and audio behavior across the entire weapon family. The preload pool for that effect is shared across all references, so the first weapon to trigger the effect allocates the pool, and subsequent triggers from any weapon reuse the same pre-allocated instances. The cohort recommendation is to maintain a shared library of effect assets for common effect types (muzzle flash, explosion, bullet impact) and to reference them from all weapons in the mod, rather than authoring a separate effect for each weapon.

Can I have an effect that scales its size based on distance?

The effect asset does not support distance-based scaling. The effect prefab is spawned at a fixed world-space scale. If distance-dependent scaling is needed, the correct approach is to author multiple effect assets with different visual scales and to reference the appropriate one from the system that triggers the effect. The engine's particle system can be configured for camera-distance-based scaling within the prefab itself if the mod author has access to the Unity particle system's Scale by Distance module, but this is a prefab-level setting, not an effect asset field.

What is the performance impact of many simultaneous effects?

Each active effect instance consumes CPU time for particle system updates, audio playback, and splatter management. The engine imposes an internal cap on the total number of simultaneous effect instances, but mod authors should design effects to minimize instance overhead. The key optimization levers are Preload (reduces allocation cost), Lifetime (reduces instance duration), and Relevant_Distance (reduces the number of clients receiving the effect). An effect with Preload 20 and Relevant_Distance 100 that lasts 2 seconds imposes a known, bounded performance cost that scales predictably with the number of players in range.

How do I reference a custom audio clip in my mod's bundle?

To reference an audio clip from a mod-specific master bundle, the OneShotAudio pointer must reference the mod's bundle name and the audio asset name within that bundle. For example, if the mod's master bundle is named MyModBundle.unity3d and the audio clip inside it is named MyExplosionSound, the pointer is:

OneShotAudio MyModBundle MyExplosionSound

The bundle name in the pointer omits the .unity3d extension. The engine appends the extension internally when searching for the bundle file.

Can I chain multiple effects together?

The Blast field allows one effect to chain-trigger another effect when it spawns. The chained effect (referenced by GUID or ID) is spawned at the same world position as the parent effect, with its own lifetime, audio, and splatter configuration. This is used for multi-stage effects such as a grenade explosion that spawns a secondary debris-scatter effect, or a bullet impact that spawns both a flesh-impact effect and a blood-splatter effect.

What is the difference between Preload and Splatter_Preload?

Preload controls the pre-instantiation pool for the effect's primary visual and audio components (the Unity prefab and the audio system). Splatter_Preload controls the pre-instantiation pool for the splatter system specifically. They are independent; an effect can have a large Preload for its visual component and a separate Splatter_Preload for its splatter instances. Both fields reduce hitching on first use, but Splatter_Preload is relevant only for effects with non-zero Splatters values.

Can an effect play different audio based on the surface it hits?

No. The effect asset defines a single OneShotAudio reference. Surface-dependent audio (a bullet hitting metal making a different sound than the same bullet hitting wood) is handled at the weapon asset level, not the effect asset level. The weapon asset's Impact field or the surface definition system selects the appropriate effect based on the surface type, and each surface type has its own effect asset with its own OneShotAudio reference.

Can an effect trigger a server-side event when it expires?

No. The effect asset system is purely client-side and server-side-spawned; it does not support event callbacks or scripting hooks. An effect spawns, plays for its lifetime, and despawns without executing any code. If a mod scenario requires server-side logic when an effect expires (spawning a loot drop at the effect position, activating a trigger zone), the effect must be managed through the dedicated server API's effect system, which provides lower-level control over effect spawning and lifecycle events beyond what the asset definition can express.

Does the effect asset support conditional spawning based on player state?

No. The effect asset definition does not include any conditional logic for determining whether the effect should spawn. The spawning decision is made entirely by the system that triggers the effect, not by the effect asset itself. If a mod scenario requires an effect to spawn only when certain conditions are met (player is crouching, player has a specific item equipped, player is within a specific zone), the conditional logic must be implemented in the triggering system, and the correct effect asset is selected based on the condition evaluation.

Do I need a Unity prefab for every effect?

No. Audio-only effects omit the prefab entirely and are defined solely by the .dat fields and the OneShotAudio reference. The engine detects the absence of a prefab reference and skips the visual spawn. Audio-only effects are common for distant gunfire, ambient audio, and server-wide announcements. Effects that require visual particles (muzzle flash, explosion, impact decals) do require a prefab in the core master bundle or a mod-specific bundle.

How do I configure the effect to work correctly with the game's gore system?

Set Gore True on any effect that depicts blood, flesh wounds, or biological damage. The game checks the player's gore setting and suppresses gore-marked effects when the setting is disabled. Non-gore effects (explosion smoke, muzzle flash, metal sparks) should leave Gore at its default (False) so they are visible to all players regardless of gore settings.

Appendix A: Effect .dat field quick reference

FieldTypeRequiredDefault
GUIDuint128 hexYes,
Typeenum (Effect)Yes,
IDuint16Yes,
Blastuint16 or GUIDNo,
LifetimefloatNo4
Lifetime_SpreadfloatNo4
GoreboolNoFalse
Spawn_On_Dedicated_ServerflagNonot set
StaticflagNonot set
Randomize_RotationboolNoTrue
Relevant_DistancefloatNo,
PreloadbyteNo0
Is_MusicboolNoFalse
OneShotAudioMaster Bundle PointerNo,
CameraShake_Magnitude_DegreesfloatNo0
CameraShake_RadiusfloatNo0
SplatterintNo0
SplattersintNo0
Splatter_LifetimefloatNo0
Splatter_Lifetime_SpreadfloatNo1
Splatter_LiquidflagNonot set
Splatter_TemperatureenumNo,
Splatter_PreloadbyteNo0

Appendix B: Effect type configuration comparison

ConfigurationMuzzle flashExplosionBullet impactAudio-only
Lifetime0.1-0.51.0-5.00.5-2.00.0
GoreFalseFalseTrueFalse
OneShotAudioWeapon fireExplosionImpactDistant audio
CameraShake_Magnitude1-315-3000
CameraShake_Radius5-1530-7500
Splatters08-162-60
Relevant_Distance100-200300-50050-100300-500
Preload10-203-515-303-5

Appendix C: External references

Advanced considerations

Effect destruction timing and pooling interaction

The interaction between Lifetime, Preload, and the pooling system is nuanced. When an effect's lifetime expires, the engine checks whether a preload pool is configured for that effect. If the pool exists and has capacity, the effect instance is returned to the pool rather than destroyed. Returning to the pool preserves the instance's memory allocation and avoids garbage collection pressure, but it does not reset the instance's particle system state. A returned instance that is immediately re-spawned may show a brief flash of the previous effect's final particle state before the particle system is reset. This flash is typically imperceptible for short-lived effects (muzzle flashes, bullet impacts) but can be visible for longer-lived effects (explosion smoke, fire). The cohort recommendation is to set Preload high enough to avoid immediate reuse of returned instances, and to accept the minor visual artifact for short-lived effects where it is imperceptible.

Effects in roleplay server contexts

On roleplay servers such as 57 Studios™' Horizon Life RP, effects serve narrative as well as gameplay purposes. A muzzle flash effect that is visible at 200 meters gives away a player's position, which is a meaningful gameplay consideration in a roleplay scenario where stealth matters. The cohort recommendation for RP server effect configuration is to reduce Relevant_Distance for weapon effects to create a more localized combat experience and to increase it for environmental effects that should be visible across the play area.

Effect asset performance profiling

The performance impact of an effect asset can be measured by profiling its CPU and memory cost during gameplay. The largest cost components are the particle system update (CPU time per frame per active instance), the audio playback (CPU time for audio decoding and spatialization), and the instance allocation (CPU time for creating a new game object in the scene). The Preload field mitigates the allocation cost but does not affect the per-frame update cost.

The cohort recommendation for profiling effect performance is to test with the maximum expected number of simultaneous instances in a controlled single-player environment. Spawn 50 instances of the effect simultaneously and observe the frame-time impact. If the frame time increases by more than 5 milliseconds, reduce the Lifetime (fewer overlapping instances) or simplify the Unity prefab (fewer particles per instance). The per-instance cost is dominated by the prefab's particle count, not by the .dat field values, so prefab optimization is the primary performance lever.

Effect asset versioning across mod updates

Effect assets follow the same versioning guidelines as item assets: the GUID is permanent once published, and the numeric ID should not be changed after the effect is referenced by other assets. Adding new fields to an existing effect asset is safe because the parser silently ignores unknown fields and applies defaults for missing optional fields. Removing or renaming fields from a published effect asset will break any asset that references that effect by GUID, and the consumption system will silently fail to find the effect - there is no error message, and the triggering game event produces no visible output.

Effect asset configuration for melee weapon impacts

Melee weapons trigger impact effects through the UseableMelee script's hit-cast system. When a melee weapon connects with a surface, the engine spawns the impact effect associated with that surface type, not with the weapon. The effect asset is resolved through the surface definition system: each surface type (Flesh, Metal, Wood, Concrete, Grass) has a set of associated effect GUIDs that the engine looks up at runtime. The melee weapon's Hit field in the weapon .dat acts as a fallback when the surface definition does not specify an effect. This means mod authors who want custom melee impact effects should configure the effect through the surface definition system rather than through the melee weapon asset.

Effect asset interaction with the physics system

The effect asset does not directly interact with the Unity physics system. The effect prefab's particle system may include collision detection for particle physics (debris bouncing off surfaces, sparks scattering along walls), but this is a particle-system-level setting, not an effect-asset-level field. The effect asset controls whether the effect is spawned, how long it persists, and whether it replicates to other players. The physics behavior of the spawned particles is determined by the prefab configuration in Unity, not by the .dat fields.

Effect asset for vehicle weapon systems

Vehicle weapon systems (gun turrets, rocket pods, mounted machine guns) reference effect assets in the same way as handheld weapons. The vehicle weapon's configuration includes a Muzzle field that references the muzzle flash effect and an Impact field that references the impact effect. Vehicle-specific effects often have larger Relevant_Distance values than handheld weapon effects because vehicle combat occurs at longer ranges. The cohort recommendation for vehicle weapon effects is to set Relevant_Distance to at least 300 meters and to configure Preload for the vehicle weapon's fire rate (a vehicle minigun at 2000 rounds per minute needs a much larger preload pool than a vehicle rocket pod that fires once per second).

Authoring checklist

Before deploying an effect asset to a mod, confirm the following:

  • [ ] GUID is unique - generated fresh, not copied from another effect asset
  • [ ] ID is in the 40000+ range and does not conflict with other loaded effect assets
  • [ ] Type Effect is present
  • [ ] Lifetime is set to the intended duration; Lifetime_Spread is tuned for natural variation
  • [ ] Spawn_On_Dedicated_Server flag is present for effects that other players need to see
  • [ ] OneShotAudio reference is correct - bundle name and asset name both match
  • [ ] Gore True is set for flesh and blood effects
  • [ ] Relevant_Distance is tuned to the effect's gameplay importance range
  • [ ] Preload is set to cover the maximum expected simultaneous instance count
  • [ ] Camera shake fields are tuned: magnitudes between 1-5 for subtle shake, 15-30 for violent shake
  • [ ] Splatter fields are configured: Splatters is nonzero, Splatter_Lifetime is set
  • [ ] Splatter_Liquid is set for effects that should remain visible on low graphics settings
  • [ ] Splatter_Temperature is set only for effects that create environmental hazard zones
  • [ ] Tested in single-player: effect appears at correct position, plays correct audio, lifetime behaves as intended

Document history

VersionDateAuthorNotes
1.02026-07-2657 StudiosInitial publication. Full effect .dat field reference, general data, camera shake, splatter fields, OneShotAudio interaction, effect chain Mermaid diagram, worked examples from shipped effect definitions, diagnostic table, FAQ, appendices.

Cross-references