Skip to content
A traffic simulation game exploring how small changes to roads affect cyclists, transit users, pedestrians, and drivers.
Rust Other
  1. Rust 99.1%
  2. Other 0.9%
Branch: master
Clone or download
Pull request Compare This branch is 2988 commits ahead, 1 commit behind google:master.
dabreegster click to toggle signal priority and stop signs. key didnt make sense,…
… because no way to open an info panel for those objects
Latest commit 9c879ab Dec 13, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
abstutil add some logging to debug #19 Dec 12, 2019
convert_osm make Timer methods and ModalMenu take &str or String Dec 12, 2019
data Check in the first manifest for data/system/, after fixing a Dec 13, 2019
docs remove some debug functions from UI, document them in dev guide Dec 11, 2019
ezgui invert the default for text background. none by default, should be an… Dec 13, 2019
game click to toggle signal priority and stop signs. key didnt make sense,… Dec 13, 2019
geom limit precision on ScreenDims. should fix #18 Dec 12, 2019
gtfs upgrade rand, get rid of now unneeded serde1 feature, in hopes of fix… Aug 15, 2019
headless also group raw_maps in data/input Dec 3, 2019
kml remove old census popdat stuff Dec 3, 2019
map_editor invert the default for text background. none by default, should be an… Dec 13, 2019
map_model only need to prebake once per map+scenario Dec 13, 2019
popdat make Timer methods and ModalMenu take &str or String Dec 12, 2019
precompute make Timer methods and ModalMenu take &str or String Dec 12, 2019
release add version number to release dirs and zips Dec 13, 2019
sim moving some debug info from the info panel to the console log Dec 13, 2019
tests group data/input/osm Dec 3, 2019
.gitignore hack in a second scenario on a synthetic map, just to start to figure… Dec 6, 2019
Cargo.toml goodbye, fix_map_geom. rename synthetic crate to map_editor Sep 23, 2019
LICENSE Initial import of A/B Street prototype. Mar 13, 2018 update the front page videos Dec 6, 2019 rename the main editor crate to game -- map editing is just a tiny pi… Sep 7, 2019 round of clippy. not fixing everything. Dec 12, 2019 revive the other transit test Nov 26, 2018 adding a new hint for extra turn restrictions Aug 6, 2019 fix small bug in import script, and skip over bad polylines in Dec 4, 2019 finally grouping system data too. forgot some data/input things... Dec 3, 2019 get halloween working with small lines. refactor a Line::maybe_new. Feb 1, 2019

A/B Street

Ever been on a bus stuck in traffic, wondering why there are cars parked on the road instead of a bus lane? A/B Street is a game exploring how small changes to a city affect the movement of drivers, cyclists, transit users, and pedestrians.

Play A/B Street on Windows, Mac, Linux

Removing dedicated left-turn phases from a traffic signal:


Watching the Mercer backup start at 4am:


Documentation for developers


  • The map
    • A detailed rendering of Seattle from OpenStreetMap and King County GIS data, including sidewalks, on-street parking, bike lanes, bus-only lanes, turn lanes, buildings, and bus stops.
    • Intersections governed by stop signs and traffic signals, with default signal timings heuristically inferred. Hand-tuned geometry to reasonably model Seattle's strangest intersections.
    • You can adjust lane types, stop signs, and traffic signals, and reverse lanes.
  • The traffic
    • Individual cars, buses, bikes, and pedestrians move through the map.
    • Most trips are multi-modal -- for example, a pedestrian exits a building, walks a few blocks over to their parked car, drives somewhere, looks for parking, and walks to their final destination.
    • A realistic set of trips -- how many people go from building 1 to building 2 at some time using some form of transport -- based on PSRC's Soundcast model.
  • The gameplay
    • Start in sandbox mode, exploring the map, watching traffic patterns, following individual agents, looking for problems.
    • Jump to edit mode, where you can convert some on-street parking to bus lanes and adjust traffic signals to try to fix some problem.
    • Try your change in A/B test mode, running two traffic simulations side-by-side. Explore how individual agents finish their trips faster or slower, and compare aggregate results about different groups of traffic.
    • Attempt a predefined challenge with particular objectives, like speeding up certain bus routes or designing a full bike network.


Aiming for a first playable release in January 2020. After that:

  • Model more things: light rail, shared bike/walking paths, ridesharing, utility functions for different groups
  • Improve map and demand data quality
  • Continue polishing the UI and improving data visualization
  • More challenges and exploring radical new ideas (like Madrid superblocks)
  • Expand to other cities
  • Implement a web version

Project mission

If you fix some traffic problem while playing A/B Street, my ultimate goal is for your changes to become a real proposal for adjusting Seattle's infrastructure. A/B Street is of course a game, using a simplified approach to traffic modeling, so city governments still have to evaluate proposals using their existing methods. A/B Street is intended as a conversation starter and tool to communicate ideas with interactive visualizations.

Why not leave city planning to professionals? People are local experts on the small slice of the city they interact with daily -- the one left turn lane that always backs up or a certain set of poorly timed walk signals. Laura Adler writes:

"Only with simple, accessible simulation programs can citizens become active generators of their own urban visions, not just passive recipients of options laid out by government officials."

Existing urban planning software is either proprietary or hard to use. A/B Street strives to set the accessibility bar high, by being a fun, engaging game.



Help always needed! If you want to bring this to your city or if you're skilled in graphic or user experience, traffic simulation, data visualization, or civic/government outreach, please contact Dustin Carlino at or post at r/abstreet. I also welcome any contributions on Patreon.

You can’t perform that action at this time.