INTEGRATIONPROJECT SETTINGS
Project settings
Crushform has seven settings classes. Each one appears under Project Settings › Plugins, under its display name. Six save to Config/DefaultGame.ini. The zone editor saves to Config/DefaultEditor.ini. Keep those files under version control, so the whole team shares one set of values.
The lists below give the properties a project changes first. Each default is the value the code sets. The API reference lists every property.
Crushform
Section titled “Crushform”Crushform (UCFSettings) holds the atlas, the default assets, the dirt, the look materials, the hinged parts and the collision.
UCFSettings::Atlas: the render target that every deformed mesh samples. Default:/Crushform/Atlas/RT_CF_LatticeAtlas. Its size sets how many damaged bodies draw at once; see Performance.UCFSettings::SlotWidthandUCFSettings::SlotHeight: the texels of one slot, 256 wide and 8 high by default. A lattice fits when its ResX times ResZ is at mostSlotWidth, and its ResY is at mostSlotHeight.UCFSettings::CustomDataOffset,UCFSettings::WheelCustomDataOffset,UCFSettings::TireCustomDataOffsetandUCFSettings::GlassCustomDataOffset: where each block of Custom Primitive Data starts. Defaults 0, 34, 0 and 18. Changing one rebuilds the material functions that bake it. Save those functions, or runCrushform.RebakeOffsetsand save.UCFSettings::Surfaces: one row per physical material. Default:/Crushform/Surfaces/DA_CF_Surfaces. Without it, no body gets dirty.UCFSettings::DefaultProfile: the deform profile for a body that names none. Default:/Crushform/Presets/DA_CF_DefaultProfile.UCFSettings::DirtAtlasandUCFSettings::DirtFreshAtlas: the dirt render targets. Defaults:/Crushform/Atlas/RT_CF_DirtAtlasand/Crushform/Atlas/RT_CF_DirtFreshAtlas.UCFSettings::ScratchAtlas: the RG8 render target of the lattice atlas’s size that holds the scratch lines’ cover and direction. Default:/Crushform/Atlas/RT_CF_ScratchAtlas. Without a usable one the paint draws no scratch lines; see Paint and scratches.UCFSettings::DirtLayerOrder: Fixed (the default) stacks the dirt channels by their ZOrder. Most Recent on Top needs the fresh atlas.UCFSettings::DustChannel,UCFSettings::MudChannel,UCFSettings::SnowChannelandUCFSettings::WetChannel: the name, the blend and the clearing speed of each channel. By default dust, mud and snow blend as layers, and wet blends as an overlay.UCFSettings::BodyDirtLook,UCFSettings::WheelDirtLookandUCFSettings::GlassCrackLook: material functions that replace the built-in look of body dirt, wheel dirt and glass cracks. Unset, the built-in look stays.UCFSettings::DefaultGlassShardSystem: the Niagara system that throws the shards of a glass pane whose definition names no Shard System. Default:/Crushform/Glass/NS_CF_GlassShards. It is in the Glass group. See Glass.UCFSettings::LoosePartCollisionProfile: the collision profile a hinged part takes once it swings or comes off. None uses the plugin’s own, which needs nothing from the project.UCFSettings::SwingSpring(0),UCFSettings::SwingDamping(1) andUCFSettings::StopBounce(0): how a swinging part is pulled back, damped and stopped.UCFSettings::DetachedLifetime(60 s) andUCFSettings::DetachedSinkTime(2 s): how long a part that came off lies, and how long it takes to sink.UCFSettings::CollisionRebuildThreshold(2 cm),UCFSettings::CollisionRebuildInterval(0.5 s) andUCFSettings::MaxCollisionBlocks(96): when a dented body’s collision is built again, and how many blocks the boxes and convexes of one body are cut into in all.UCFSettings::bDeformCollision(on): whether collision follows dents in this project. Off, every vehicle keeps its authored collision whatever its profile says, and dents are only drawn. It is read when a vehicle’s play begins. Written toCrushform.Collision.Deform, so a device profile can turn it off for weak devices. Each machine reads its own value and nothing replicates it: dents and torn parts still reach every machine, and a machine with it off collides as if undented. Different values in one match give the machines different physics in a crash.UCFSettings::CollisionDeferFrames(1): how many frames a heavy collision build may run off the game thread before it must be on the body, 0 or 1. The builds meant are a torn part’s cut, a dented body’s rebuild and a torn part’s hull. 0 builds everything in the frame of the hit. A value above 1 reads as 1. The console variableCrushform.Collision.DeferFramesholds this value at run time; see Console commands.UCFSettings::AutoRepairDelay: seconds after the latest damage before a body repairs itself. Default 0, which never repairs.
Crushform Wheels
Section titled “Crushform Wheels”Crushform Wheels (UCFWheelSettings) holds the rolling sound and the rolling FX of wheels.
UCFWheelSettings::bRollingSound(on) andUCFWheelSettings::bRollingFX(on): the master switches.UCFWheelSettings::Attenuation: the attenuation of every rolling sound. Default:/Crushform/Sounds/SA_CF_TireRolling.UCFWheelSettings::SpeedParameterName: the float parameter of the sound that takes the speed in km/h. Default Speed. None: the speed is not sent.UCFWheelSettings::CabinVolumeScale(0.8) andUCFWheelSettings::CabinLowPassFrequency(3000 Hz): how the rolling sound changes when the listener sits inside a cabin.UCFWheelSettings::FXIntensityParameter: the Niagara float that takes a wheel’s intensity. Default Intensity.UCFWheelSettings::FXTuning: the intensity and sleep tuning of the rolling FX.FCFRollingFXTuning::SleepSpeedKPH(1 km/h) stops every rolling FX while the body and its fastest grounded wheel are both slower. 0 never stops them.
Crushform Tire
Section titled “Crushform Tire”Crushform Tire (UCFTireSettings) holds which tyres deform, the tyre budget, the sleep of resting wheels, and what the ground trace ignores.
UCFTireSettings::Scope: Budgeted by default.ECFTireScope::RigOnlydeforms only the viewer’s own rig.ECFTireScope::Budgetedalso deforms the other wheels the budget grants.ECFTireScope::Unlimiteddeforms every wheel of every registered vehicle.UCFTireSettings::bEnabled(on): the master switch. Off relaxes every tyre back to round. Console override:Crushform.Tire.Enable.UCFTireSettings::MaxWheels(30): the tyres that may deform at once. The viewer’s own vehicle always deforms, even past this cap. Console override:Crushform.Tire.MaxWheels.UCFTireSettings::Radius(4000 cm): the distance from the camera within which other vehicles’ tyres may deform. Console override:Crushform.Tire.Radius.UCFTireSettings::LodDistance1(1500 cm) andUCFTireSettings::LodDistance2(3000 cm): the distances where a tyre traces a thinner ray fan, and then the thinnest fan against simple collision. Console overrides:Crushform.Tire.LodDistance1andCrushform.Tire.LodDistance2.UCFTireSettings::Hysteresis(0.15): how far a granted tyre’s boundaries widen, so that a tyre on a boundary does not flicker. Read within 0 to 0.9. Console override:Crushform.Tire.Hysteresis.UCFTireSettings::UpdateInterval(0.25 s) andUCFTireSettings::OnScreenTolerance(0.5 s): the time between two budget passes, and how long after it was last drawn a wheel still ranks as on screen. Console overrides:Crushform.Tire.UpdateIntervalandCrushform.Tire.OnScreenTolerance.UCFTireSettings::SleepDistance(1 cm) andUCFTireSettings::SleepAngleDeg(0.5 degrees): how close to its resting pose a wheel must stay to fall asleep. A negativeSleepDistancenever lets a wheel sleep.UCFTireSettings::IgnoredObjectChannels(empty): object channels that a tyre’s ground trace ignores, on top of the channels its own collision ignores.UCFTireSettings::DefaultProfile: the tyre profile for a tyre that names none. Default:/Crushform/Presets/DA_CF_DefaultTireProfile.
Crushform Engine
Section titled “Crushform Engine”Crushform Engine (UCFEngineSettings) holds the engine sound.
UCFEngineSettings::bEngineSound(on): the master switch. It is read when an engine sound begins play.UCFEngineSettings::DefaultProfile: the profile of an engine sound that names none. Default:/Crushform/Engine/DA_CF_DefaultEngineSound.UCFEngineSettings::SoundClass: empty uses the default class, Master.UCFEngineSettings::Priority(0.5): playback priority. It is above the rolling sound’s 0.1, so a quiet tyre gives way to the engine.UCFEngineSettings::CabinVolumeScale(0.8) andUCFEngineSettings::CabinLowPassFrequency(3000 Hz): the engine heard from inside a cabin.
Crushform Impact Feedback
Section titled “Crushform Impact Feedback”Crushform Impact Feedback (UCFImpactFeedbackSettings) holds the impact set that plays and the limits on sound and effects.
UCFImpactFeedbackSettings::DefaultSet: the impact set that plays. Default:/Crushform/Impact/DA_CF_ImpactFeedback.UCFImpactFeedbackSettings::MaxAudibleDistanceCm(6000) andUCFImpactFeedbackSettings::MaxEffectDistanceCm(8000): impacts farther than these from the local camera play no sound and spawn no effect.UCFImpactFeedbackSettings::MinVoiceSeconds(0.25 s) andUCFImpactFeedbackSettings::MaxVoiceSeconds(3 s): how long a played sound holds a voice slot.UCFImpactFeedbackSettings::MaxSoundsPerFrame(2) andUCFImpactFeedbackSettings::SoundQueueSeconds(0.15 s): the most sounds that start in one frame, and how long a sound over that cap may wait before it is dropped.0turns the cap off. The console variablesCrushform.Impact.MaxSoundsPerFrameandCrushform.Impact.SoundQueueSecondshold these values at run time; see Console commands.UCFImpactFeedbackSettings::IgnoredHitActorClasses(empty): a hit by an actor of one of these classes, or a subclass, is no impact.UCFImpactFeedbackSettings::bUseDefaultBreakableHost(on): the plugin’s own breakable host. Turn it off if your game registers its own host with the debris pool.
Crushform Breakable
Section titled “Crushform Breakable”Crushform Breakable (UCFBreakableSettings) holds the limits and collision of broken units and their debris.
- Debris:
UCFBreakableSettings::MaxLiveDebrisPieces(96) andUCFBreakableSettings::MaxPersistentDebrisPieces(64) limit the live pieces.UCFBreakableSettings::DebrisMaxSpawnDistanceCm(10000) is the distance from the local camera beyond which a break spawns no debris.UCFBreakableSettings::DebrisCollisionProfile(None) uses the engine’s PhysicsActor profile. - Respawn:
UCFBreakableSettings::RespawnCheckIntervalSeconds(5 s) andUCFBreakableSettings::RespawnClearRadiusCm(4000 cm). No unit respawns while a player pawn is within the radius.UCFBreakableSettings::RespawnBlockingObjectTypeskeeps a unit down while a body of Vehicle, Pawn or PhysicsBody overlaps its spot. - Any Body:
UCFBreakableSettings::AnyBodyCheckIntervalSeconds(0.1 s) andUCFBreakableSettings::MaxAnyBodySpeedCmS(3000 cm/s) for units that break from any body. - Trees:
UCFBreakableSettings::TreeCollisionProfile(None uses Destructible) andUCFBreakableSettings::TreeWheelTraceChannel(WorldDynamic), the channel that wheels trace the ground on.
Crushform Zone Editor
Section titled “Crushform Zone Editor”Crushform Zone Editor (UCFEditorSettings) holds the presets that the zone editor offers. It is the only class saved to DefaultEditor.ini.
UCFEditorSettings::ZonePresets: the presets in the zone editor’s context menu, in this order. Each preset is anFCFZonePresetwith a Name, a Stiffness, a Max Depth and an Edge Width (20 cm by default). A Max Depth of 0 uses the profile’s Max Displacement. The defaults are Frame (stiffness 3, Max Depth 0), Cabin (2, 12 cm), Crumple (0.5, 0) and Neutral (1, 0).
Check that it works
Section titled “Check that it works”Open Project Settings › Plugins and find the seven Crushform entries. They are:
- Crushform
- Crushform Wheels
- Crushform Tire
- Crushform Engine
- Crushform Impact Feedback
- Crushform Breakable
- Crushform Zone Editor
Then press Play In Editor on a level with a Crushform body and run Crushform.Stats in the console. The first line it prints is the atlas count, Crushform atlas: <used> of <total> slots used. A dedicated server process prints Crushform atlas: none in this process (a dedicated server draws nothing). instead.
| Atlas | ||
|---|---|---|
| Atlas | RT_CF_LatticeAtlas | |
| Slot Width | 256 | |
| Slot Height | 8 | |
| Custom Data Offset | ||
| Wheel Custom Data Offset | ||
| Tire Custom Data Offset | ||
| Glass Custom Data Offset | ||
| Scratch Atlas | RT_CF_ScratchAtlas | |
| Network | ||
| Contact | ||
| Repair | ||
| Surfaces | ||
| Profile | ||
| Dirt | ||
| Look | ||
| Body Dirt Look | None | |
| Wheel Dirt Look | None | |
| Glass Crack Look | None | |
| Loose Parts | ||
| Collision | ||
Plugins - Crushform Tire
| Budget | ||
|---|---|---|
| Scope | ||
| Enabled | ||
| Max Wheels | 30 | |
| Radius | 4000.0 | |
| Lod Distance 1 | 1500.0 | |
| Lod Distance 2 | 3000.0 | |
| Hysteresis | ||
| Update Interval | 0.25 | |
| On Screen Tolerance | 0.5 | |
| Sleep | ||
| Sleep Distance | 1.0 | |
| Sleep Angle Deg | 0.5 | |
Plugins - Crushform Zone Editor
The stiffness zone editor's presets: Project Settings > Plugins > Crushform Zone Editor, kept in DefaultEditor.ini for the team.
| Zones | ||
|---|---|---|
| Zone Presets | 4 Array elements | |
| Index [ 0 ] | ||
| Name | Frame | |
| Stiffness | 3.0 | |
| Max Depth | 0.0 | |
| Edge Width | 20.0 | |
| Index [ 1 ] | ||
| Name | Cabin | |
| Stiffness | 2.0 | |
| Max Depth | 12.0 | |
| Edge Width | 20.0 | |
| Index [ 2 ] | ||
| Name | Crumple | |
| Stiffness | 0.5 | |
| Max Depth | 0.0 | |
| Edge Width | 20.0 | |
| Index [ 3 ] | ||
| Name | Neutral | |
| Stiffness | 1.0 | |
| Max Depth | 0.0 | |
| Edge Width | 20.0 | |
Troubleshooting
Section titled “Troubleshooting”No body gets dirty.
Cause: Surfaces (UCFSettings::Surfaces) is empty, or it names no Surfaces asset. Without it no body gets dirty.
Fix: assign /Crushform/Surfaces/DA_CF_Surfaces, or your own surfaces asset.
Most Recent on Top falls back to ZOrder.
Cause: the Dirt Fresh Atlas is missing or unusable. The Output Log then prints No usable Crushform dirt fresh atlas (Project Settings > Plugins > Crushform > Dirt Fresh Atlas).
Fix: set Dirt Fresh Atlas to /Crushform/Atlas/RT_CF_DirtFreshAtlas, or to a usable render target of your own.
There are no scratch lines.
Cause: the Scratch Atlas is missing, or is not an RG8 render target of the lattice atlas’s size. The Output Log then prints No Crushform scratch atlas (Project Settings > Plugins > Crushform); scratch lines stay invisible, or names the atlas and the size it must have.
Fix: set Scratch Atlas to /Crushform/Atlas/RT_CF_ScratchAtlas, or to an RG8 render target of your own with the lattice atlas’s size.
Materials bake the wrong offset after a change.
Cause: the editor rebuilds the material functions when a Custom Data Offset changes, but the rebuilt functions are not saved.
Fix: save the material functions, or run Crushform.RebakeOffsets and then save them.