RLS Studios
ProjectsPatreonCommunityDocsAbout
Join Patreon
BeamNG Modding Docs

Guides

Vehicle Control from GEVE Architecture Quick ReferenceVehicle Scripting PatternsVehicle Lua Cheat Sheet62 Vehicle Scripting RecipesVehicle Modding GuideUnderstanding Vehicle Damage Systems

Reference

UI

Resources

BeamNG Game Engine Lua Cheat SheetGE Developer RecipesMCP Server Setup

// RLS.STUDIOS=true

Premium Mods for BeamNG.drive. Career systems, custom vehicles, and immersive gameplay experiences.

Index

HomeProjectsPatreon

Socials

DiscordPatreon (RLS)Patreon (Vehicles)

© 2026 RLS Studios. All rights reserved.

Modding since 2024

GuidesVehicle

Understanding Vehicle Damage Systems

How BeamNG's three damage systems work together — beamstate for physics, damageTracker for gameplay, and partCondition for persistence.

BeamNG has three separate but interconnected damage systems. Using the wrong one for your task means either missing damage events or getting data that's too low-level to be useful. This guide helps you pick the right one.

See Also

  • Beamstate: Structural/beam damage.
  • DamageTracker: High-level logical damage.
  • PartCondition: Persistent part integrity.

1. Physical Structure (beamstate)

Use for: Physics-based damage, structural integrity, and crash detection.

  • Module: beamstate
  • Key Metric: beamstate.damage - Total dissipated energy (in Joules) from beam deformation and breakage.
  • Functions:
    • beamstate.getPartDamageData(): Returns normalized damage (0-1) for physical parts (e.g., "front_bumper").
    • beamstate.onBeamBroke(id, energy): Hook triggered when a beam breaks.
    • beamstate.onBeamDeformed(id, ratio): Hook triggered when a beam permanently deforms.

2. High-Level Components (damageTracker)

Use for: UI alerts, gameplay logic, and checking if a major system (engine, tires) is broken.

  • Module: damageTracker
  • Logic: Aggregates physical damage into logical groups.
  • Functions:
    • damageTracker.getDamage(group, name): Returns true/false or a value (0-1) for a component.
    • damageTracker.setDamage(group, name, value, notifyUI): Reports damage to the tracker.
  • Common Groups/Names:
    • "body", "FL" (Front Left), "FR", "ML", "MR", "RL", "RR"
    • "wheels", "tireFL", "tireFR", etc.
    • "engine", "engineBlock", "radiator", "oilPan"

3. Maintenance & Integrity (partCondition)

Use for: Long-term wear, part replacement logic, and odometer-based aging.

  • Module: partCondition
  • Logic: Tracks the "health" of parts across resets/saves.
  • Key Metric: integrityValue (1.0 = New, 0.0 = Destroyed).
  • Functions:
    • partCondition.getConditions(): Returns a full map of all parts and their current health/visual state.

Summary Table: Which one do I use?

GoalSystemKey Variable/Function
Did I just crash?beamstatebeamstate.damage (check for sudden increase)
Is the engine dead?damageTrackerdamageTracker.getDamage("engine", "engineBlock")
Is a tire popped?damageTrackerdamageTracker.getDamage("wheels", "tireFL")
How damaged is the hood?beamstatebeamstate.getPartDamageData()["hood"]
Is the car "worn out"?partConditionpartCondition.getConditions()

Vehicle Modding Guide

How to add custom logic to vehicles safely — extensions vs controllers, the electrics data bus, powertrain API, safe overrides, and UI visibility.

GE Hook Catalog

Every GE hook with signatures and descriptions — lifecycle, per-frame, vehicle, physics, world, input, and file system hooks.

On this page

See Also1. Physical Structure (beamstate)2. High-Level Components (damageTracker)3. Maintenance & Integrity (partCondition)Summary Table: Which one do I use?