API ReferenceGE Extensionsgameplayrally
Rally Vehicle Tracker
Class that tracks the player vehicle's position, velocity, speed, and damage during rally gameplay. Provides damage detection with configurable threshold.
Class that tracks the player vehicle's position, velocity, speed, and damage during rally gameplay. Provides damage detection with configurable threshold.
Constructor
local VehicleTracker = require('gameplay/rally/vehicleTracker')
local tracker = VehicleTracker(damageThreshold)| Parameter | Type | Description |
|---|---|---|
damageThreshold | number? | Minimum damage diff to trigger justHadDamage (default 1) |
Methods
| Method | Signature | Returns | Description |
|---|---|---|---|
getVehicleId | () | number | Player vehicle object ID |
getVehicle | () | object | Player vehicle object |
onUpdate | (dtReal, dtSim, dtRaw) | nil | Per-frame update - tracks position and damage |
pos | () | vec3? | Current vehicle position |
velocity | () | vec3? | Current velocity vector |
speedMs | () | number | Speed in meters/second |
damage | () | number? | Current vehicle damage value |
didJustHaveDamage | () | bool | True if damage increased above threshold this frame |
setDebugDraw | (enabled) | nil | Enable/disable debug visualization |
drawDebugInfo | () | nil | Draw position marker, velocity vector, and speed text |
Internals
vehicleData: Reference tomap.objects[vehicleId](updated each frame)lastDamage: Previous frame's damage value for delta calculationlastDamageDiff: Most recent damage increase amountdamageThreshold: Minimum delta to setjustHadDamageflagwheelOffsets: Local-space wheel positions (computed on init)currentCorners/previousCorners: World-space wheel positions
How It Works
- On init, reads wheel axis node positions to build local-space offset table
onUpdate()refreshes vehicle data frommap.objects, then checks damage- Damage tracking compares current vs last frame - sets
justHadDamageif delta ≥ threshold - Position/velocity use direct vehicle object calls (
getPositionXYZ,getVelocityXYZ) - Uses
vec3:set()pattern to avoid garbage collection overhead
local tracker = VehicleTracker(5) -- 5 damage threshold
-- In update loop
tracker:onUpdate(dtReal, dtSim, dtRaw)
local speed_kmh = tracker:speedMs() * 3.6
if tracker:didJustHaveDamage() then
log('I', '', 'Vehicle took damage!')
endDependencies
gameplay/rally/util- utility functionsmap.objects- vehicle data from traffic/AI mapcore_vehicleBridge- not directly used but related
Notes
- Uses
profilerPushEvent/profilerPopEventfor performance profiling - Debug visualization draws magenta sphere at position + cyan velocity vector
- Wheel tracking code (
updateVehicleCorners) is present but commented out
| Function | Signature | Returns | Description |
|---|---|---|---|
M.updateVehicleDamage | () | nil | updateVehicleDamage |
M.updateVehicleData | (vehicleId) | nil | updateVehicleData |
See Also
- Rally Audio Manager - Related reference
- Rally Camera Path Player - Related reference
- Rally Client - Related reference
- Gameplay Systems Guide - Guide
Rally Vehicle Capture
Class that records vehicle position, rotation, and steering data at distance-based intervals during a recce drive. Writes data to a JSONL driveline file.
Rally English Compositor
Defines the English-language configuration for rally pacenote composition. Contains corner severity scales, direction labels, modifier definitions, visual styling (colors/icons), distance rounding, tr