VOSAN Logo
Apps & Tools

Traffic Underground

JWL
JWL
Published on Mar 16, 2026 Updated on Sep 15, 2026
/
advanced offline traffic simulation suite

included apps:
- Underground Traffic Tool
- Underground Traffic Score
- Underground Traffic Radar
- Underground Pedestrian Phone

features:
- high-performance optimized traffic/pedestrians simulation
- 100+ community traffic cars supported
- 10+ pedestrian models supported
- 20+ tracked performance stats
- legacy support for traffic/pedestrian configs
- fully customizable traffic
- AI traffic cars with advanced pathing
- dynamic police chases
- traffic sfx
- traffic headlights/taillights
- traffic license plate generator with styles
- traffic collision deformation
- traffic radar
- traffic replays with full filesave support
- 3D traffic/pedestrian editor
- car list editor
- modern scoreHUD with fluid animations
- pedestrian player mode
- carnage mode

traffic cars:
- context-aware AI traffic behavior
- traffic lighting system for headlights and taillights
- realistic engine sounds and horn audio
- lightweight deformation system to simulate damage

traffic replay:
- supports traffic cars, pedestrian player, score, and more
- supports crashes in replay
- records up to 150 cars for 20 minutes
- integration with CM replay viewer, view replays from file
- automatically saves replay to file
- automatically loads appropriate cars needed for playback

carlist editor:
- edit/create carlists in-game
- add cars from master list
- filter/sort/search for cars
- enable/disable cars on lists
- modify chances for cars on lists

lane editor:
- add lanes/intersections/areas
- undo/redo up to 100 actions
- split traffic lanes at any lane point into separate lanes
- merge traffic lanes at start/end into one lane
- extend traffic lanes from start or end
- all shape segments are highlighted on hover
- toggle rendering of lanes, areas, intersections
- customizable render distance for all 3D shapes
- custom text scaling for 3D debug text

pedestrian editor:
- add waypoints for moving pedestrians
- add staypoints for static pedestrians
- undo/redo up to 100 actions
- pedestrian paths auto-bake and auto-orient to surface
- toggle rendering of waypoints
- customizable render distance for all 3D shapes
- custom text scaling for 3D debug text
Version 3.6

August 27, 2026

v1.6.2
- fixed lane disappearing in editor after reversing lane direction
Version 3.5

August 27, 2026

v1.6.1
- fixed encoding of traffic.json/pedestrian.json
- fixed player car heroshot being taken in tunnel/with doors open
Version 3.4

August 27, 2026

v1.6.0
- added 3-star wanted system for police chases --- each star represents 1 police car, helicopter will spawn in after 3 stars
- display real car heroshot in scorebox
- fixed crash due to edge case when police (or any other cars) switch lanes near end of lane
- fixed lua minification process for full compatibility with CSP's lua preprocessor; this fixes any errors/crashes due to the release packaging process
- fixed police convoy system
- fixed UI animations related to police system
- increased distance before convoy police join the chase
- reverted back to using regular JSON format for traffic.json/pedestrian.json; while it's technically slower, it's a more accessible format and maintains compatibility with the stock csp traffic tool
- updated about page/version check
Version 3.3

June 21, 2026

v1.5.4
- fix crash when snapping lane points in Editor due to incorrect function call
Version 3.2

June 20, 2026

v1.5.3

- changed mod folder name to TrafficUnderground to avoid conflicts with other traffic mods
- the installation process will automatically migrate old data folders (if it is from TrafficUnderground)
- installer will now automatically disable any TrafficTool app folder
- to avoid confusions, I will now be providing the full release files here instead of a proxy link for latest release
Version 3.1

June 18, 2026

v1.5.2

General:
- add [RIGHT-CLICK] to pin app window to Radar, ScoreHUD, and Pedestrian Phone
- hide API input from Stats
- optimize ScoreHUD window from resizing / updating layout every frame

Police Chases:
- fix PIT maneuver movement not abiding by speed
- fix PIT maneuver not transitioning to STRIKE
- fix PIT maneuver infinitely chasing cursor
- reset pressure timer when PIT maneuver is active
- cancel PIT approach if wall is detected
- make speed handling during PIT more aggressive
- improve PIT strike handling, angle, and position
- add intense particle effects when busted by police
Version 3.0

June 16, 2026

v1.5.1

Traffic:
- fix car deformation with wheel meshes being applied the same as the body
- add toggle for Car SFX
- add new Audio tab with separate settings for each sound
- add new carnage mode

Radar:
- fix incorrect car colors due to caching
- fix uv coordinates (textures) for traffic cars
- fix camera up direction so that the camera does not for example, flip when the car does
- increase quality of radar textures/shaders
- add brand new look to radar
- add antialiasing
- add new style / quality settings
- add button to easily make radar a perfect square
- add freecam support to radar; you can now see the cars on the radar when moving out in freecam
- remove hide when no cars are nearby option

Car Definitions/Traffic Megapack:
- add fixed version of mtn_victoria_police, which fixes structure of 3D file so that things like deformation work properly
- add collider for helicopter; it is not used for anything yet
- update definitions for mtn_victoria_police and helicopter

Police Chases:
- fix PIT initiate distance
- fix PIT cooldown timer
- fix target speed during PIT
- fix collision handling from PIT
- fix physics override not resetting after PIT collision
- update physics override to make PIT spin more dramatic
- add new PIT maneuver system
- increase aggressiveness of police significantly

Pedestrian Player:
- fix pedestrian player being visible too early when spawning
- fix initial look direction when getting out of car as pedestrian

ScoreHUD:
- reduce decimal places for distance score texts to 2
- remove redundant -100% pts from Crash scoretext
Version 2.9

June 11, 2026

v1.5.0

- fix crash when loading replay from file due to pedestrian physics
- fix crash in replay mode caused by helicopter not having target
- fix crash due to pedestrian blood pools after pedestrian simulation is refreshed / fix initialization of blood pools
- fix animation for staypoint pedestrians being forced to idle after recovering from crash
- fix animations getting stuck in scorehud due to rare edge case where the animation reached its target value before its duration had progressed
- fix plate style dropdown selector
- fix custom color radar setting not saving
- fix detailed car textures for radars / fix car image being taken when not visible
- add stock police car (mtn_victoria_police) to all car lists
Version 2.8

May 21, 2026

v1.4.9
- fix initial car phasing due to car spawning by throttling spawn speed when spawning close to another car
- fix some distance functions/callback stuff which fixes certain edge case distance errors
- fix distance checking for cars waiting at intersection, fixing car phasing between cars at intersection entrance and cars approaching entrance
- fix resetting collision state/gforce on collision callback instead of waiting for collision event to fully end
Version 2.7

May 19, 2026

v1.4.8

Traffic:
- fix traffic replay saving when replay mode is disabled
- fix distanceFree() early-exit calculations
- fix cars overlapping when car in front is waiting at entrance to intersection
- automatically create flow-through intersections based on entry/exits and lane roles instead of speed
- reduce starting speeds for main/highway lanes to 69% of speed limit
- reduce turn penalty for lane change maneuver if flowthrough
- reduce turn penalty for intersection maneuvers if flowthrough

Editor:
- fix focus for Lanes; will now teleport to the midpoint in a lane instead of aabb center
- select item when focus is used for lanes, intersections, areas, staypoints, waypoints
- add legacy export to export JSON file compatible with csp-traffic-tool

Pedestrians:
- add 5% chance for pedestrian to scream
- add pedestrian squash sound when running over incapacitated pedestrian
- add much bigger blood mist when running over incapacitated pedestrian
- increase sfx audio range to 50m
Version 2.6

May 18, 2026

v1.4.7
- fix backwards compatibility with pedestrian files from other mods / old JSON format
Version 2.5

May 17, 2026

v1.4.6

- fix crash due to intersection priority offsets
- fix pedestrians not spawning/despawning with pedestrian density slider; pedestrians will now spawn/despawn without need to refresh pedestrian simulation
- fix crashes due to missing pedestrian animations; animations are no longer required for any part of the pedestrian mod, including physics
Version 2.4

May 17, 2026

v1.4.5
- fix anim path error for pedestrianPlayer replay
Version 2.3

May 16, 2026

v1.4.4

Pedestrians:
- add alien model
- add stormtrooper model
- add pedestrian physics system (randomized)
- add bloodpaint system (randomized)
- add bloodpool system (randomized)
- add various animations to ALL pedestrians
- add sfx (screams) dependent on impact velocity
- fix pedestrian animation speeds + randomized speeds
- fix pedestrians spawning at waypoints with no paths
- fix handling of missing pedestrian animations

Pedestrian Player:
- add new footstep sounds
- sync footstep sounds with animation

Pedestrian Editor:
- allow selection of any staypoint/waypoint with [CTRL] + [CLICK]
- update UI layout
- add better select all button
- fix UI IDs for all pe
- fix empty list states

Radar:
- add pedestrians to radar

Player Car:
- fix tracking for current lane position

Traffic Cars:
- randomize position of force applied to car on collision

CarDefs/CarList:
- remove carnageMass as an option
- fix column widths in carlist UI

Traffic Replay:
- add 1.5s debounce timeout when triggering replay autosave to help avoid edge case crash where user quickly exits game as replay is saving
- fix deformation event statuses not resetting after exiting replay mode

Optimizations:
- properly empty all pools (traffic cars, physics, etc.) on refresh / simulation end to fix building up a huge pool in memory, which can occur by using lots of different cars in one session
- fix cars having their LOD model set to visible when released back to the traffic car pool, which could be seen underneath the map

Dev:
- replace all instances of 1/0 and math.huge with 1e9 in order to avoid NaN edge cases
- replace boolean soup machine for pedestrian with state machine
- split traffic cars and pedestrians into separate hash spaces for tracking (allows traffic cars and pedestrians to be easily aware of each other, though prob not worth the performance cost)
Version 2.2

May 4, 2026

v1.4.3

Pedestrian:
- add non-moving pedestrians that spawn on staypoints
- can modify direction, pedestrians, animation

Replay:
- fix game crash due to accessing c-structs too early
- fix unsigned types with negative numbers

Editor:
- fix undo/redo actions breaking on removals
- fix possible nil crash when removing lane
- fix ability to draw intersections/areas while shape is selected
- fix area extend
- fix some bugs with sliders
- fix some actions not triggering onchange/save
- fix tooltips displaying when setting is off
- save active tab for traffic editor and pedestrian editor
- add undo/redo to all actions pertaining to world editing
- remove undo/redo for all non-world actions such as UI checkboxes
- update tabs layout, unify button sizes
- add staypoints section with full editor for staypoints

Score:
- add prefix to score storage to avoid name collisions
- scores will automatically migrate, probably

Dev:
- add Array:deepClone()
Version 2.1

April 30, 2026

v1.4.2

- fix preprocessor errors / syntax crashing caused by the minification process
- the code is now minified using a custom lua minifier that I call luamino
Version 2.0

April 29, 2026

v1.4.1

Editor:
- fix back button in intersections - edit connections so that it returns to intersections tab
- fix new lane creation from left-click after initial ctrl+left-click
- fix lane recording not working outside of lane tabs / other scenarios
- fix lane recording state becoming stale and not turning on/off
- fix lane recording double points when starting recording
- fix lane recording force selection to always select chosen lane at start
- fix debugline drawing when pressing alt with selected lane
- fix lane moving to use lane direction for relative directional translations
- disable editor controls when holding right-click (useful for freecam)
- disable editor controls when recording lane
- replace lane recording keybinds with lane recording button
- add ability to start recording from any selected lane
- add display for length / number of points when lane recording
- add keyhints for recording from front of lane
- add focus feature that allows you to instantly teleport camera to any lane/intersection/area/waypoint
- add new lane moving UI with simple arrow buttons to move lane by 0.1m increments
- polish pedestrian editor UI
- polish intersection editor UI

Pedestrians:
- apply horizontal offset to pedestrian paths to create staggered pedestrians

SFX:
- fix gear shift sounds / references
- fix failure to load sfx
Version 1.9

April 28, 2026

v1.4.0

Carlist:
- fix carlist initialization
- fix carlist UI not displaying any cars in masterlist before active search input
- fix clone() class in carlist

Deformation:
- fix stutter on car crash
- remove deformation reset logic
- remove clean vertices tracking
- add more aggressive deformation with max deformation occurring at 120kmh+
- apply deformation to all meshes

Pedestrians:
- fix circular reference with pedestrian waypoints when saving file
- fix toggle all button for picking pedestrians
- fix pedestrians not being enabled after loading from file
- fix transform.look not being updated with orientation
- add new reactive panic state for pedestrians when player is near
- add new icons/buttons for editor

UI:
- fix Pure version number display in AboutUI
Version 1.8

April 21, 2026

v1.3.9

UI:
- fix white icons disappearing after save icon appeared

Pedestrians:
- fix pedestrians flipping when resetting opposite direction
- fix pedestrians moonwalking when resetting from waypoints
- slightly increase speed of orientation
- apply speed multiplier based on turn

Dev:
- refactor pedestrian system so that baked paths are created at runtime
- baked paths will no longer be saved to file
- 3D debugs for waypoint paths have been rewritten to generate path, instead of relying on baked path
- since we only need the waypoint coordinates, these generated paths will work for all existing pedestrians files
Version 1.7

April 20, 2026

v1.3.8

- fix app background set spamming in UUI
- fix conditional for lane editing
- update UI in Editor tabs
Version 1.6

April 20, 2026

v1.3.7

Editor:
- fix scrollbar in editor appearing randomly due to dangling UI element
- add snap lane points functionality for lanes, intersections, and areas that snaps lane points to the ground using raycasts | note: this is purely for the raw lane points in the editor, the trajectory that traffic cars follow will not really be affected
- fix edge case for baked paths with pedestrians when raycast does not hit
- fix lane points snapping to ground when recording lane
- fix lane not record when UI busy/mousepoint does not exist

Dev:
- fix text color when a combo button is active
- fix Array:outArray() returning regular lua tables
- optimize Array:flatten()
- refactor TrafficLightPrograms
Version 1.5

April 19, 2026

v1.3.6

Editor:
- change keybind for recording lane to [CTRL] + [CLICK]
- add ability to manually add point when recording lane with [SPACE]
- fix hints in bottom bar not displaying
- fix segment distances when recording lane with car
- fix debug line showing when lane recording is on
- fix lane recording state breaking when creating initial lane
- fix unique IDs for lanes/intersections/areas
- fix onChange calls in EditorMain
- fix nil error when creating TrafficPath
Version 1.4

April 16, 2026

v1.3.5

Traffic:
- fix LOD distance setting on initialization
- fix edge case 0 distance scores for near misses
- simplify options available in the CM mode

Pedestrians / Pedestrian Player:
- rewrite pedestrian system to a more robust architecture
- rewrite pedestrian editor to a more robust architecture
- add pedestrian density setting / slider
- add complete 3D debugging system for pedestrians / waypoints
- fix bounding spheres
- fix culling
- fix positioning
- fix idle animation lerp when starting from a different animation
- alter smoothing for run/walk animations to compensate for velocity factor, fixing the stutter when cycling animations
Version 1.3

April 15, 2026

v1.3.4
- optimize nearest lanes search for traffic cars
- fix car scanning on player car tracker
- fix lane tracker
Version 1.2

April 15, 2026

v1.3.3

Traffic Spawning
- add 10% chance to reject spawn points on lanes going opposite direction
- add 30% chance to reject spawn points behind camera
- decrease minimum spawn distance when stopped / going slow speed
- reduce minimum spawn distance when in freecam
- check for deadlocks when spawning around intersection
- spawn cars going at 95% of speed limit
- adjust spawn/despawn distances
- adjust max cars allowed to spawn per frame
- fix car despawns activing due to lane overflow
- fix cars at origin positions being considered for despawn
- fix car despawn spamming

Traffic Lanes
- add deadlock sensor
- implement precise position for starting cursor
- fix lane density calculation to be based off approximate spatial check
- fix lane overflow sensor using the fixed lane density calculation

Intersections
- add deadlock sensor
- fix greenlight mode check
- fix trajectory check

Pedestrians
- refactor/optimize density system
- adjust spawn/despawn distances
- adjust zone distances
- adjust zone densities
- fix render distance to align with user setting

Replays
- change replay to support heavy density (150 cars) for 20 minutes
- replays will not break with greater densities, but only the first 150 cars will be supported

Settings
- update despawnStoppedCars setting to support intersections/deadlocks
- toggle despawnStoppedCars to true by default
- expose tunnelAmbient setting in TrafficConfig
- add LOD slider to Main tab, activate with Show Advanced
- fix redundant hover states for tooltips in UI

Dev
- decrease raycast thrown out for tunnel sensor
- increase raycast hit threshold for tunnel sensor
- optimize car orientation math
- optimize helicopter orientation math
- optimize pedestrian orientation math
Version 1.1

April 11, 2026

v1.3.2
- fix nil errors when using pedestrian player caused by distanceToNext()
- remove leftover debug statements in LumaTracker
- add toggle for new ambient car glow fix
- disable submit button in StatsUI
Version 1.0

April 10, 2026

v1.3.1

Traffic
- fix car glow when player enters tunnels, restore car properties when player exits tunnel

Replays
- replay system now writes to / loads from replay file
- for now, supports max density (500) for ~6.5 minutes
- fix replays showing wrong car models
- replays now build their own carlist when loading replays, no need to pick correct one
- fix playback when replay has wrapped around the circular buffer
- fix data structures used in replays
- fix replay mode enter/exit events not being triggered when replay mode is disabled
- optimize data structure used for deformations in replays
- fix replay system initializing replay record when replays are disabled
- replay record will lazily initialize if toggled off -> on mid-game
- note: toggling replays from on -> off mid-game will NOT free up memory
- note: highly recommend leaving this off when no need to record

App
- fix error catching, app will no longer crash and become unusable due to errors
- fix nil crash with edit connections
- fix farSkip updating condition in TrafficCar
- change refresh button in errorui to hard refresh app

Police
- fix police collider not activating when near player
- fix police performing PIT maneuvers on traffic cars
- fix chaseDistanceSq not updating during chase, leading to police quickly giving up
- fix pitDelayTimer not working
- increase maneuver delay to 2.5-5 seconds
- for lane scoring system, add bonus to current lane
- add minimum threshold for lane score to change lanes

Dev
- remove Array:tablePrint(), because it's trash
- remove some debug statements, because I felt like it
- remove redundant conditional in TrafficCarFactory:update()
- change index system in TrafficDriver back to using file-scoped index
Version 0.9

April 6, 2026

v1.3.0
- fix traffic refresh using wrong context call
- fix fake shadows popping in before car model
- fix refresh button icon
- add LOD debug to TrafficCar
- adjust debug demon car behavior
Version 0.8

April 6, 2026

v1.2.9

editor
- auto-switch to relevant tab/item when selecting any lane/intersection/area
- fix debug cross for lane/area/intersection shapes showing up in irrelevant editor tabs
- trigger save even if autosave is off when there are no lanes and user lays first point
- fix editor/debug 3d shapes not showing when simulation speed == 0
- fix sliders in intersection - edit connections
- rename restart button -> refresh
- replace 120m distance threshold with lod distance for updating lights
- fix full models not being hidden in lod range

traffic
- use speed limit from before its altered due to curvature for detection of highspeed intersections
- scale pedestrian speed with replay playback rate during replays
- fix traffic car awareness for intersection approach, entry, trajectory, and exit
- fix inaccurate speed / wheels spinning when cars are stopped at entrance to intersection
- add priority and special conditions for police chasing at intersections
- add support for looping lanes in distancetonext() calls
- add support for looping lanes in freespace()
- fix runaway lane cursor on intersectionmaneuver
- fix pit maneuver debug to not target cursorless cars

dev
- fix/rewrite/optimize all distancetonext() calls
- add prefixes to all settings to prevent name collisions
- fix name collisions in debuglayers and trafficdebuglayers
- fix missing default value in ease()
- fix infinite initialization loop when error catching is disabled
- remove dimensions from trafficdriver
- add debug for intersectionmaneuver:shouldigo()
- add debug for trafficdriver.guide.curcursor
- add debug for trafficdriver.distancetonext
Version 0.7

April 2, 2026

v1.2.8

Traffic
- fix trackerblocking awareness for traffic cars, which fixes issues where cars in other lanes could trigger blocking states
- force local reflections on carpaint shader
- reduce glow effect on cars when in tunnels

Pedestrians
- add new pedestrian system with velocity-based smoothing
- add new pedestrianlist system
- add randomized speeds to pedestrians
- add 10+ new pedestrian models
- optimize all table lookups
- optimize all distance checks

Editor
- add undo/redo keypress hints
- add undo/redo to deletion of traffic areas
- add undo/redo to deletion of traffic intersections
- fix stale reference crashes do to undo/redo actions

Police Chases
- add new helicopter movement system
- add new police movement system (weaves through traffic)
- add new PIT maneuver system
- new police chase movement supported by new graph pathfinder
- decrease helicopter height / increase follow distance

Graph
- add new lane scoring logic for police
- add new lane-path graph with lateral connections and optimized djisktra
- add new debug for both graphs / pathfinders
- fix intersection path debug crash when selecting star/end with no nodes
- heavily optimize graph initialization and building using spatial hashing

Player Tracking
- heavily optimize lane scanning / car scanning
- remove posbuffer system as no longer needed for police chases

Dev
- Add new math utils and applyLag functions to optimize various math calls
- Add table lookup optimizations to every file
- Add new meta folder to store definitions
- Add significant table optimizations to pedestrian system
- Add tests that demonstrate effects of various lua optimizations
- Fix removal calls with Array()
- Remove unnecessary dt calculation since extrapolated movement now exists
- Remove custom GC settings as they are no longer necessary with memory optimizations
- Remove all table.forEach() calls as they proved to be much slower than regular pairs(), ipairs(), and for loops
- Remove all globals and add new context system
- Revise all function comments to adhere to the luacats structure
- Restructure police chases such that any player/traffic car can be chased
Version 0.6

March 22, 2026

v1.2.7
- optimize graphs with new heap class
- fix drawing for lane path and vertex path
- use boundingsphere radius at intersection check
- replace maxcars with density (still supports old property)
- update checks for intersection maneuver
- fix crash due to name clash with boost
- update formula for speed smoothing
- disable u-turns by default on newly created lanes
- move loop button in Editor - Lanes
- update Editor - Areas UI
Version 0.5

March 21, 2026

v1.2.6
- update graph data structures
- improve pathing algorithms and pathfinder debug
- block keypresses in editor when UI is active
- block traffic keybinds when pedestrian menu is open
- reduce segment length when recording lane with car to 10m
- fix flicker on debug 3D / editor due to floating point during scale calculation
- fix broken layers appearing under lanes in debug 3D
- fix undo/redo for splitting lanes
- fix crash when splitting lane connected as an exit to an intersection
Version 0.4

March 20, 2026

v1.2.5
- implement own graph structures (no more need for /lib folder)
- improve pathfinder debug to start / stop at points correctly and show intersection traversal
- refactor and unify all debug colors
- fully implement distance culling for all of Debug 3D
- add new scaling formula for debug text
- add hard restart button to debug menu
Version 0.3

March 19, 2026

v1.2.4
- fix error when splitting an exit lane after intersection
- add setting to control render distance of Debug 3D shapes
- add pathfinding debug to showcase pathfinding algorithms between 2 points
- major refactor of pedestrian system; no longer tied to the editor
- refactored all func/var names that were prefixed with _ and replaced with private syntax
Version 0.2

March 19, 2026

v1.2.3
- added new lane exporter (.ai)
- added new lane importer (.obj)
- added new stats window UI
- added new settings window UI
- added tooltips to new car list UI buttons
- added quick save button to car list UI
- fixed column widths in car list UI
- added unique IDs to all custom buttons to prevent any state issues
- highlight traffic density buttons as selected when exact density number is set
- hide scrollbar tracks in windows
- add file extension to the filename in the new custom file dialogs
- added lots of logic and polish to the UI framework
Version 0.1

March 17, 2026

- fix intersection error due to speed going negative and car leaves intersection curve
- update traffic car speed clamping
- add loading spinner to version check
- show download button if version is out of date
- add toast notifications to save actions
- improve UI button rendering / functionality
- convert all reset -> modal buttons into hold down -> fill progress buttons
- fix column widths in carlist ui
- add column headers in carlist ui to select/deselect all, sort alphabetically, reset all chances, remove all
Aelsakka
Aelsakka Buyer 5 months ago

I love the new lane editor features, the spawning system is nice , i have made it more dense with some tweaks

/

Share this post

Or copy link

Join the Community

Unlock the full potential of VOSAN with a free account.

User Profile

Your personalized drift identity.

Less ads

Enjoy a cleaner experience as a member.

Access the VOSAN Feed

See what's happening in the community.

Favorite Mods

Save your favorite mods to find them easily.

Leave Feedback

Rate and comment on your favorite creations.

Sign Up for Free
Already have an account? Login