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
August 27, 2026
- fixed lane disappearing in editor after reversing lane direction
August 27, 2026
- fixed encoding of traffic.json/pedestrian.json
- fixed player car heroshot being taken in tunnel/with doors open
August 27, 2026
- 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
June 21, 2026
- fix crash when snapping lane points in Editor due to incorrect function call
June 20, 2026
- 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
June 18, 2026
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
June 16, 2026
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
June 11, 2026
- 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
May 21, 2026
- 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
May 19, 2026
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
May 18, 2026
- fix backwards compatibility with pedestrian files from other mods / old JSON format
May 17, 2026
- 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
May 17, 2026
- fix anim path error for pedestrianPlayer replay
May 16, 2026
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)
May 4, 2026
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()
April 30, 2026
- fix preprocessor errors / syntax crashing caused by the minification process
- the code is now minified using a custom lua minifier that I call luamino
April 29, 2026
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
April 28, 2026
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
April 21, 2026
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
April 20, 2026
- fix app background set spamming in UUI
- fix conditional for lane editing
- update UI in Editor tabs
April 20, 2026
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
April 19, 2026
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
April 16, 2026
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
April 15, 2026
- optimize nearest lanes search for traffic cars
- fix car scanning on player car tracker
- fix lane tracker
April 15, 2026
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
April 11, 2026
- 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
April 10, 2026
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
April 6, 2026
- 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
April 6, 2026
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
April 2, 2026
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
March 22, 2026
- 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
March 21, 2026
- 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
March 20, 2026
- 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
March 19, 2026
- 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
March 19, 2026
- 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
March 17, 2026
- 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
I love the new lane editor features, the spawning system is nice , i have made it more dense with some tweaks