Drift Heaven v2
Arcade drift car physics for Unreal Engine 5.7 and 5.8. Easy, assisted drifting, burnouts, drift points with combos and multipliers, a player level / XP system, air ride, stance, headlights and underglow, runtime paint, multiplayer with chat, touch controls and steering wheel support, engine and tyre sounds, a main menu with settings, a chase camera with free look and a live debug menu to tune everything while you drive.
Everything is written in C++ and every class can be extended in Blueprint. You make a Blueprint child of the car, give it your own meshes and numbers, and react to events like On Drift Started in the Event Graph. You never have to touch the C++.
Quick start
Requirements: Unreal Engine 5.7 or 5.8, Windows (Win64). Works in Blueprint-only and C++ projects.
- Install: from Fab, add DriftHeaven to your engine (or project). To install by hand, copy the
DriftHeavenfolder into your project'sPluginsfolder (create it if it doesn't exist). - Enable: Edit › Plugins, search DriftHeaven, tick it and restart the editor. In the Content Browser, turn on Settings › Show Plugin Content to see the plugin's folder.
- Play the demo: open
DriftHeaven Content › Maps › DriftHeaven_Demoand press Play. - Press X to open the debug menu and change the car live while you drive.
What's in the plugin
| Folder | What it is |
|---|---|
Content/Blueprints/BP_DriftCar | The demo car (meshes assigned). Duplicate it or make your own child of DriftCarPawn. |
Content/Blueprints/BP_DriftGameMode | Game mode that spawns BP_DriftCar with the drift controller, HUD and camera. |
Content/Blueprints/BP_DriftPlayerController, BP_DriftHUD, BP_DriftPlayerState | The rest of the game setup, ready to extend. |
Content/Maps/DriftHeaven_Demo | Demo map (TRAINING). |
Content/Maps/DriftHeaven_Menu | Main menu map. |
Content/Audio | The 13 car sounds (Sound Wave assets): engine loops, tyres, gears, blow-off, air ride. Free to use in your games. |
Content/Demo | The demo sports car: meshes, materials, textures. |
Source/DriftHeaven | The C++ code (15 classes). |
Controls
| Action | Keyboard / mouse | Gamepad |
|---|---|---|
| Throttle | W / Up | Right trigger |
| Brake / reverse | S / Down | Left trigger |
| Steer | A / D or Left / Right | Left stick |
| Handbrake | Space | A or Right bumper |
| Burnout | Hold throttle + brake while stopped | Hold both triggers while stopped |
| Reset car | R | Y |
| Manual / automatic gearbox | M | Right stick click |
| Shift up / down (manual) | Q / E | D-pad up / down |
| Air ride | L | D-pad left |
| Headlights | H | D-pad right |
| Underglow | U | - |
| Change camera view | C | B |
| Look around | Hold right mouse button + move; wheel zooms | Right stick |
| Debug menu | X | View / Back |
| Chat | T or Enter (Enter sends, Esc cancels) | - |
| Back to main menu | Backspace | Start / Menu |
| Settings: switch tab / back | Q / E, Esc or Backspace | Bumpers, B |
All keys except the driving keys can be changed: on the player controller (Controller reference) and the camera manager (Camera reference).
Create a new car in Blueprint
- In the Content Browser, right-click › Blueprint Class. Open All Classes, search
DriftCarPawn, select it and click Select. - Name it, for example
BP_MyCar, and open it. - Set the meshes: see Change the body mesh and Change the wheels.
- Click Class Defaults (toolbar) and set:
- Drift | Tuning › Car Name: leave it empty and the car's setup is saved under the Blueprint's name (each car gets its own automatically), or type a name to share one setup between cars.
- Drift | Tuning › Start Style: the driving mode (see Driving modes).
- Drift | Tuning › Tuning: any handling values you want to change (see the Tuning reference).
- Compile and Save, then make the game spawn it: Use your car in the game.
Change the body mesh
The car is built from these components (see the Components panel in your Blueprint):
| Component | What it is |
|---|---|
Collision | The box the physics uses. Sized by Box Size (Class Defaults). |
VisualRoot › BodyPivot › Body | The body mesh. BodyPivot leans the body in turns and drops it for air ride. |
Body › Glass | Windows (optional, can be left empty). |
VisualRoot › WheelPivot_FL / FR / RL / RR › Wheel_FL / FR / RL / RR | The four wheels. The pivots steer and camber, the wheel meshes spin. |
HeadlightL / HeadlightR / Underglow | Lights, attached to the body. |
Scorer, XP, Audio | Drift points, the EXP / level system and sounds. Select one to edit its values. |
- Your mesh should face +X (forward), with Z up, in centimetres. The pivot can be anywhere; you line it up in step 4.
- Select the Body component and set Static Mesh to your car body. Do the same for Glass if your windows are a separate mesh (or clear it).
- In Class Defaults › Drift | Body:
- Box Size: length, width and height of your car in cm. Its bottom is the ground.
- Box Forward Offset: move the box forward if the car is longer in front of its centre.
- Body Offset: move the body until the wheels sit on the ground (raise Z if it sinks in).
- Body Rotation: only if your mesh doesn't face +X (a mesh facing +Y needs Yaw -90).
- Paint: set up which parts players can recolour in Drift | Paint › Paint Channels. See Paint & colours.
- Move the headlights into your lamps with Drift | Lights › Headlight Offset. Size the underglow with Underglow Size (keep it smaller than the car for a soft glow).
Change the wheels
- Your wheel mesh should have its pivot in the centre of the wheel, with the axle along Y.
- Select Wheel_FL, Wheel_FR, Wheel_RL and Wheel_RR (Ctrl-click all four) and set Static Mesh to your wheel. You can use different meshes front and rear.
- In Class Defaults › Drift | Wheels:
- Wheel Positions: the centre of each wheel in cm, in this order: front left, front right, rear left, rear right. X = forward from the car's centre, Y = right (left wheels are negative), Z = up from the ground.
- Wheel Radius Cm: your wheel's radius (so it spins at the right speed and stays on the road when cambered).
- Left Wheel Yaw / Right Wheel Yaw: if the rims face into the car, swap 0 and 180.
- Max Visual Steer Deg: how far the front wheels turn.
- For the look, open the debug menu (X) › STANCE in game: car height, camber and wheel offset. Copy the values you like into Tuning › Stance.
Wheel motion blur: Unreal blurs a mesh by how far it moved since the last frame, so a wheel spinning at full speed smears into a messy disc. By default DriftHeaven caps the wheels' visible spin (Drift | Wheels › Max Wheel Spin Deg Per Sec, 540) so they stay crisp. Tick Wheel Motion Blur for the true spin speed.
Paint & colours
Players can change the car's colours at runtime: in the debug menu (X › PAINT) or from your own Blueprint UI. Each part that can be recoloured is a paint channel.
Set up paint channels
- In your car Blueprint, Class Defaults › Drift | Paint › Paint Channels: click + for each part (for example Body and Rims).
- For each channel set the Target mesh, the Material Slots to colour (the slot names from the Static Mesh editor) and the Color Parameter.
- The material needs a colour parameter: open the material, right-click the colour going into Base Color › Convert to Parameter and give it a name (for example
PaintColor). If Base Color comes from a texture, multiply the texture by a Vector Parameter to tint it. Apply and save.
| Field | Default | What it does |
|---|---|---|
| Label | Body | Name shown in the debug menu and used by Set Paint Color By Label ("Body", "Stripes", "Rims"). |
| Target | Body | Which mesh: Body, Glass or Wheels (all four wheels). |
| Material Slots | empty | Material slot NAMES on that mesh (Static Mesh editor › Material Slots). Empty = every slot. |
| Color Parameter | None | Vector parameter to set in those materials. None = tries Paint Tint, PaintColor, BaseColor, Base Color, BaseColorFactor, Color, Tint, DiffuseColor. |
| Color | white | Starting colour. |
| Randomize | true | Gets a random colour on spawn / reset (when Random Color On Spawn / Respawn is on). |
M_Spoke, M_Tires and M_Screw: Label Rims, Target Wheels, Material Slots M_Spoke, Color Parameter PaintColor. The tyres and bolts keep their colour.In game, X › PAINT: < > picks the channel, then click a quick colour or click / drag on the colour palette (hue left to right, white at the top, black at the bottom, greys on the right). The headlight and underglow colours under LIGHTS use the same palette.
Random colours: Random Color On Spawn / Respawn give every channel with Randomize ticked a new colour (only from Paint Palette if you fill it). With no paint channels, the car uses one body colour set through Paint Parameter on every body slot.
Missing materials, slots or parameters are skipped quietly: nothing errors, the colour just doesn't show.
Use your car in the game
The car is spawned by a game mode. Make a Blueprint child of DriftGameMode (or duplicate BP_DriftGameMode) and set its Default Pawn Class to your car. Then choose where it's used:
- One map: open the map, Window › World Settings › GameMode Override: your drift game mode. The map needs a Player Start.
- Every map: Project Settings › Maps & Modes › Default GameMode: your drift game mode. Maps with their own GameMode Override still use theirs.
- Force it on every map, even maps with their own override (handy for testing): make a Blueprint child of
DriftGameInstance, tick Force Drift Game Mode, set Drift Game Mode Class to your game mode, and pick it in Project Settings › Maps & Modes › Game Instance Class. Careful: while it's on, World Settings › GameMode Override is ignored on every map.
The drift game mode also sets the player controller (input, debug menu, camera), the HUD and the player state. To use your own, change them in your game mode Blueprint (use Blueprint children of the DriftHeaven classes so everything keeps working).
Main menu & settings
DriftHeaven includes a main menu built in C++: the DRIFT HEAVEN title, TRAINING, SETTINGS and QUIT on the left, and DISCORD and WEBSITE buttons at the bottom right. It works with mouse, keyboard and gamepad. The 3D scene behind it is your own map.
Set up a menu map
- Make a map (the plugin's is
Maps/DriftHeaven_Menu) with your scene: a garage, a car Blueprint placed in it for show, lights. - World Settings › GameMode Override:
DriftMenuGameMode(or a Blueprint child). It spawns no player car and shows the menu. - Camera: place a Camera Actor and give it the tag
MenuCamera(Details › Actor › Tags). With no camera, the menu slowly orbits the first drift car in the map. - Project Settings › Maps & Modes › Game Default Map: your menu map, so the game starts on it.
In game, BACKSPACE (gamepad Start) goes back to the menu map set in the player controller's Menu Map.
Menu settings
On DriftMenuPlayerController (make a Blueprint child and set it in your menu game mode):
| Setting | Default | What it does |
|---|---|---|
| Training Map | DriftHeaven_Demo | Map opened by TRAINING. |
| Title Top / Title Bottom | DRIFT / HEAVEN | The two lines of the title (the second one is purple). |
| Tagline | ARCADE DRIFT | Small text above the title. |
| Footer Text | empty | Bottom-left text. Empty = DRIFT HEAVEN v(plugin version) | ZEXP. |
| Discord URL | discord.gg/zcMT75d3Yt | DISCORD button link. |
| Website URL | zexp.dev | WEBSITE button link. |
| Menu Camera Tag | MenuCamera | A Camera Actor with this tag is used as the view. |
| Orbit Display Car | true | With no tagged camera, orbit the first drift car in the map. |
| Orbit Speed / Distance / Height / FOV | 5 / 720 / 170 / 50 | The orbit: degrees per second, cm, cm, degrees. |
| Frame Offset | 160 | Moves the car to the right of the screen (cm), clear of the buttons. |
Override On Training Pressed or On Quit Pressed in the Blueprint to do something else (a loading screen, a confirmation...). Open URL, Show Menu, Hide Menu and Open Settings can be called from anywhere.
SETTINGS
| Tab | Options | Saved in |
|---|---|---|
| AUDIO | Master, Engine, Tyres, Effects volume, Reset audio | Saved/SaveGames/DriftSettings.sav (DriftUserSettings: Get Drift User Settings in Blueprint) |
| DISPLAY | Window mode, Resolution, Render resolution, V-Sync, Frame rate limit | GameUserSettings.ini (Unreal's Game User Settings) |
| GRAPHICS | Overall quality, Auto-detect, View distance, Anti-aliasing, Shadows, Global illumination, Reflections, Post processing, Textures, Effects, Foliage, Shading | GameUserSettings.ini |
Changes apply and save instantly. Q / E (gamepad bumpers) switch tabs, Esc / Backspace (gamepad B) goes back. The car's sounds follow the audio volumes automatically.
Driving modes
There are three driving styles. Each one is a full set of Tuning values:
| Style | Feel | Top speed |
|---|---|---|
| Drift | Torque, easy long slides, the default. | ~160 km/h (45 m/s) |
| Road Race | Half way between Drift and Straight Speed: more grip, faster, still slides. | ~250 km/h (70 m/s) |
| Straight Speed | Grip and top speed, little sliding, 8 gears. | ~340 km/h (95 m/s) |
Where to change it
- In your Blueprint car: Class Defaults › Drift | Tuning › Start Style. Custom uses your Tuning values exactly as you set them; Drift, Road Race or Straight Speed load that style when the car spawns.
- In game: debug menu (X) › CAR TUNING › DRIFT / ROAD RACE / STRAIGHT SPEED buttons.
- From Blueprint: call Set Style on the car (0 Drift, 1 Road Race, 2 Straight Speed), for example from a menu.
What a style changes
A style changes the handling values (engine, grip, steering, drift angles, gears). It keeps your stance and lights. The full list of what each style sets is in the Tuning reference (the small "Road · Straight" line under each default). To make your own mode, pick the nearest style, adjust the sliders and press SAVE SETUP, or set Start Style to Custom and type your values into Tuning.
Assist and gearbox
- Assist Level (0 off, 1 normal, 2 strong) makes drifts easier to hold. See Assist levels.
- Manual starts the car with the manual gearbox (M toggles, Q / E shift).
Debug menu (X)
Press X while playing. The mouse cursor appears and the car still drives. Every change is live.
| Section | What's in it |
|---|---|
| CAR TUNING | Style buttons, SAVE SETUP / LOAD SAVED / RESET DEFAULTS, assist level, manual gearbox, debug text, random paint, a slider for every handling value, burnout_max_slip. |
| STANCE | Car height, camber front / rear, wheel offset front / rear, RESET STANCE. Looks only. |
| PAINT | Pick a paint channel (< >), quick colours and a colour palette. |
| LIGHTS | Headlights and underglow: on / off, quick colours, colour palette, brightness, beam, range, pulse, underglow height / length / width. |
| WHEEL BLUR | Wheel motion blur on / off, max visible wheel spin. |
| AIR RIDE | Aired out on / off, drop, camber, wheel push, timing. |
| CAMERA | Views 1-4, invert Y, drift camera on / off, sensitivity, follow speed, field of view, speed effects, shake, zoom limits, the current view's distance and height. |
| SOUND | Sound on / off, every volume, engine pitch, idle and redline RPM. |
| DRIFT POINTS | How points are earned, the combo window, multipliers, burnout points. |
| PLAYER XP | Level, EXP, best drift, totals; +1000 EXP, +1 LEVEL, RESET PROFILE; drifts give EXP on / off; level, EXP in level, EXP per level, EXP per point, multiplier, max level, start level. |
Saving
| What | Where | How |
|---|---|---|
| Car setup (handling, stance, lights) | Saved/DriftTuning/<setup name>.json | One per car: the setup name is Car Name, or the Blueprint's name when Car Name is empty. SAVE SETUP in the debug menu, Save Tuning in Blueprint, or tick Auto Save Setup. Loaded automatically when the car spawns (Auto Load Setup). LOAD SAVED reloads it, RESET DEFAULTS goes back to the style. |
| Player level, EXP, best score | Saved/SaveGames/<Save Slot>.sav (default DriftProfile) | Saved automatically by the car's XP component (Auto Save). RESET PROFILE in the debug menu, or Reset Profile in Blueprint, clears it. |
Multiplayer
DriftHeaven cars work in multiplayer out of the box (listen server or dedicated server). Each player drives their own car on their own machine, so drifting feels exactly like single player with no input lag. Their car's position, drift state, inputs, gear, stance, lights, air ride and paint are sent to everyone else, and other players' cars are drawn smoothly blended between updates.
Try it
- Place a few Player Starts in your map, so cars don't spawn inside each other.
- In the editor: Play button menu › Number of Players: 2, Net Mode: Play As Listen Server, then Play.
- In a packaged game: one player opens the map with
?listen(for exampleopen DriftHeaven_Demo?listenin the console), the others connect withopen <host IP>.
What everyone sees
- Other players' cars, with their drift angle, wheels, burnouts, stance, lights, air ride and paint. Their engine, tyre, shift and air sounds play in 3D and fade with distance (Audio › Other Cars Full Volume Radius / Falloff Distance). Your own car stays 2D.
- Name tags over other cars: name, level and the drift they're doing right now (HUD › Show Name Tags, Name Tag Max Distance).
- A player list at the top right with everyone's session score and level, sorted by score (HUD › Show Player List, only with 2+ players).
The scores come from DriftPlayerState: Drift Level, Best Drift, Session Score, Current Drift and Current Multiplier are replicated and can be read in Blueprint for your own scoreboard. The name is Unreal's Player Name: call Set Name on the player controller to change it.
Network settings (car Blueprint › Drift | Network)
| Setting | Default | What it does |
|---|---|---|
| Net Send Rate | 30 | Updates per second the owning player sends (5 - 60). |
| Net Interp Delay | 0.1 | Other players' cars are shown this far in the past (s) so there are always two updates to blend. Raise to 0.15 - 0.2 for bad connections. |
| Net Max Extrapolation | 0.25 | When updates stop arriving, keep the car moving along its last velocity for at most this long (s). |
Chat
Text chat for single player and multiplayer, built into the drift player controller (the Chat component). Press T or Enter to open the chat box, type, Enter to send, Esc to cancel. While typing, the car lets go of every control. Messages show bottom left and fade after a few seconds; system messages are orange and replies only for you are blue. On touch screens use the CHAT button.
- Checked by the server: length limit, cooldown and burst limit (no spam), and the profanity filter.
- System messages: players joining and leaving, big drifts (25,000+ points), level ups and name changes.
- Commands:
/helplists them,/name NewNamechanges your player name. Add your own: type the name in Custom Commands (for examplerespawn) and bind On Chat Command in your controller Blueprint, it runs on the server. - Your own UI: bind On Chat Message and call Send Chat Message. To hide the built-in lines, untick the HUD's Draw Default HUD or draw your own.
- Server announcements: call Broadcast System Message from your game mode (race started, winner...).
Chat settings (player controller › Chat component)
| Setting | Default | What it does |
|---|---|---|
| Max Message Length | 120 | Longer messages are cut (server). |
| Min Seconds Between Messages | 1 | Cooldown between two messages from the same player. |
| Burst Limit / Burst Window | 5 / 10 | At most this many messages in this many seconds. |
| Filter Profanity | true | Replace banned words with ***. |
| Banned Words | 10 common swear words | Your word list (not case sensitive, also inside other words). |
| Announce Join Leave | true | "Name joined" / "Name left" (multiplayer). |
| Announce Big Drifts / Big Drift Points | true / 25000 | "Name banked a 25,000 point drift!" for everyone (multiplayer). |
| Announce Level Ups | true | "Name reached level 5!" (multiplayer). |
| Custom Commands | empty | Your own /commands (lower case, no slash). Typing one fires On Chat Command on the server. |
| Max History / Visible Lines / Fade Seconds | 50 / 8 / 10 | Messages kept, lines on screen, seconds before a line fades (all recent lines show while typing). |
Touch controls
On phones and tablets, on-screen controls appear automatically: a steering pad bottom left (slide your thumb left and right), GAS, BRAKE and HAND (handbrake) bottom right, and RESET, CAM, AIR, LIGHTS and CHAT above the pad. On a PC with a touch screen they appear as soon as the screen is touched. Several fingers work at once.
Player controller › Drift | Touch: Touch Controls (Auto / Always / Never), Touch Button Scale and Touch Opacity. To test them in the editor, tick Project Settings › Input › Use Mouse For Touch or set Touch Controls to Always.
SupportedTargetPlatforms and the module's PlatformAllowList in DriftHeaven.uplugin.Steering wheel
Wheels that work as an Xbox controller (many Logitech / Thrustmaster wheels in Xbox mode) work straight away: the wheel steers and the pedals act as the triggers. For other wheels (DirectInput):
- Edit › Plugins: enable Raw Input and restart.
- Project Settings › Raw Input: add your wheel's Vendor ID and Product ID (Windows Device Manager › your wheel › Details › Hardware Ids:
VID_xxxx&PID_xxxx) and map its axes. - Play and turn the wheel: it takes over as soon as it moves. If an axis is wrong, change it on the player controller (Drift | Steering Wheel).
If the car accelerates on its own or the pedals do nothing, change Pedals Full Range / Invert Pedals. If steering is reversed, tick Invert Wheel Steer. Wheel Steer Scale sets how much you turn for full lock. Keyboard, gamepad, wheel and touch all work at the same time. There's no force feedback.
Reference: Tuning
Found on the car under Class Defaults › Drift | Tuning › Tuning. Units are metres and seconds (m/s × 3.6 = km/h). The "Road · Straight" line shows what the Road Race and Straight Speed styles set; values without it are the same in every style.
Engine
How fast the car gets going, how it slows down and its top speed.
| Value | Default (Drift) | Unit | Debug slider | What it does |
|---|---|---|---|---|
max_speed | 45 Road 70 · Straight 95 | m/s | 15 - 110 | Top speed. 45 m/s is about 160 km/h (multiply by 3.6 for km/h). The engine's push fades to nothing as the car gets close to it. |
engine_accel | 6 Road 8.5 · Straight 11 | m/s² | 2 - 30 | Acceleration from a standstill. Higher = quicker off the line. It fades toward max_speed and is shaped by the gear torque. |
drift_engine_factor | 0.6 Road 0.5 · Straight 0.4 | x | 0 - 1.5 | How much of the engine's push is kept while drifting. 1 = full power while sideways, lower = the car slows down in long drifts. |
reverse_max_speed | 8 | m/s | - | Top speed in reverse (hold brake when stopped). |
reverse_accel | 6 | m/s² | - | Acceleration in reverse. |
brake_decel | 18 Road 19 · Straight 20 | m/s² | 5 - 60 | Braking power. Higher = shorter stops. |
rolling_resistance | 1 Road 0.9 · Straight 0.8 | m/s² | - | Constant slow-down when coasting (no throttle, no brake). |
air_drag | 0.0008 Road 0.00052 · Straight 0.00025 | - | Air resistance, grows with speed squared. Lower = higher real top speed and less slow-down at speed. |
Grip
How hard the tyres stop the car sliding sideways (m/s of sideways speed removed every second).
| Value | Default (Drift) | Unit | Debug slider | What it does |
|---|---|---|---|---|
grip | 45 Road 52.5 · Straight 60 | m/s² | 10 - 120 | Normal grip when not drifting. Higher = the car goes where it points, lower = it slides around in turns. |
drift_grip | 8 Road 9 · Straight 10 | m/s² | 0 - 30 | Grip while drifting. Low = long, floaty slides; high = the car straightens up quickly. |
handbrake_grip | 3 Road 3.5 · Straight 4 | m/s² | 0 - 20 | Rear grip while the handbrake is held. Lower = the handbrake kicks the rear out more. |
handbrake_decel | 5 | m/s² | - | How much the handbrake slows the car down. |
power_slide | 0.85 Road 0.465 · Straight 0.08 | 0 - 1 | 0 - 1 | Full steering + throttle loosens the rear so the car steps out without the handbrake. 0 = off (handbrake needed to start drifts). |
drift_speed_retention | 0.55 Road 0.45 · Straight 0.35 | 0 - 1 | 0 - 1 | Part of the sideways speed the tyres scrub off that is fed back into forward speed while on the throttle. Higher = drifts keep their speed. |
Steering
Normal (grip) steering.
| Value | Default (Drift) | Unit | Debug slider | What it does |
|---|---|---|---|---|
steer_rate | 2 Road 1.8 · Straight 1.6 | rad/s | 0.5 - 5 | How fast the car turns at full lock. Higher = sharper turning. |
steer_full_speed | 5 Road 5 · Straight 5 | m/s | - | Speed at which steering reaches full strength. Below it, steering is weaker (so the car can't spin on the spot). |
high_speed_steer_factor | 0.55 Road 0.465 · Straight 0.38 | x | - | Steering strength left at top speed (1 = same as slow, 0.5 = half). Makes high speed stable. |
yaw_response | 8 Road 7.5 · Straight 7 | 1 - 25 | How quickly the car's turning follows the steering. Higher = snappy, lower = lazy and smooth. |
Drift
When a drift starts and ends, and the angle the drift assist holds.
| Value | Default (Drift) | Unit | Debug slider | What it does |
|---|---|---|---|---|
drift_enter_angle | 10 Road 15 · Straight 20 | deg | 3 - 40 | Slip angle (how sideways the car is) needed to start a drift. Lower = drifts start easily. |
drift_exit_angle | 4 Road 5 · Straight 6 | deg | 1 - 20 | Below this angle the car counts as straight again. |
drift_exit_time | 0.3 | s | 0 - 1 | How long the car must stay straight before the drift ends (and before the drift ended event fires). |
min_drift_speed | 5 | m/s | 1 - 20 | Slowest speed a drift can start at. The drift also ends below half of this. |
drift_base_angle | 30 Road 22.5 · Straight 15 | deg | 5 - 60 | Angle the car holds at full throttle with the steering straight. |
drift_lift_factor | 0.15 | x | 0 - 1 | Off the throttle the held angle is drift_base_angle x this, so lifting off straightens the car. |
drift_steer_angle | 18 | deg | 0 - 45 | Extra angle from steering into the slide. |
max_drift_angle | 55 Road 42.5 · Straight 30 | deg | 20 - 85 | Largest angle the assist will ever aim for. |
transition_strength | 1 | x | 0 - 1.5 | How far the car swings to the other side in a transition (full counter-lock held). 1 = the same angle the other way. |
drift_angle_correction | 2.2 | 0.5 - 10 | How strongly the car is pulled to the target angle. Higher = the angle locks in, lower = looser and more manual. | |
handbrake_kick | 0.9 Road 0.7 · Straight 0.5 | rad/s | 0 - 4 | Instant rotation when the handbrake is pulled while steering. Higher = sharper handbrake entries. |
Counter-steer
What happens when you steer against the slide.
| Value | Default (Drift) | Unit | Debug slider | What it does |
|---|---|---|---|---|
countersteer_min_angle | 10 | deg | -30 - 40 | Angle the car eases down to at full counter-lock (catching the slide). Negative = full counter-lock pulls the car right through to the other side. |
countersteer_curve | 1.5 | 0.5 - 3 | How the counter-steer builds up: 1 = straight line, higher = small corrections do little and full lock does a lot. | |
countersteer_catch | 1 | 0 - 3 | Extra pull toward the target angle while counter-steering. Higher = slides are caught faster. | |
transition_threshold | 0.85 | 0 - 1 | 0.5 - 1 | How much counter-lock (0 - 1) counts as "full" for a transition. |
transition_delay | 0.3 | s | 0 - 1.5 | How long full counter-lock must be held before the car swings to the other side. |
visual_countersteer | 0.8 | 0 - 1 | 0 - 1 | Visual only: how much the front wheels turn toward the slide (opposite lock) while drifting. |
Assist
Used by the drift assist levels (see Assist Level).
| Value | Default (Drift) | Unit | Debug slider | What it does |
|---|---|---|---|---|
line_control | 0.6 | - | With assist on, steering into or out of the drift changes the drift grip, so you can tighten or widen your line. 0 = off. |
Gearbox
Gears for the automatic and manual gearbox (M switches, Q up, E down).
| Value | Default (Drift) | Unit | Debug slider | What it does |
|---|---|---|---|---|
gear_top_speeds | 11, 18, 26, 34, 41, 48 Road 14, 24, 34, 44, 54, 62, 70 · Straight 16, 28, 40, 52, 64, 76, 86, 95 | m/s | - | Top speed of each gear. The number of entries = the number of gears. The automatic shifts up at 97% of a gear's top speed and down below 62% of the gear below. |
gear_torque | 1.35, 1.2, 1.1, 1.0, 0.95, 0.9 Road 1.4, 1.25, 1.15, 1.05, 0.98, 0.93, 0.88 · Straight 1.45, 1.3, 1.2, 1.1, 1.02, 0.96, 0.9, 0.86 | x | - | Pull of each gear (same order). Low gears pull harder. |
shift_time | 0.12 | s | - | Power cut while a gear changes. |
engine_brake | 2 | m/s² | - | Slow-down from the engine when off the throttle (stronger at high revs). |
clutch_speed | 5 | m/s | - | Below this speed in 1st / 2nd the clutch slips, so the car pulls well off the line. |
lug_torque | 0.3 | 0 - 1 | - | Pull left at very low revs (lugging the engine in too high a gear). 1 = no penalty. |
Crashes
Hitting walls.
| Value | Default (Drift) | Unit | Debug slider | What it does |
|---|---|---|---|---|
crash_bounce | 0.3 | 0 - 1 | 0 - 1 | Part of the speed into the wall that bounces back out. 0 = the car stops dead on the wall, 1 = full rebound. |
crash_scrape | 0.35 | 0 - 1 | 0 - 1 | Speed lost along the wall in a hard hit. Higher = hits cost more speed. |
crash_spin | 0.08 | 0 - 0.3 | How much a hit on a corner of the car spins it. | |
crash_recover | 0.45 | s | 0 - 1.5 | How long the car stays unsettled (looser steering) after a hard hit. |
crash_min_speed | 1.5 | m/s | - | Hits slower than this into the wall are ignored (no bounce, no spin). |
mass | 1 Road 1.075 · Straight 1.15 | x | - | Reserved for car-to-car collisions. Not used by the physics yet. |
Stance
Looks only, never changes the handling. In the debug menu under STANCE.
| Value | Default (Drift) | Unit | Debug slider | What it does |
|---|---|---|---|---|
ride_height | 0 | m | -0.10 - 0.15 | Car height: + raises the body over the wheels, - lowers it. The debug menu shows it in cm (car_height_cm). |
camber_front | 0 | deg | -10 - 20 | Front wheel tilt. + = the tops of the wheels lean in (negative camber, the stance look), - = tops out. |
camber_rear | 0 | deg | -10 - 20 | Rear wheel tilt, same as above. |
wheel_offset_front | 0 | cm | -5 - 10 | Front wheels pushed out (+) or in (-), like wheel spacers. |
wheel_offset_rear | 0 | cm | -5 - 10 | Rear wheels pushed out (+) or in (-). |
Lights
Looks only. In the debug menu under LIGHTS. H toggles headlights, U toggles underglow.
| Value | Default (Drift) | Unit | Debug slider | What it does |
|---|---|---|---|---|
headlights_on | true | - | Headlights on or off. | |
headlight_color | (1, 0.95, 0.85) | colour | - | Headlight colour (red, green, blue, 0 - 1). |
headlight_intensity | 8000 | cd | 0 - 50000 | Headlight brightness (candelas). |
headlight_cone | 35 | deg | 10 - 80 | Width of the beam. |
headlight_range | 4000 | cm | 500 - 15000 | How far the light reaches. |
underglow_on | true | - | Underglow (neons) on or off. | |
underglow_color | (0.55, 0.1, 1) | colour | - | Underglow colour (purple by default). |
underglow_intensity | 150 | cd | 0 - 5000 | Underglow brightness. Too high washes the colour out to white. |
underglow_range | 350 | cm | 50 - 1000 | How far around the car the glow reaches. |
underglow_pulse | 0 | Hz | 0 - 5 | Pulses per second. 0 = steady. |
World
| Value | Default (Drift) | Unit | Debug slider | What it does |
|---|---|---|---|---|
gravity | 30 | m/s² | 5 - 60 | Gravity on the car. Arcade: much heavier than real (9.8) so the car stays planted over bumps and lands fast from jumps. |
style | 0 | - | The driving style this setup started from (0 Drift, 1 Road Race, 2 Straight Speed). Set by the style buttons / SetStyle. To choose the style a car spawns with, use Start Style instead. |
Reference: Car settings
Found on the car under Class Defaults.
Drift | Tuning
| Setting | Default | What it does |
|---|---|---|
| Tuning | - | All the values in the Tuning reference below. Open it in Class Defaults to edit. |
| Car Name | empty | Name of this car's saved setup (Saved/DriftTuning/<name>.json). Empty = the Blueprint's name (BP_MyCar...), so every car Blueprint gets its own setup automatically. Give two Blueprints the same Car Name to share one setup. |
| Auto Load Setup | true | Load this car's saved setup when it spawns (if there is one). |
| Auto Save Setup | false | Save the setup automatically when the car is removed or the game ends (no need to press SAVE SETUP). |
| Start Style | Drift | Driving style the car spawns with: Drift, Road Race, Straight Speed, or Custom (the Tuning values exactly as set in the Blueprint). A saved setup is loaded on top. |
| Assist Level | 0 | Drift assist: 0 off (raw tuning), 1 normal, 2 strong. See Assist levels. |
| Manual | false | Start with the manual gearbox (M toggles it in game). |
| Burnout Max Slip | 20 | Largest slip angle (degrees, either side) during a burnout. |
Drift | Meshes
| Setting | Default | What it does |
|---|---|---|
| Default Body Mesh | empty | Optional fallback body mesh, used only if the Body component has no mesh. Skipped quietly if the asset doesn't exist. |
| Default Glass Mesh | empty | Optional fallback glass mesh (same rule). |
| Default Wheel Mesh | empty | Optional fallback wheel mesh for any wheel left empty (same rule). |
Drift | Body
| Setting | Default | What it does |
|---|---|---|
| Box Size | (462, 196, 128) | The collision box in cm: length, width, height. Its bottom is the ground under the wheels. Make it match the body. |
| Box Forward Offset | 12 | Moves the box forward (cm) if the body is longer at the front than at the back. |
| Body Offset | (0, 0, 14.3) | Where the body mesh sits (cm), from the point on the ground under the car's centre. Raise Z if the body sinks into the ground. |
| Body Rotation | (0, 0, 0) | Rotate the body mesh if it isn't modelled facing +X (forward). For a mesh facing +Y use Yaw -90. |
Drift | Wheels
| Setting | Default | What it does |
|---|---|---|
| Wheel Positions | FL, FR, RL, RR | Centre of each wheel in cm, from the same point as Body Offset (X forward, Y right, Z up). Order: front left, front right, rear left, rear right. Left wheels have negative Y. |
| Wheel Radius Cm | 39.3 | Wheel radius in cm. Used to spin the wheels at the right speed and to keep them on the road when cambered. |
| Left Wheel Yaw | 180 | Turns the left wheel meshes so the rim faces outward. Swap 0 / 180 if the rims face into the car. |
| Right Wheel Yaw | 0 | Same for the right wheels. |
| Max Visual Steer Deg | 32 | How far the front wheels turn at full lock (visual only). |
| Wheel Motion Blur | false | Off: the wheels' visible spin is capped (Max Wheel Spin Deg Per Sec) so Unreal's motion blur doesn't smear them into a messy disc. On: true spin speed. |
| Max Wheel Spin Deg Per Sec | 540 | Fastest visible wheel spin when Wheel Motion Blur is off. Lower = less blur, slower-looking spin. Physics is never affected. |
Drift | Lights
| Setting | Default | What it does |
|---|---|---|
| Headlight Offset | (215, 62, 72) | Position of the right headlight in cm (body mesh frame). The left one is mirrored. Move it into your car's lamps. |
| Headlight Aim Down | 4 | Degrees the headlights point down. |
| Underglow Offset | (0, 0, 22) | Centre of the underglow light panel (cm, body mesh frame). Keep it up under the floor. |
| Underglow Size | (220, 70) | Light panel length and width (cm). Keep it smaller than the car: the light spreads past it and fades softly. Big and low = a hard bright box on the road. |
Drift | Air Ride
| Setting | Default | What it does |
|---|---|---|
| Air Drop Cm | 7 | How far the body drops when aired out (cm). Lower it if the body clips through the wheels. |
| Air Camber Front | 6 | Front camber when aired out (degrees, tops of the wheels in). |
| Air Camber Rear | 7 | Rear camber when aired out. |
| Air Push Front | 0 | Front wheels pushed out when aired out (cm), to sit flush with the arches. |
| Air Push Rear | 1 | Rear wheels pushed out when aired out (cm). |
| Air Down Time | 1.6 | Seconds to dump the bags. |
| Air Up Time | 1.1 | Seconds to air back up. |
Drift | Paint
| Setting | Default | What it does |
|---|---|---|
| Random Color On Spawn | true | Pick a random body colour when the car spawns. |
| Random Color On Respawn | true | Also pick a new colour when the car is reset (R). |
| Paint Channels | empty | The colours players can change at runtime, one entry per part (Body, Stripes, Rims...). See Paint and colours. Empty = one body colour using Paint Parameter on every body material slot. |
| Paint Parameter | Paint Tint | Only used when Paint Channels is empty: the colour parameter in your body material (the template body uses "Paint Tint"). |
| Paint Palette | empty | Random colours are picked only from these. Empty = any bright colour, plus the odd white, black or silver. |
Drift | Engine
| Setting | Default | What it does |
|---|---|---|
| Idle RPM | 900 | Engine revs at idle (sound and rev bar). |
| Redline RPM | 7000 | Engine revs at the top of each gear (sound and rev bar). |
Reference: Assist levels
Set with Assist Level on the car or in the debug menu.
| Effect | 0 Off | 1 Normal | 2 Strong | What it means |
|---|---|---|---|---|
| Drift grip | x1 | x1.15 | x1.35 | Drifts are easier to hold. |
| Line control | off | x1 | x1.5 | Steering tightens / widens the drift line (line_control). |
| Speed kept in drifts | x1 | x0.85 | x0.7 | drift_speed_retention: assisted drifts are a little slower and calmer. |
| Angle correction | x1 | x1.2 | x1.5 | The car holds its angle more firmly (drift_angle_correction). |
| Extra high-speed steering | 0 | +15% | +35% | Less steering lost at high speed (high_speed_steer_factor). |
Reference: Drift points
Points build up while drifting (drift angle × speed) and in burnouts. Drifts linked within the combo window form a chain and grow the multiplier. When you stop drifting for longer than the combo window the chain is banked (chain × multiplier goes to the EXP system); a hard wall hit loses it.
Select the Scorer component in your car Blueprint to edit these:
| Setting | Default | What it does |
|---|---|---|
| Points Rate | 0.25 | Points per second for every (degree of drift angle x m/s of speed). Higher = more points. |
| Combo Window | 1.5 | Seconds you can be out of a drift before the chain is banked. Link drifts inside it to keep the chain going. |
| Multiplier Step Time | 2.5 | Seconds of drifting for every +1 on the multiplier. |
| Max Multiplier | 5 | Highest multiplier. |
| Crash Impact | 5 | A wall hit that takes this much speed (m/s) off the car loses the whole chain. |
| Burnout Rate | 40 | Points per second when a burnout starts... |
| Burnout Rate Max | 140 | ...rising to this... |
| Burnout Ramp | 5 | ...after this many seconds of burnout. |
Blueprint: override Get Points Per Second in a Blueprint child of DriftScorer to change how points are earned.
Reference: EXP and levels
The EXP system is the XP component on the car (DriftXPComponent). Select it in your car Blueprint's Components panel to edit every value. Banked drifts give EXP (points × XP Per Point × XP Multiplier); when the EXP in a level reaches what the level needs, the player levels up, and anything left over carries into the next level. Level, EXP, best drift score and totals are saved automatically.
How much EXP each level needs
Level n needs Base XP Per Level + (n − 1) × Extra XP Per Level. With the defaults:
| Level | 1 → 2 | 2 → 3 | 3 → 4 | 4 → 5 | 9 → 10 | Total to reach 10 |
|---|---|---|---|---|---|---|
| EXP | 1000 | 1500 | 2000 | 2500 | 5000 | 27 000 |
Your own curve: fill XP Table on the XP component. Entry 0 is the EXP for level 1 → 2, entry 1 for 2 → 3, and so on (for example 500, 800, 1200, 2000, 3500). Levels past the end of the table use the last entry plus Extra XP Per Level for each level after it. Leave it empty to use the formula above.
Settings
| Setting | Default | What it does |
|---|---|---|
| Base XP Per Level | 1000 | EXP needed to go from level 1 to level 2. |
| Extra XP Per Level | 500 | Extra EXP needed for every level after that. With the defaults: level 2 needs 1000, level 3 needs 1500, level 4 needs 2000... |
| XP Table | empty | Your own level curve: entry 0 = EXP for level 1 → 2, entry 1 = 2 → 3... Levels past the end use the last entry + Extra XP Per Level per level. Empty = the formula (Base + (level − 1) × Extra). |
| XP Per Point | 1 | EXP for every banked drift point. 0.5 = half, 2 = double. |
| XP Multiplier | 1 | Multiplies ALL EXP gained, from drifts and from Add XP (double-XP events, difficulty settings...). |
| Max Level | 0 | Highest level. 0 = no limit. At the top, EXP stops and only the lifetime totals keep growing. |
| XP From Drifts | true | Banked drifts give EXP automatically. Untick to only give EXP with your own Add XP calls (missions, races...). |
| Start Level | 1 | Level a new profile starts at (and the level Reset Profile goes back to). |
| Save Slot | DriftProfile | Save game name (Saved/SaveGames/<Save Slot>.sav). Cars with the same slot share one profile, so the player keeps their level when they change car. |
| Load On Begin Play | true | Load the profile when the car spawns. |
| Auto Save | true | Save after every EXP gain. Untick to save only when you call Save Profile. |
Values you can read
| Variable | What it is |
|---|---|
| Level | Current level. |
| XP | EXP inside the current level (towards the next one). |
| Best Combo | Best banked drift score. |
| Lifetime Points | Every banked drift point ever. |
| Total XP Earned | Every EXP ever earned. |
Functions
| Function | What it does |
|---|---|
| Add XP (Amount, bApplyMultiplier) | Give EXP from anything: missions, races, pickups. Levels up as needed. Tick bApplyMultiplier to use XP Multiplier. |
| Add Combo (Points) | Same as a banked drift: updates the best score and lifetime points and gives Points x XP Per Point EXP. |
| Set Level (NewLevel) | Jump to a level (EXP in it goes back to 0). Doesn't fire On Level Up. |
| Set XP (NewXP) | Set the EXP inside the current level (levels up if it's enough). |
| Set Best Combo (NewBest) | Change the best drift score. |
| Get XP To Next Level (ForLevel) | EXP needed to finish a level (from XP Table, or the formula). |
| Get Level Progress | 0 to 1 through the current level, for XP bars. |
| Get XP Remaining | EXP still needed for the next level. |
| Is Max Level | True at Max Level. |
| Save Profile / Load Profile / Reset Profile | Save, load, or go back to Start Level with 0 EXP and 0 best score (and save). |
Examples
- Give 500 EXP for finishing a race: Get the car › XP › Add XP (Amount 500).
- Double EXP weekend: set XP Multiplier to 2.
- Unlock something at level 10: bind On Level Up on the XP component and check NewLevel ≥ 10.
- A level cap of 50: set Max Level to 50 and bind On Max Level Reached.
- Separate profiles per save file: set Save Slot (for example "Profile_1") before the car spawns, or call Load Profile after changing it.
Reference: Camera
On DriftCameraManager. Make a Blueprint child and set it as the player controller's Player Camera Manager Class to change the defaults, or tweak live in the debug menu.
| Setting | Default | What it does |
|---|---|---|
| Use Drift Camera | true | Off = Unreal's normal view from the car's own Camera component. |
| Presets | 4 views | The chase views (C switches): X = distance behind, Y = height, Z = look-at height, all in cm. Defaults: (600, 220, 110), (850, 320, 100), (450, 180, 110), (1800, 1400, 0). |
| Preset | 0 | View used at the start (0 = first). |
| Follow Sharpness | 5 | How quickly the camera swings in behind the car. |
| Velocity Blend | 0.8 | 0 = the camera sits behind the nose, 1 = behind the direction of travel (shows off the drift angle). |
| Fov Base | 90 | Field of view (degrees). |
| Fov Speed Gain | 8 | Extra field of view at top speed. |
| Fov Fast Gain | 10 | Extra again when going really fast (over ~40% of top speed). |
| Fast Pull Back | 120 | How much further back the camera goes at high speed (cm). |
| Fast Drop | 40 | How much lower it goes at high speed (cm). |
| Rumble | 0.5 | Fine road buzz at high speed. 0 = off. |
| Crash Shake | 1 | Shake strength on wall hits. 0 = off. |
| Mouse Sensitivity | 0.005 | Free look speed with the mouse. |
| Stick Speed | 2.5 | Free look speed with the right stick. |
| Invert Y | false | Invert up / down in free look. |
| Orbit Min / Max Distance | 260 / 1200 | Mouse wheel zoom limits in free look (cm). |
| Orbit Look Height | 65 | Height of the point the camera orbits around (cm above the ground). |
| Photo Mode Max Speed | 3 | With the car aired out and below this speed (m/s) the free look view stays where you leave it. |
| Cycle View Key / Gamepad Key | C / B | Keys that switch views. |
| Free Look Key | Right Mouse Button | Hold to look around. |
Reference: Sound
On the car's Audio component (select it in your Blueprint). The sounds are Sound Wave assets in the plugin's Content/Audio folder, set by default on every car. To use your own, pick them in Drift | Sound | Assets (any Sound Wave or Sound Cue). The six engine loops and the two tyre sounds are looped automatically. Any slot left empty is just skipped. You're free to use the included sounds in your own games. Play One Shot plays any sound once.
| Setting | Default | What it does |
|---|---|---|
| Sound Enabled | true | All car sounds on / off. |
| Master Volume | 0.6 | Volume of everything. |
| Engine Volume | 0.8 | Engine loops. |
| Squeal Volume | 0.7 | Tyre squeal in drifts and burnouts. |
| Scrub Volume | 0.55 | Low rubber scrub at the start of a slide. |
| Shift Volume | 0.9 | Gear change clunk. |
| Blow Off Volume | 0.6 | Blow-off valve when lifting at high revs. |
| Air Volume | 0.8 | Air ride valve hiss. |
| Engine Pitch | 1 | Deeper (lower) or higher engine note. |
| Engine Low / Mid / High On | engine_*_on | Engine loops on the throttle (low, mid, high revs). Looped automatically. |
| Engine Low / Mid / High Off | engine_*_off | Engine loops off the throttle. Looped automatically. |
| Tyre Scrub / Tyre Screech | tyre_scrub / tyre_screech | Slide sounds. Looped automatically. |
| Shift Up / Shift Down | shift_up / shift_down | Gear change sounds. |
| Blow Off | blowoff | Blow-off valve. |
| Air Down / Air Up | air_down / air_up | Air ride valve hiss. |
Reference: Controller
On DriftPlayerController (make a Blueprint child and set it in your game mode to change these).
| Setting | Default | What it does |
|---|---|---|
| Steer Speed | 5 | How fast keyboard steering goes to full lock. |
| Steer Return Speed | 8 | How fast keyboard steering returns to centre. |
| Deadzone | 0.15 | Gamepad stick and trigger deadzone. |
| Debug Menu Key | X | Opens the debug menu. |
| Air Ride Key | L | Air ride on / off. |
| Headlights Key | H | Headlights on / off. |
| Underglow Key | U | Underglow on / off. |
| Back To Menu Key | Backspace | Back to the main menu (gamepad: Start). Only if Menu Map exists. |
| Menu Map | DriftHeaven_Menu | The main menu map. |
| Show Debug Text | true | Debug numbers at the bottom left (can be toggled in the debug menu). |
| Chat Key | T | Opens the chat box (Enter also opens it). Enter sends, Esc cancels. |
| Touch Controls | Auto | On-screen controls: Auto (phones / tablets, and on PC as soon as the screen is touched), Always or Never. |
| Touch Button Scale / Touch Opacity | 1 / 0.35 | Size and transparency of the on-screen controls. |
| Steering Wheel | true | Read a wheel + pedals through the Raw Input plugin. Only used once the wheel moves. |
| Wheel Steer / Throttle / Brake Axis | Generic USB Axis 1 / 2 / 3 | Which Raw Input axes the wheel and pedals use. |
| Wheel Handbrake / Shift Up / Shift Down Button | Button 1 / 5 / 6 | Wheel buttons (paddles for shifting). |
| Wheel Steer Scale | 1.5 | Steering multiplier: 2 = full lock at half the wheel's rotation. |
| Invert Wheel Steer | false | Tick if steering goes the wrong way. |
| Pedals Full Range / Invert Pedals | true / true | Most pedals report -1..1 and read 1 when released. Change these if the car accelerates on its own or the pedals do nothing. |
| Wheel Deadzone | 0.03 | Small wheel / pedal movements ignored. |
HUD: untick Draw Default HUD on a Blueprint child of DriftHUD to draw your own HUD (UMG or Event Receive Draw HUD).
Blueprint events
In your car Blueprint, select the car (Self) or a component and click + next to the event in the Details panel, or right-click in the Event Graph and search "Assign On ..." / "Bind Event to ...".
On the car
| Event | Gives you | When |
|---|---|---|
| On Drift Started / On Drift Ended | - | A drift starts / ends. |
| On Burnout Started / On Burnout Ended | - | A burnout starts / ends. |
| On Handbrake Pulled / On Handbrake Released | - | The handbrake is pulled / let go. |
| On Braking Changed | bActive | Started (true) / stopped (false) braking. |
| On Accelerating Changed | bActive | Started (true) / stopped (false) accelerating. |
| On Max Drift Score | NewBest, OldBest | A banked drift beat the player's best drift score (XP component). |
| On Gear Changed | NewGear, bUpshift | The gear changed (manual or automatic). |
| On Wall Hit | Impact | Any wall hit; Impact = speed lost in m/s. |
| On Crashed | Point, Normal, Impact | A real crash (bounce + spin): where, the wall's direction and how hard. |
| On Air Ride Changed | bAiredOut | The bags start to dump (true) or fill up (false). |
| On Headlights Changed / On Underglow Changed | bActive | Lights switched on / off. |
| On Paint Changed | Channel, Color | A paint channel's colour changed (debug menu, Set Paint Color, random paint). |
| On Setup Loaded | - | This car's saved setup was loaded (on spawn or by Load Tuning). |
| On Chat Message | Message | Chat component: a message arrived (Sender, Text, Type: Player / System / Private, Time). Use it for your own chat UI. |
| On Chat Command | Command, Args | Chat component, server: a player typed one of your Custom Commands. |
| (multiplayer) | | On other players' cars, Drift / Burnout Started / Ended, Gear Changed, Air Ride Changed, Paint Changed and the light events fire too, so effects you bind to them show for everyone. Crash and wall-hit events only fire on the driver's machine. |
Points and EXP
| Event | Gives you | When |
|---|---|---|
| On Chain Banked | Points | A drift chain was banked (Scorer component). |
| On Chain Lost | Points | A chain was lost in a crash (Scorer component). |
| On Multiplier Changed | Multiplier | The multiplier went up or reset (Scorer component). |
| On XP Gained | Gained, TotalXP | EXP was added; TotalXP = EXP now in the current level (XP component). |
| On Level Up | NewLevel | The player levelled up. Fires once per level (XP component). |
| On Max Level Reached | NewLevel | Max Level was reached (XP component). |
| On New Best Combo | NewBest, OldBest | New best drift score (XP component). |
| On Profile Loaded | - | The saved profile was loaded (XP component). |
Blueprint functions
Drag off a reference to the car and search for these. All the car's settings and state (speed, drift angle, gear, RPM, velocity...) can also be read directly as variables.
| Function | What it does |
|---|---|
| Get Speed / Get Speed Kmh / Get Speed Mph | Speed in m/s, km/h or mph. |
| Get Speed In (bMph) | km/h, or mph when bMph is ticked. |
| Get Drift Angle (bAbsolute) | Drift angle in degrees: + left-hand drift, - right-hand. Tick bAbsolute for always positive. |
| Is Drifting / Is Burnout / Is Reversing | Current state. |
| Is Braking | On the brake while rolling forward (not reversing, not a burnout). |
| Is Accelerating | On the throttle, or reversing. |
| Is Handbrake Pulled | Handbrake held. |
| Is On Floor | The car is on the ground. |
| Get Max Drift Score | The player's best banked drift score. |
| Get Ride Height / Set Ride Height | Car height in cm. |
| Get Crash Bounce / Get Crash Spin / Get Crash Scrape / Get Gravity | The tuning values. |
| Are Neons On / Are Headlights On | Light states. |
| Set Headlights / Set Underglow / Set Headlight Color / Set Underglow Color | Change the lights. |
| Set Air Ride / Toggle Air Ride / Get Air Amount | Air ride on / off; Get Air Amount = 0 at ride height, 1 fully down. |
| Set Paint Color (Channel, Color) | Change one paint channel's colour (0 = first channel). |
| Set Paint Color By Label (Label, Color) | Same, by the channel's Label ("Rims"). Returns false if no channel has that label. |
| Get Paint Color (Channel) / Get Paint Channel Count | Read the paint channels. |
| Apply Paint | Re-apply every channel's colour, for example after swapping meshes or materials. |
| Set Body Color / Randomize Body Color | Paint channel 0 (or the single body colour) / random colours for every channel with Randomize ticked. |
| Pick Random Body Color | Override in your Blueprint to choose colours your own way. |
| Set Style (Index) | 0 Drift, 1 Road Race, 2 Straight Speed. |
| Set Manual (bOn) | Manual or automatic gearbox. |
| Save Tuning / Load Tuning | Save / load this car's setup (same as the debug menu buttons). |
| Get Setup Name / Has Saved Setup / Delete Saved Setup | The name the setup is saved under, whether it has one, and delete the file. |
| Refresh Light Placement | Call after changing Headlight Offset / Aim Down or Underglow Offset / Size at runtime. |
| Respawn | Back to the start point. |
| Scorer › Bank / Reset Chain / Reset Total Score | Bank the open drift chain now, throw it away, or start the session score from 0. |
| Movement › Is On Floor / Is On Wall / Get Floor Normal | Ground and wall contact from the car's movement component. |
| Controller › Open Chat / Close Chat / Is Chat Open | The chat box. |
| Chat › Send Chat Message / Add Local Message | Send a message (or /command) as this player / show a message on this screen only. |
| Chat › Broadcast System Message (server) | A system message to every player: events, race results... |
| Chat › Reply Private / Filter Text / Announce Drift / Announce Level | Reply to one player, run the profanity filter, post an announcement. |
| Controller › Get Touch Layout / Is Touch Zone Held / Get Touch Steer | Read the on-screen controls (for your own touch UI). |
| Is Simulating Locally / Is Remote Car | Multiplayer: true / false on the machine that drives this car; another player's car is a remote car. |
| Set Input (Input) | Drive the car from a Blueprint or AI: Throttle 0-1, Brake 0-1, Steer -1..1, Handbrake, Shift. |
| Get Gear Text / Gear Count | "R", "N" or the gear number / number of gears. |
Troubleshooting
| Problem | Fix |
|---|---|
| My Blueprint changes don't show in game | A saved setup for that Car Name is loading on top. Press RESET DEFAULTS in the debug menu, change the Car Name, or delete Saved/DriftTuning/<Car Name>.json. |
| A different car (or no car) spawns | The map isn't using your drift game mode: set World Settings › GameMode Override, or see Use your car in the game. If the Outliner shows DriftCarPawn0 instead of BP_DriftCar_C_0 while playing, a DriftGameInstance with Force Drift Game Mode ticked is overriding the map: untick it or set its Drift Game Mode Class to your Blueprint game mode. |
| The car is invisible | The game mode spawns the plain C++ DriftCarPawn. Set Default Pawn Class to BP_DriftCar or your own Blueprint car. |
| The car floats or sinks | Change Body Offset Z, and make Box Size Z / Wheel Positions Z match your mesh. |
| Rims face into the car | Swap Left Wheel Yaw / Right Wheel Yaw between 0 and 180. |
| Wheels spin too fast or too slow | Set Wheel Radius Cm to your wheel's real radius. |
| The body clips through the wheels when aired out | Lower Air Drop Cm, or push the wheels out with Air Push Front / Rear. |
| Paint does nothing | The material has no colour parameter, or the names don't match: check the channel's Material Slots and Color Parameter (see Paint & colours). |
| No sound | Select the car's Audio component: check Sound Enabled and that the sounds are set under Drift | Sound | Assets. Check the volumes in the main menu SETTINGS › AUDIO. |
| The underglow is a hard, white box | Lower underglow_intensity (around 100 - 200) and keep Underglow Size smaller than the car, Underglow Offset Z around 20. |
| Wheels look smeared at speed | Untick Wheel Motion Blur, or lower Max Wheel Spin Deg Per Sec. |
| Mouse look too fast / slow | Debug menu › CAMERA › mouse_sensitivity. |
| Other players' cars stutter | Raise Net Interp Delay on the car Blueprint (0.15 - 0.2). |
| Players spawn inside each other | Place one Player Start per player in the map. |
| The steering wheel does nothing | Xbox-mode wheels work as a gamepad. For other wheels enable the Raw Input plugin and add the wheel's Vendor / Product ID in Project Settings › Raw Input, then turn the wheel once in game. |
Drift Heaven v2.0 · Unreal Engine 5.7 / 5.8 · © 2026 ZEXP