Browse docs

Two-Step and Launch Control

Install, use, tune, and troubleshoot the adaptive Two-Step and Launch Control system.

Two-Step gives an installed vehicle a configurable RPM launch window, synchronized exhaust bursts, and optional launch assistance. Launch Control can hold the vehicle, limit torque while it is staged, and blend the configured torque back in when the brake is released.

The Two-Step runtime is adaptive. It does not request an every-frame loop while the driver is idle. It checks for the configured input combination at inactiveCheckIntervalMs, switches to every-frame processing only while that combination is held, and keeps it only for the short launch-release ramp.

Enable and install the feature

Two-Step has a global feature switch, a deployment-wide runtime switch, and a saved state for each vehicle. All three layers must allow the feature:

  1. Open /jobconfig, select Mechanic Jobs, open Features, and enable Two-Step.
  2. Keep Config.TwoStep.enabled = true in sky_mechanicjob/config/adv_config.lua.
  3. Open a tuning session for the vehicle and select ECU & Vehicle Electronics → 2-Step → Enabled.
  4. Complete the tuning order and install its required part.

The default tuning profile prices twostep_enabled through the normal tuning-price configuration and requires one ecu_tuning_kit. Change its price, availability, or required items under Tuning Prices in /jobconfig just like any other tuning option.

The installation and enabled state are persisted with the vehicle. Disabling the global feature hides the tuning option and stops its runtime without deleting saved vehicle data.

defaultEnabled is the fallback for a restored Two-Step record that has no explicit enabled value. A normal new installation uses the Enabled or Disabled value selected in the tuning order.

Use Two-Step

With the shipped keyboard controls, the driver stages the vehicle by holding:

  • W + S when useFootBrake = true
  • W + Space when useHandbrake = true

When both brake inputs are enabled, either combination can arm Two-Step. The equivalent configured vehicle controls can also be used on a controller.

The feature activates only when every condition below is met:

RequirementShipped value
Player is in the driver seatRequired
Engine is runningRequired
Two-Step is installed and enabled for the vehicleRequired
Throttle plus an allowed brake input are heldRequired
Vehicle speedAt or below 25 km/h
Current gear0 through 2
Current RPM0.08 through 0.95

Gear 0 is intentionally included because some vehicles report neutral while stationary. Holding the input combination starts the responsive frame loop immediately, but exhaust bursts and Launch Control are applied only after the speed, gear, and RPM conditions also pass.

To launch, keep the throttle held and release the selected brake input. When Launch Control is enabled, the forced handbrake is released and the launch torque blends back to the vehicle's normal configured torque over releaseRampMs. Releasing the throttle as well cancels the ramp and clears the temporary launch modifier.

Open configuration

The complete deployment-wide configuration is stored in sky_mechanicjob/config/adv_config.lua:

sky_mechanicjob/config/adv_config.lua
Config.TwoStep = {
    enabled = true,
    defaultEnabled = false,
    useFootBrake = true,
    useHandbrake = false,
    inactiveCheckIntervalMs = 125,

    maxSpeedKmh = 25.0,
    minGear = 0,
    maxGear = 2,
    rpmWindowMin = 0.08,
    rpmWindowMax = 0.95,

    burstIntervalMinMs = 55,
    burstIntervalMaxMs = 115,
    flameDurationMs = 130,
    flameScaleMin = 0.7,
    flameScaleMax = 1.8,
    defaultFlameScaleLevel = 10,
    defaultVolumeLevel = 8,

    turboPressureSpikeEnabled = true,
    turboPressureSpike = 28.0,

    launchControl = {
        enabled = true,
        holdHandbrake = true,
        rpmTarget = 0.72,
        holdTorqueMultiplier = 0.12,
        releaseRampMs = 90,
        releaseTorqueStartMultiplier = 0.9
    }
}

Changes made to the Two-Step feature switch in /jobconfig are sent to connected clients immediately. Restart sky_mechanicjob after editing the static values in adv_config.lua.

Availability, input, and activation

SettingValid runtime rangePurpose
enabledBooleanDeployment-wide hard switch in addition to the /jobconfig feature switch.
defaultEnabledBooleanFallback state for restored records without an explicit enabled value.
useFootBrakeBooleanAllows the normal vehicle brake control; S by default on keyboard.
useHandbrakeBooleanAllows the vehicle handbrake control; Space by default on keyboard.
inactiveCheckIntervalMs501000 msDelay between input checks before the combination is held. Lower values react faster; higher values reduce idle checks.
maxSpeedKmh1120 km/hHighest speed at which Two-Step may activate.
minGear010Lowest allowed reported gear. Keep 0 for vehicles that report neutral at a standstill.
maxGearminGear10Highest allowed reported gear.
rpmWindowMin0.050.99Bottom of the normalized native RPM activation window.
rpmWindowMaxAbove rpmWindowMin, up to 1.0Top of the normalized native RPM activation window.

At least one of useFootBrake and useHandbrake must be true. If both are false, no input can arm the feature.

Use 100150 ms as a practical starting range for inactiveCheckIntervalMs. The shipped 125 ms value keeps idle work low while remaining responsive. A value of 50 ms gives faster initial recognition; values closer to 250 ms trade noticeable input delay for fewer idle checks.

Bursts, flames, and turbo pressure

SettingShipped / acceptedEffect
burstIntervalMinMs / burstIntervalMaxMs55 / 115 ms; each 203000 msRandom delay range between local exhaust bursts. A maximum below the minimum is raised to the minimum.
flameDurationMs130 ms; 253000 msLifetime of each backfire flame.
flameScaleMin / flameScaleMax0.7 / 1.8; minimum 0.055.0, maximum up to 8.0Visual scale range used with current RPM intensity. The maximum cannot resolve below the minimum.
defaultFlameScaleLevel10; 110Default stored flame level.
defaultVolumeLevel8; 010Default stored burst-volume level; 0 suppresses the explosion-based pop.
turboPressureSpikeEnabledtrue; BooleanEnables the optional turbo-pressure kick while staged.
turboPressureSpike28.0; 0.050.0Pressure value applied at a limited cadence while Two-Step is active.

Nearby players receive synchronized backfire bursts. Custom vehicles still need suitable exhaust bones for flames to appear in the expected location.

Launch Control

SettingValid runtime rangePurpose
launchControl.enabledBooleanAdds RPM hold, launch torque control, and the optional forced handbrake. Two-Step bursts continue when this is disabled.
launchControl.holdHandbrakeBooleanHolds the vehicle in place while Two-Step is active.
launchControl.rpmTargetRPM activation windowTarget normalized RPM while staged. It is automatically clamped between rpmWindowMin and rpmWindowMax.
launchControl.holdTorqueMultiplier0.01.0Temporary torque factor while staged. Lower values hold power back more strongly.
launchControl.releaseRampMs05000 msTime used to blend launch torque back to normal after the brake is released. 0 restores it immediately.
launchControl.releaseTorqueStartMultiplier0.01.0Starting point of the release blend. The runtime never starts below holdTorqueMultiplier.

Launch Control and installed ECU engine tuning share the same torque coordinator. Their multipliers are combined, so staging and release do not erase the vehicle's ECU tune.

Tuning guidance

Change one group of values at a time and test it on stock vehicles and every custom handling class used by the server:

  1. Set the speed, gear, and RPM activation window first.
  2. Choose an rpmTarget inside that window.
  3. Adjust holdTorqueMultiplier until the vehicle stays controllable while staged.
  4. Tune releaseTorqueStartMultiplier and releaseRampMs together for the desired launch response.
  5. Balance burst cadence, flame size, volume, and turbo pressure last.

For a tighter standing launch, reduce maxSpeedKmh, keep minGear = 0, use a low maxGear, and narrow the RPM window around the desired target. For broader compatibility with custom transmissions, keep the shipped gear range and first confirm which gear each vehicle reports while stationary.

Aggressive pressure, torque, or release values can react differently with custom handling files. Another resource that writes vehicle torque, RPM, or handbrake state every frame can also override Launch Control and should be tested or integrated explicitly.

Troubleshooting

SymptomChecks
No 2-Step option in the tuning menuEnable Two-Step in /jobconfig, confirm Config.TwoStep.enabled = true, and confirm twostep_enabled is enabled for the active tuning-price profile.
Installed vehicle does nothingConfirm 2-Step is set to Enabled for that vehicle, the player is driving, the engine is running, and speed, gear, and RPM are inside the configured window.
W + Space does nothingThe shipped configuration has useHandbrake = false. Enable it or use W + S.
Bursts work but the vehicle is not heldConfirm launchControl.enabled and launchControl.holdHandbrake are both true. Check for another vehicle-control resource overriding the handbrake.
RPM does not settle near the targetKeep rpmTarget inside the RPM window and check whether another performance or handling script continuously writes RPM or torque.
Initial input feels delayedLower inactiveCheckIntervalMs. Do not set it below 50; once detected, the combination already switches to every-frame processing.
Launch feels weak or abruptRaise the appropriate torque multiplier gradually, or lengthen releaseRampMs for a smoother blend. Test every change across vehicle classes.
Pops are audible but flames are missingTest a stock vehicle, then verify the custom model's exhaust bones and particle-effect compatibility.
ECU power disappears during a launchUpdate to the build containing the shared vehicle-torque coordinator and check for an external resource that overwrites the same native every frame.

Testing checklist

  1. Install and enable 2-Step through a complete tuning order.
  2. Confirm throttle by itself and brake by itself do not start the responsive frame loop or effects.
  3. Hold the configured combination and verify activation only inside the speed, gear, and RPM window.
  4. Release the brake while keeping throttle held and verify the configured torque ramp.
  5. Release both controls and confirm the launch modifier clears immediately.
  6. Repeat with Launch Control disabled and confirm bursts remain but vehicle hold and torque control stop.
  7. Store and retrieve the vehicle and confirm its installed and enabled state persists.
  8. Observe the test from a second nearby client and verify synchronized sound and flames.
  9. Test stock, custom-handling, manual-transmission, and controller-driven vehicles used by the server.
  10. Temporarily disable Two-Step in /jobconfig and confirm the running client stops the feature without a resource restart.