RLS Studios
ProjectsPatreonCommunityDocsAbout
Join Patreon
BeamNG Modding Docs

Guides

Reference

server/commands - Camera & Input Commandsge_utils - Game Engine Utility Functionsmain.lua - GE Lua Entry Point & Game Loopmap.lua - Navigation Graph (AI Road Map)screenshot.lua - Screenshot Systemserver/server - Level Loading & Game ServerserverConnection - Client-Server Connection Manager`setSpawnpoint` - Default Spawn Point Persistence`simTimeAuthority` - Simulation Time & Bullet Time Control`spawn` - Vehicle Spawning & Safe Placement`suspensionFrequencyTester` - Suspension Natural Frequency Analysis
Activity ManagerAudio Bank ManagerAudio Ribbon SystemBus Route ManagerCamera SystemCore Chat (IRC)Core CheckpointsCore Command HandlerCoupler Camera ModifierDevices (RGB Peripherals)Dynamic PropsEnvironmentFlowgraph ManagerForestFun StuffGame ContextGame StateGround Marker ArrowsGround MarkersHardware InfoHighscoresHotlappingInventoryJob SystemLap TimesLevelsLoad Map CommandMetricsMod ManagerMultiseatMultiseat CameraMulti SpawnOnlinePaths (Camera Paths)Quick Access (Radial Menu)Recovery PromptRemote ControllerReplayRepositoryRope Visual TestScheme Command ServerCore SnapshotCore SoundsCore TerrainTraffic SignalsTrailer RespawnVehicle Active PoolingVehicle Bridge (GE ↔ VLua Communication)Vehicle MirrorsVehicle PaintsCore VehiclesVehicle TriggersVersion UpdateWeather SystemWindows Console

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 Extensionscore

Traffic Signals

Comprehensive traffic signal system with instances, controllers, sequences, and intersection management.

Comprehensive traffic signal system with instances, controllers, sequences, and intersection management.


Overview

Extension: core_trafficSignals - A full traffic signal simulation (V2). Manages signal instances (individual lights/signs), controllers (state machines), and sequences (phased timelines for intersections). Signals are linked to map nodes for AI path-planning, supports serialization, debug drawing, and runtime state overrides.


Public Functions

FunctionDescription
M.newSignal(data)Creates a new SignalInstance
M.newController(data)Creates a new SignalController
M.newSequence(data)Creates a new SignalSequence
M.getSignals()Returns array of all signal instances
M.getSignalByName(name)Returns signal instance by name
M.getControllers()Returns array of all controllers
M.getControllerByName(name)Returns controller by name
M.getSequences()Returns array of all sequences
M.getSequenceByName(name)Returns sequence by name
M.getElementById(id)Returns any element by unique ID
M.getControllerDefinitions()Returns signal states/types definitions
M.setControllerDefinitions(data)Merges custom states/types into definitions
M.resetControllerDefinitions()Resets definitions to defaults from JSON
M.getMapNodeSignals()Returns dict mapping map nodes to signal data
M.getTimer()Returns elapsed signal timer
M.getData(full)Returns full module state
M.loadSignals(filePath)Loads signals from JSON (default: signals.json in level dir)
M.setupSignals(data, merge)Processes and enables signals; optionally merge
M.resetSignals()Clears all signal data
M.loadControllerDefinitions(filePath)Loads custom controller definitions
M.setupSignalObjects()Caches TSStatic objects linked to signals
M.setActive(val, autoRun)Enables/disables the signal timer
M.resetTimer()Resets timer and reactivates sequences
M.setTimer(val)Directly sets the timer value
M.setLightsManual(id, stateArray)Directly sets object light states

Architecture

SignalInstance

Individual signal position + direction, linked to a controller and optional sequence.

Key methods: setLights(), setStrictState(), setActive(), getState(), getStateAfterTime(), getBestRoad(), getVehPlacement(), isVehAfterSignal(), drawDebug(), include(), exclude()

SignalController

State machine defining signal phases (e.g. green→yellow→red). Reusable across instances.

Key methods: applyDefinition(type), getStateData(state), calcDuration(), autoSetTimings(), include(), exclude()

SignalSequence

Phased timeline assigning controllers to phases. Manages intersection timing.

Key methods: createPhase(), deletePhase(), calcDuration(), setStep(), setPhase(), advance(), setStrictState(), setActive(), enableTimer(), include(), exclude()


Module State

VariableTypeDefault
getSignalsDictfunctionnop

Usage Examples

-- Load signals for current level
core_trafficSignals.loadSignals()

-- Create a custom signal
local signal = core_trafficSignals.newSignal({name = 'myLight', pos = vec3(100, 200, 0)})
signal:setup()
signal:include()

-- Query signal state
local state, data = signal:getState()
-- state = 'greenTrafficLight', data = {lights = {'black','black','green'}, ...}

-- Check if vehicle passed signal
local passed, placement = signal:isVehAfterSignal(vehId)

Hooks

HookWhen
onTrafficSignalUpdateSignal states updated (per-frame batch)
M.onNavgraphReloadedCalled on NavgraphReloaded event
M.onUpdateCalled on Update event
M.onClientStartMissionCalled on ClientStartMission event
M.onClientEndMissionCalled on ClientEndMission event
M.onSerializeCalled on Serialize event
M.onDeserializedCalled on Deserialized event

Module Properties

PropertyDefaultDescription
M.useDtRealfalseUse real time instead of sim time
M.debugLevel00=off, 1=shapes, 2=shapes+text
M.getSignalsDict()Returns the signals dictionary (nop/stub).

See Also

  • Globals - Map and scenetree access

Core Terrain

Provides terrain queries: height, normal, and smooth normal lookups.

Trailer Respawn

Manages trailer attachment tracking, respawn placement, and vehicle train queries.

On this page

OverviewPublic FunctionsArchitectureSignalInstanceSignalControllerSignalSequenceModule StateUsage ExamplesHooksModule PropertiesSee Also