Transportation planning and traffic simulation software for creating cities friendlier to walking, biking, and public transit
Go to file
Dustin Carlino b7f3f2113b Start refactoring a common UI pattern: recalculate some value only when (#406)
Start refactoring a common UI pattern: recalculate some value only when
a key changes.

It's quite verbose right now for some widgetry States to determine if
the mouse is over a particular type of object, check if that object has
changed since the last time, and calculate something based on it. This
introduces a new helper for expressing the pattern a little more
clearly.
2020-11-25 12:22:11 -08:00
.github/workflows Move game/helpers into game/common. And fix github rustdoc workflow 2020-11-23 23:39:55 -08:00
abstutil Display a simple count of amenities reachable from a building. #393 2020-11-21 11:11:57 -08:00
book Split out the 15min tool to its own crate. 2020-11-23 17:58:32 -08:00
collisions Display tooltips in the collision viewer. #87 2020-11-10 12:49:08 -08:00
convert_osm Infer parking tags better for dual_carriageway=yes. Also stop inferring parking on trunk roads like Aurora. And pull in fresh Seattle OSM, with lots of dual_carriageways tagged. #230 2020-11-14 17:32:34 -08:00
data Fix a bug with TripManager's spawn_ped -- it wasn't actually cancelling trips when pedestrians don't have a path for the second leg of their trip. #258 2020-11-25 10:34:53 -08:00
experiment Start refactoring a common UI pattern: recalculate some value only when (#406) 2020-11-25 12:22:11 -08:00
fifteen_min Start refactoring a common UI pattern: recalculate some value only when (#406) 2020-11-25 12:22:11 -08:00
game Stop doing custom stuff to spawn scenarios in the tutorial. Integrate 2020-11-25 12:15:22 -08:00
geom Experiment with winit key handling. And attempt [rebuild] [release] again 2020-11-22 12:56:22 -08:00
headless Plumb the intended TripMode for cancelled trips; instead make the trip duration optional. Breaking change for anyone using the API. Makes way more sense. [rebuild] [release] 2020-11-22 11:21:44 -08:00
importer Expanding the boundary of huge_seattle, and creating a new north_seattle map 2020-11-25 08:56:55 -08:00
kml Upgrade a bunch of dependencies 2020-11-11 12:02:53 -08:00
map_editor Don't specify a widgetry backend by default; force every user to set the feature explicitly. 2020-11-22 18:35:03 -08:00
map_gui Start refactoring a common UI pattern: recalculate some value only when (#406) 2020-11-25 12:22:11 -08:00
map_model Remove the unused total_lanes from Path 2020-11-25 11:21:15 -08:00
osm_viewer Tiny refactor: Drawable::empty(ctx) 2020-11-25 11:19:26 -08:00
parking_mapper Cleanup from the great app split: 2020-11-23 17:58:32 -08:00
release Put the headless API server in the binary release; at least one person wants to use it, but has trouble compiling [rebuild] 2020-11-12 10:01:45 -08:00
sim Fix a bug with TripManager's spawn_ped -- it wasn't actually cancelling trips when pedestrians don't have a path for the second leg of their trip. #258 2020-11-25 10:34:53 -08:00
tests Remove PersonID from Scenario; the simulation will assign IDs sequentially. They're redundant. #258 2020-11-18 14:13:25 -08:00
traffic_seitan Plumb the intended TripMode for cancelled trips; instead make the trip duration optional. Breaking change for anyone using the API. Makes way more sense. [rebuild] [release] 2020-11-22 11:21:44 -08:00
updater Downgrade tokio. aa966d7533 broke headless and updater. Blocked on https://github.com/seanmonstar/reqwest/issues/1060 2020-11-12 10:31:52 -08:00
widgetry Tiny refactor: Drawable::empty(ctx) 2020-11-25 11:19:26 -08:00
widgetry_demo Don't specify a widgetry backend by default; force every user to set the feature explicitly. 2020-11-22 18:35:03 -08:00
.gitignore Import Paris, for helping the OSM community visualize all the awesome pop-up bike lanes there 2020-11-13 17:23:36 -08:00
Cargo.lock Add some basic functionality to the mysterious experiment 2020-11-24 16:33:29 -08:00
Cargo.toml Split out the 15min tool to its own crate. 2020-11-23 17:58:32 -08:00
clippy.sh round of clippy. not fixing everything. 2019-12-11 16:17:15 -08:00
format_md.sh Fix more broken links. Sadly can't enable linkcheck, because it has two false positives. 2020-09-24 19:37:16 -07:00
import.sh util to convert geojson to osmosis polygon (#309) 2020-09-02 15:29:25 -07:00
LICENSE Initial import of A/B Street prototype. 2018-03-13 08:06:03 -07:00
README.md new release 2020-11-22 13:41:58 -08:00
rgrep.sh Set up a test scenario for lane-changing to reproduce #382. The same 2020-11-11 11:33:47 -08:00
rustfmt.toml tweaking rustfmt options; the long literal string vecs in tutorial look awful 2020-01-21 15:20:02 -08:00

A/B Street

Ever been stuck in traffic on a bus, wondering why is there legal street parking instead of a dedicated 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.

Show, don't tell

Alpha release trailer

Find a problem:

exploring_traffic

Make some changes:

editing_map

Measure the effects:

evaluating_impacts

Documentation

Roadmap and contributing

See the roadmap for current work, including ways to help. If you want to bring this to your city or if you're skilled in design, traffic simulation, data visualization, or civic/government outreach, please contact Dustin Carlino at dabreegster@gmail.com. Follow r/abstreet for weekly updates or @CarlinoDustin for occasional videos of recent progress.

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 be highly accessible, by being a fun, engaging game. See here for more guiding principles.

Credits

Core team:

Others:

Data: