abstreet/docs/INSTRUCTIONS.md
Dustin Carlino 8722620fb0 new release
2019-12-01 15:43:39 -08:00

4.5 KiB

A/B Street Instructions

General disclaimer: This is a very rough demo. The user interface is clunky, and gameplay is not cohesively tied together yet. Please email dabreegster@gmail.com or file a Github issue if you hit problems.

Installing the game from pre-built binaries

Unzip the folder, then run play_abstreet.sh or play_abstreet.bat. On Windows, you'll probably get a warning about running software from an unknown publisher.

Playing the game

General controls:

  • Click and drag to move
  • Scroll wheel or touchpad to zoom
  • Menus should work as expected. Most actions have a keybinding.
  • You can hover over an object and right-click to see more actions.

Things to try:

  • In sandbox mode, hover over an intersection, right click, and spawn agents. Then you can start the simulation by pressing space or clicking the icon.
  • To run a realistic, full day's worth of traffic, go to sandbox mode, then "start a scenario" (hotkey s) and choose the "weekday_typical_traffic" entry. Time (shown in the top-right corner) starts at midnight. Things tend to get interesting around 6am -- use the speed controls in the top-left. Try zooming in for details, and zooming out to see an overview.
  • Go to edit mode (note this will reset the simulation). Pick a lane, right click, and change it to another type. You can also change which roads see a stop sign by right clicking the intersection, choosing to edit, hovering over a stop sign, and pressing space to toggle it. You can do the same for intersections with traffic signals.
  • Go back to the main menu and pick a challenge. Should be self-explanatory from there -- leave me feedbck if not.

For developers: Compiling from source

You will first need:

One-time setup:

  1. Download the repository: git clone https://github.com/dabreegster/abstreet.git

  2. Download all input data and build maps. Compilation times will be very slow the first time. cd abstreet; ./import.sh && ./precompute.sh --release

  3. Run the game: cd game; cargo run --release

Development tips

  • You don't need to rerun ./import.sh nd ./precompute.sh most of the time.
    • If you're just touching code in game, sim, and ezgui, you can just cargo run from game
    • If you're modifying the initial OSM data -> RawMap conversion in convert_osm, then you do need to rerun ./import.sh and precompute.sh to regenerate the map.
    • If you're modifying map_model but not the OSM -> RawMap conversion, then you can just do precompute.sh.
    • Both of those scripts can just regenerate a single map, which is much faster: ./import.sh caphill; ./precompute.sh caphill
  • Compile faster by just doing cargo run. The executable will have debug stack traces and run more slowly. You can do cargo run --release to build in optimized release mode; compilation will be slower, but the executable much faster.
  • To add some extra debug modes to the game, cargo run -- --dev or press Control+S to toggle in-game
  • All code is automatically formatted using https://github.com/rust-lang/rustfmt; please run cargo fmt before sending a PR.

Data source licensing

A/B Street binary releases contain pre-built maps that combine data from:

Other binary data bundled in: