Vehicles

Engine

Configures Jolt's native VehicleEngineSettings before the vehicle is built.

The extension exposes the primary torque, RPM, inertia and damping settings while retaining Jolt Physics 5.6's native torque curve.

Creation options#

GML
var car = jolt_vehicle(chassis, {
    engine: {
        max_torque: 500,
        min_rpm: 1000,
        max_rpm: 7000,
        inertia: 0.5,
        angular_damping: 0.2
    }
});
FieldRuleEffect
max_torque> 0Maximum engine torque in N m.
min_rpm> 0 and below current max_rpmIdle/minimum operating RPM.
max_rpmAbove current min_rpmMaximum operating RPM.
inertia> 0Resistance to changing engine angular speed.
angular_damping>= 0Passive damping of engine angular speed.

Runtime state#

GetterResult
get_engine_rpm()Current engine speed in RPM.
get_engine_state(){rpm, gear, clutch, switching}.
  • Unspecified fields retain Jolt's native defaults.
  • Engine settings cannot be changed after build() through the current public API.

Configuration object and setters#

GML
var engine = jolt_vehicle_engine();
engine.set_max_torque(500);
engine.set_min_rpm(1000);
engine.set_max_rpm(7000);
var settings = jolt_vehicle_settings();
settings.set_engine(engine);
var car = jolt_vehicle(chassis, settings);

Configuration factories return a GML settings object and create no physics. Their setters return self, the settings object, and do not confirm that a value is valid. Fields are consumed and validated by jolt_vehicle, add_wheel or add_differential. An omitted field preserves the corresponding options default described above. Editing settings after consumption does not change an existing vehicle, wheel or differential. Settings need no destroy.

Vehicle creation returns undefined on failure. add_differential returns Boolean; add_wheel returns a numeric zero-based index or Boolean false on failure. Index 0 is success: do not use only if (!wheel_index). Complete wheel/differential configuration before build().

When both min_rpm and max_rpm are supplied, the loader validates the pair atomically in native code; the old update order against default bounds does not apply. A single supplied bound is checked against the current other bound. Min must be positive and below max; the settings setter itself does not perform this validation.

Verified operation contracts#

These contracts distinguish units, return values, errors and lifetime according to the current implementation. Check results: false, 0 and undefined can mean different things for different methods.

Symbol / ownerSignatureOperation contract
jolt_vehicle_enginejolt_vehicle_engine()Creates an empty settings object. No world required, no physics created; setters return self. Omitted properties retain defaults at jolt_vehicle.
JoltVehicle.get_engine_rpmJoltVehicle.get_engine_rpm()Numeric RPM or gear index according to method; undefined on error/unbuilt vehicle.
JoltVehicleEngineSettings.set_angular_dampingJoltVehicleEngineSettings.set_angular_damping(value)Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Finite damping >= 0.
JoltVehicleEngineSettings.set_inertiaJoltVehicleEngineSettings.set_inertia(value)Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Finite inertia > 0 kg·m².
JoltVehicleEngineSettings.set_max_rpmJoltVehicleEngineSettings.set_max_rpm(value)Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Finite RPM: 0 < min < max. Both supplied limits are applied atomically; a single limit must satisfy the current other limit.
JoltVehicleEngineSettings.set_max_torqueJoltVehicleEngineSettings.set_max_torque(value)Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Finite torque > 0 N·m.
JoltVehicleEngineSettings.set_min_rpmJoltVehicleEngineSettings.set_min_rpm(value)Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Finite RPM: 0 < min < max. Both supplied limits are applied atomically; a single limit must satisfy the current other limit.