RLS Studios
ProjectsPatreonCommunityDocsAbout
Join Patreon
BeamNG Modding Docs

Guides

Reference

Server CommandsGE UtilitiesGame Engine MainNavigation GraphScreenshot CaptureServerServer ConnectionSpawnpoint ManagerSimulation TimeVehicle SpawningSuspension Frequency Tester
Bus DriverDamage GoalDemolition DerbyDistance GoalDrift GoalFinish Race GoalNo-Move GoalPosition GoalQuick RaceQuick Race LoaderRace MarkersRace DebugRace Goals ManagerRace UIScenario HelperScenario EngineScenarios LoaderSpeed GoalTime Limit GoalWaypoint ActionScenario Waypoints
Attention MarkerCrawl MarkerCylinder MarkerNone MarkerOverhead MarkerRing Marker - 3D Ring Checkpoint MarkerSide Column MarkerSide Hologram MarkerSide MarkerSingle Hologram Marker

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

API ReferenceGE ExtensionsscenarioraceMarkers

Side Column Marker

The most complex race marker. Renders a full gate structure with left/right pillars, cones at ground level, tall distance columns, ground-anchoring cylinders, and a directional arrow. Uses raycasting

The most complex race marker. Renders a full gate structure with left/right pillars, cones at ground level, tall distance columns, ground-anchoring cylinders, and a directional arrow. Uses raycasting to snap to terrain.


Class API (OOP via metatable)

MethodSignatureDescription
C:init(id)Initializes all object IDs, color buffers, mode state
C:update(dt, dtSim)Per-frame: bobbing, color lerp, scale/position of 9 objects
C:setToCheckpoint(wp)Raycasts to ground, positions all elements, sets rotations
C:setMode(mode)Transitions mode, updates all object colors
C:setVisibility(v)Shows/hides all 9 TSStatic objects
C:createMarkers()Spawns all 9 objects (pillars, cones, columns, cylinders, arrow)
C:clearMarkers()Deletes all 9 objects by stored IDs
C:show()Shows the marker (sets visibility to true)
C:createObject(shapeName, objectName)Creates a TSStatic object for the marker

Spawned Objects (9 total)

ObjectShapePurpose
Left/Right Pillars_mm_gate_pillar_left/right.daeMain gate posts
Left/Right Columns_single_faded_column_rect.daeTall distance markers
Left/Right Cones_mm_gatecone.daeGround-level cones
Left/Right Cylindertrack_editor_marker.daeGround-to-cone anchors
Arrows_mm_arrow_floating.daePoints toward next waypoint

Mode Properties

ModeColor (RGB)scalarThinDescription
default{0, 0.4, 1}1.0Blue - normal checkpoint
next{0, 0, 0}0.75Black - thinner
start{0.4, 1, 0.2}1.0Green
recovery{1, 0.85, 0}1.0Yellow - recovery point
hidden{1, 1, 1}0.0White, zero scale = invisible

How It Works

  1. Ground raycasting: setToCheckpoint casts rays downward (6m up, 25m down) at left/right positions to find terrain height. Disables forest collision during raycasts.
  2. Pillar positioning: Pillars are placed halfway between ground hit and waypoint height, offset by CONE_HEIGHT (1m)
  3. Cone scaling: Cones scale vertically based on pillar offset + bobbing
  4. Cylinder anchors: Thin cylinders stretch from ground to cone position
  5. Column height: Scales with camera distance via inverseLerp(60, 180, distance) for far visibility
  6. Bobbing: All elements bob via sin(timer * freq * 2π) * amplitude
  7. Arrow direction: Points toward wp.nextPos using quatFromDir
  8. Color lerp: 0.8s transition with pillarColor (instanceColor) and pillarColor1 (instanceColor1)

Usage Example

local createMarker = require("scenario/raceMarkers/sideColumnMarker")
local marker = createMarker(1)
marker:createMarkers()
marker:setToCheckpoint({
  pos = vec3(100, 200, 50),
  radius = 8,
  normal = vec3(0, 1, 0),
  nextPos = vec3(150, 250, 50)  -- arrow points here
})
marker:setMode('default')

Key Notes

  • Default marker for the race system (race_marker.lua defaults to this)
  • Uses Engine.castRay for ground detection with forest collision disabled
  • scalarThin property allows modes to control pillar/cone thickness (hidden = 0)
  • Fade distance: columns fade between 60–120m for visibility
  • 9 TSStatic objects per marker - most resource-intensive marker type

See Also

  • Race Marker: Attention - Floating Arrow Checkpoint Marker - Related reference
  • Race Marker: Crawl Marker - Arrow + Flag + Column Checkpoint - Related reference
  • Race Marker: Cylinder - Base + Cylinder Checkpoint Marker - Related reference
  • Scenario System Guide - Guide

Ring Marker - 3D Ring Checkpoint Marker

A race checkpoint marker that renders a 3D ring (hoop) at the waypoint position. Supports normal/up orientation, scales to waypoint radius, and swaps between regular and finish ring shapes based on mo

Side Hologram Marker

A three-part checkpoint marker with a curved base, active side hologram, and a distant hologram that fades in at range. Blends between close and far representations based on camera distance.

On this page

Class API (OOP via metatable)Spawned Objects (9 total)Mode PropertiesHow It WorksUsage ExampleKey NotesSee Also