Audio Player
audio_player_device · /CRD_AudioPlayer/Device_CRD_AudioPlayer.Device_CRD_AudioPlayer_C
| Property | Type | Notes |
|---|---|---|
syncPlayerAudio | bool | The one that matters. Keeps audio synchronised across all players. Off by default |
loopAudio | bool | Restart after finishing |
limitAudioDistance | bool | Global vs. falloff |
audioDistance | number | Falloff radius when limited |
Without syncPlayerAudio, a track started at minute two is simply not playing for anyone who arrives at minute three: silence for the rest of the song, not a late start. This hits latecomers, reconnects and anyone who respawns. Use one device per track rather than one long mix.

Player Spawner
player_spawner_device · /CRD_PlayerSpawn/BP_Creative_Player_Spawner_Prop.BP_Creative_Player_Spawner_Prop_C
Verse exposes Enable() / Disable(). Native has enable / disable as channel-driven event functions, plus priorityGroupSetting (lower is chosen first) and bRespawnAlivePlayers.
- Every enabled spawner is a candidate for both initial spawn and respawn. A second one anywhere immediately starts catching ordinary spawns.
- A newly placed spawner is enabled by default, and
Disable()does nothing until its@editablefield is wired to that actor. An empty field silently no-ops.
Pattern: for a special mode, give it a dedicated spawner, Disable() it in OnBegin, and swap enabled state on both sides when the mode starts and ends.
Teleporter
teleporter_device · /CreativeCoreDevices/Device_Teleporter_V2.Device_Teleporter_V2_C
EnterEvent/TeleportedEventare subscribable.Teleport(Agent)sends an agent to this device.Activate(Agent),Enable(),Disable().- Native
destinationTeleporteris a direct object reference to another teleporter, and is settable through tooling.
No per-player use limit exists. For "works once per player", clear the device's destination link and drive Teleport() yourself behind a [player]logic map. See the onboarding guide.
Beacon
beacon_device · /CreativeCoreDevices/Device_Beacon_V2.Device_Beacon_V2_C
| Native property | Notes |
|---|---|
friendly Icon Text | The label on the HUD marker |
showOffscreenArrow | Arrow pointing to it when off screen |
displayDistanceText | Distance readout |
beacon Color | — |
Use this instead of building a landmark by hand. It gives a HUD icon, an off-screen arrow and a distance label for free. Keep beacons in sync with what they point at: a marker over an inactive station is worse than no marker.
Post Process
post_process_device · /CRD_PostProcess/Device_PostProcess.Device_PostProcess_C
Verse: Enable(), Disable(), BlendInForAll(), BlendOutForAll(). Native event functions mirror these (enableForAll, blendInForAll, disableForAll, blendOutForAll, resetForAll, plus …ForInstigator variants). Settings: postProcessEffect, effectDuration, blendInDuration, blendOutDuration, priority.
Test quickly: wire a spare Button's interact event to Enable For All and Blend In For All. When cueing: blend the previous look out before blending the next in, and track which is active, or they stack.
Customizable Light
customizable_light_device · TurnOn() / TurnOff()
Name them by position and subject (Key_Left_Vocalist), not by number. You'll drag dozens into cue arrays by hand.
VFX Spawner
vfx_spawner_device · /…/Device_VFXSpawner_V2.Device_VFXSpawner_V2_C
visual_Effect/developerVisualEffect: an enum. Default isDiscoBalls. Confirmed working:DiscoBalls,Sparkles,SmallTornado. Not exposed in the Verse digests; other values need trial.customVisualEffect: assign a Niagara system directly.
A custom Niagara system assigned through customVisualEffect never rendered in this project, despite compiling clean and being checked through two delivery paths. Cause unknown. A coloured Point Light was used instead.
Cinematic Sequence + camera streaming
cinematic_sequence_device · Play(), StoppedEvent.Await()
World Partition streams the world around the player pawn, not a Cine Camera Actor. A camera that flies away from players shows empty terrain. Add a WorldPartitionStreamingSourceComponent to the camera actor:
| Property | Value used |
|---|---|
bStreamingSourceEnabled | true |
priority | Highest |
targetState | Activated |
shapes | one shape, bUseGridLoadingRange: false, radius: 15000 |

Island Settings
/CreativeCoreDevices/Device_ExperienceSettings_V2_UEFN.Device_ExperienceSettings_V2_UEFN_C
| What you want | Property | Notes |
|---|---|---|
| Glider always usable | bGliderRedeploy, bGliderRedeployable | Set both |
| Infinite stamina | bInfiniteLoadedEnergy, bInfiniteReserveEnergy | Stamina is Energy internally |
| Player-vs-player damage | bAllowFriendlyFire | On a single-team island this enables PvP |
| Fall damage | bFallDamage, fallDamageMultiplier | — |
teamDamageFilter is about structures, not players. Energy tuning: energyMax, energyRechargeAmount, energyRechargeDelay, sprintingEnergyCostPerSecond.
Working through editor tooling
Struct arrays are opaque
An @editable []some_struct field can't be read or written through the generic object-property API: both fail with "could not be read/set". Anything struct-shaped must be wired by hand. Keep struct field counts deliberate.
Prop mesh overrides don't stick
Parent_BuildingPropActor_C's StaticMeshComponent0.StaticMesh override silently reverts to null: seen on roughly 17 of 27 props in one session. Always verify with an actor-bounds check; a degenerate box (min equals max) means the mesh is gone. Reapply and save immediately. No reliable prevention found.
Useful checks
- Verse builds:
BuildAllreturns an empty array on success, or diagnostics with file and line. - Property names: always list an object's properties before setting them. They differ from Details panel labels.
- Enums: invalid values fail with "the following properties could not be set". Some enums have no digest exposure at all.