clean up and compact the old TODO files

This commit is contained in:
Dustin Carlino 2020-07-07 10:09:13 -07:00
parent 46b340728f
commit d40de898b8
7 changed files with 144 additions and 286 deletions

View File

@ -1,27 +0,0 @@
# TODO - Extra side-projects
## Themed rendering
- halloween, winter, jungle, 8bit, organic (deform buildings), floorplan,
machine (make buildings pump along front paths)
## Halloween visual demo
- cars with headlights
- pumpkins
- fences / bushes / features in houses or triangulation on a block with buildings
- buildings as rooms in a hotel
- silent hill soundtrack
- deformed buildings pulsing on front path springs
- lighting?
- fog effects
- in 3D, what if roads are sunken rivers and buildings giant skyscrapers?
- eyes on the houses, that blink
- trick-or-treaters wandering around
## Conga line idea
- try constructive approach for snake idea
- with interactive mode?
- try destructive approach for snake idea
- with interactive mode?

View File

@ -1,33 +0,0 @@
# TODO - Core gameplay
- Example use cases
- montlake/520 turn restrictions with pedestrian scramble
- need intersection merging before this is understandable
- close interior neighborhoods to most cars (except for src/dst), see how traffic restricted to arterials would work
- puzzle: with only X miles of retained road, where would you leave them? what roads would go away?
- parking garages on the edges of neighborhoods?
- create a bike network with minimal hills, dedicated roads, minimal crossings
- charm
- name agents, with some good names scattered in (Dustin Carlino, Dustin Bikelino, Dustin Buslino...)
- music / sound effects
- as you zoom in, overhear conversations and such
- some buildings could have extra detail
- zoom in too much, what might you see? ;)
- loading screen: snakey cars
- game intro/backstory: history of seattle urban planning
- player context: a drone. people will look up eventually.
## Tutorial
- parking vs bus tutorial level
- big vertical road. some neighborhoods off to the side. everyone trying to go north or south. one driving, one parking lane. a bus that makes a loop. some horizontal roads connected to borders that force the vertical road to not be fast. just make a dedicated bus lane! oops, except some of the bus stops are at narrow places, so traffic has to slow down anyway for the bus. maybe there's a bypass road through a neighborhood?
- introduce elements gradually... fix a silly traffic signal with just cars, then add peds and bikes...
- spawn cars somewhere
- run sim, pause, change speed, reset
## More things to simulate
- Light rail and downtown bus tunnel
- seed parked cars in neighborhood with no owner or a far-away owner, to model reasonable starting state
- outgoing border nodes can throttle to simulate traffic downstream

View File

@ -1,29 +0,0 @@
# TODO - Project logistics
- enable more clippy lints
- enforce consistent style (derive order, struct initialization order)
- trailer
- show common parts of routes in A/B, point of divergence
- "Two parallel universes sit at your fingertips, and with the flick of a key, you can glide between the two. Buses jumping past traffic in one world, snarly traffic jam in the other. An A/B test revealing what currently is, and what could be, compared meticulously and deterministically. A/B Street -- which world do you prefer?"
## Tooling
- play with https://github.com/glennw/thread_profiler
- and https://github.com/ferrous-systems/cargo-flamegraph
- display percentage breakdowns in Timer (need tree structure)
## Stability
- test results per git commit
- https://github.com/spotify/git-test
- way to view later
- also could be benchmarks; just arbitrary data over time
- layered invariants
- first: all the maps fully convert and display in some form; all tests pass or are disabled
- slowly hone away at problems currently with errors printed (like bad pl shift angles)
- eventually: every intersection has at least a turn, minimum lengths enforced, etc
- useful unit tests
- for a given intersection with lanes, check all the turns generated

View File

@ -1,96 +0,0 @@
# TODO - Map quality
## Boundary clipping
- some border intersections have weird OOBish geometry, or the arrows look weird
- simplify border node detection, only do it in convert_osm?
## Geometry
- bad polyline shifting remains
- from the remaining cases, looks like we need to totally remove some tight points and retry
- make polygons use the corrections too?
- bad polyline shifting causes jagged lane endings in generalized_trim_back
- car turns often clip sidewalk corners now
- draw SharedSidewalkCorners just around the ped path, not arbitrarily thick
- dont forget to draw the notches
- figure out what to do about yellow center lines
- intersections on one-ways look weird
- yellow and white lines intersect cars and turn icons and such
- who should own drawing them?
## More data
- lanes: https://data-seattlecitygis.opendata.arcgis.com/datasets/49d417979fec452981a068ca078e7070_3
- not filled out for most streets
- traffic circles: https://data-seattlecitygis.opendata.arcgis.com/datasets/717b10434d4945658355eba78b66971a_6
- https://data-seattlecitygis.opendata.arcgis.com/datasets/sidewalks
- disagrees with OSM road centers sometimes
- https://data-seattlecitygis.opendata.arcgis.com/datasets/curb-ramps
- high quality thick roads: https://seattlecitygis.maps.arcgis.com/apps/webappviewer/index.html?id=86cb6824307c4d63b8e180ebcff58ce2
- OSM has footways
- but theyre not marked everywhere
- and theyre hard to associate with roads (sometimes need to infer a planter strip)
- draw benches, bike racks
- render trees
- look for current stop sign priorities
- https://gis-kingcounty.opendata.arcgis.com/datasets/traffic-signs--sign-point/
- http://guides.lib.uw.edu/research/gis/uw-lib_data has cool stuff, but .lyr??
## Low-priority geometry issues
- if building front path intersects another building, then scrap that building.
- or wait, just require bldgs to be even closer to sidewalk first.
- need to do polygon vs polygon check!
- will need to speed it up with quadtree containing entire buildings. make sure these are easy to use.
- can we make OSM buildings with holes?
- experiment with https://docs.rs/clipping/0.1.1/clipping/gh/struct.CPolygon.html and https://github.com/21re/rust-geo-booleanop
## More problems to fix
- Disconnected map
- now that LCing model is simple...
- Impossible turns (from a far bus lane to a crazy left)
- Buildings intersecting roads, probably because bad lane inference
- when this happens, get rid of parking lanes first (one or both sides?)
- iterative process... have to redo affected roads and intersections
- we havent filtered buildings by proximity to sidewalk yet
- if we dont filter at all, we pick up some houseboats! :) should draw water...
## Map edits
- lane type can affect border intersections
- lane type can affect turn idx
- assert turns are the same
## Sim bugs/tests needed
- do bikes use bike lanes?
- test that peds will use buses organically
- make sure that we can jump to a ped on a bus and see the bus
- park/unpark needs to jump two lanes in the case of crossing a bike lane or something
- should only be able to park from the closest lane, though!
- explicit tests making cars park at 0 and max_dist, peds walk to 0 and max_dist
- lanechange rebalancing
- parking/unparking on offside of oneway
## Discrete-event sim model
- perf
- dig into individual events, still too many?
- for laggy heads, often round down and try slightly too early
## Laundry list of intersection geometry ideas
- make sure road widths are reasonable first
- SDOT dataset
- channelization
- extend all the thick roads until they poke out of stuff (except for roads continuing straight)
- play with https://github.com/w8r/polygon-offset
- https://github.com/migurski/Skeletron
- stitch together orig center line of adj roads. then do polyline shifting, which already handles angle eating?
- manually draw intersections
- montlake/520 4 traffic signal case. existing road geometry in OSM doesn't even cover everything.

View File

@ -1,39 +0,0 @@
# TODO - Refactoring
- easier way to define magic tuneable constants
- and maybe to recalculate fixedish things if they change?
## Map layer
- fixed precision math
- more careful geom types, with negative/positive cases
- also bounds?
- cant get rid of the ccw intersection check... different answer in some cases that looks bad
- maybe also the time to split into different lane types? what's similar/not between them?
- graph querying?
- rendering (and other UI/editor interactions)?
- sim state?
- Sidewalk, Parking, Street
## Sim layer
- rename Car->Vehicle?
- spawning is convoluted
- popdat trip -> Scenario SpawnTrip -> pick ped speed and make spawner's TripSpec -> create trip and schedule a Command -> last minute rewriting when executing the command
- more precise car FSM by putting scheduler pointer into carstate
## ezgui layer
- probably use f32, not f64 everywhere... but after Pt2D becomes fixed size
- undo the y inversion hacks at last!
- ezgui passes EventCtx and DrawCtx with appropriate things exposed.
- maybe move glyph ownership out of canvas entirely. dont need RefCell.
- need to pass around a NonDrawCtx very uniformly first for this to work
- canvas owning text-drawing is maybe a bit weird, at least API-wise
- hide stuff inside the ctx's? canvas and prerender shouldnt even be known outside of crate
- generic World with quadtree should have actions on objects
- loading screen
- FileWithProgress should go directly into Timer
- need to understand lifetimes
- cleanup abstutil Timer stuff generally

View File

@ -1,62 +0,0 @@
# TODO - GUI and UX
## Fix existing stuff
- if a lane could feasibly have multiple turn options but doesnt, print "ONLY"
- audit all panics
- tune text color, size, padding
- click cycle diagram to edit duration
- yellow or flashing red/yellow for yields
- text box entry: highlight char looks like replace mode; draw it btwn chars
## General ezgui stuff
- arbitrary viewports?!
- tiling wm
## New features
- collapse smaller roads/neighborhoods and just show aggregate stats about them (in/out flow, moving/blocked within)
## Better rendering
- depict residential bldg occupany size somehow
- rooftops
- https://thumbs.dreamstime.com/b/top-view-city-street-asphalt-transport-people-walking-down-sidewalk-intersecting-road-pedestrian-81034411.jpg
- https://thumbs.dreamstime.com/z/top-view-city-seamless-pattern-streets-roads-houses-cars-68652655.jpg
- general inspiration
- https://gifer.com/en/2svr
- https://www.fhwa.dot.gov/publications/research/safety/05078/images/fig6.gif
- http://gamma.cs.unc.edu/HYBRID_TRAFFIC/images/3d-topdown.jpg
- color tuning
- neutral (white or offwhite) color and make noncritical info close to
that. http://davidjohnstone.net/pages/lch-lab-colour-gradient-picker,
chroma < 50
## Performance
- it's a pity we have to redo DrawCar work for all those parked cars every tick
- show FPS or some kind of measure of lag
- sleep better in the event loop
- first make UserInput borrow state and not need to consume
- more speculative performance ideas
- specialized shaders for common shapes like circles?
- try https://docs.rs/dymod/0.1.0/dymod/ to link in a release-mode ezgui crate?
## Depicting traffic unzoomed
- strange things to depict
- cars partly straddling roads
- some lanes backed up, others moving
- peds (lots of them in one position maybe!)
- intersections (simultaneous turns, some blocked, others not)
- peds waiting for bus
- general ideas
- darked colors (contrast map bg and road)
- show min/max bounds (exact max is hard, but could calculate best-case easily)
- percentage of capacity instead of an exact, moving length
- criteria
- at low zoom, easily pinpoint where things are moving and stuck
- include all agents

144
docs/backlog.md Normal file
View File

@ -0,0 +1,144 @@
# Backlog
These are very old TODOs that aren't captured elsewhere.
## Themed rendering
- halloween, winter, jungle, 8bit, organic (deform buildings), floorplan,
machine (make buildings pump along front paths)
## Halloween visual demo
- cars with headlights
- pumpkins
- fences / bushes / features in houses or triangulation on a block with buildings
- buildings as rooms in a hotel
- silent hill soundtrack
- deformed buildings pulsing on front path springs
- lighting?
- fog effects
- in 3D, what if roads are sunken rivers and buildings giant skyscrapers?
- eyes on the houses, that blink
- trick-or-treaters wandering around
## Conga line idea
- try constructive approach for snake idea
- with interactive mode?
- try destructive approach for snake idea
- with interactive mode?
## Charm
- music / sound effects
- as you zoom in, overhear conversations and such
- some buildings could have extra detail
- zoom in too much, what might you see? ;)
- loading screen: snakey cars
- game intro/backstory: history of seattle urban planning
- player context: a drone. people will look up eventually.
## More things to simulate
- seed parked cars in neighborhood with no owner or a far-away owner, to model reasonable starting state
- outgoing border nodes can throttle to simulate traffic downstream
## Tooling
- play with https://github.com/glennw/thread_profiler
- and https://github.com/ferrous-systems/cargo-flamegraph
- display percentage breakdowns in Timer (need tree structure)
## Boundary clipping
- some border intersections have weird OOBish geometry, or the arrows look weird
- simplify border node detection, only do it in convert_osm?
## More data
- lanes: https://data-seattlecitygis.opendata.arcgis.com/datasets/49d417979fec452981a068ca078e7070_3
- not filled out for most streets
- traffic circles: https://data-seattlecitygis.opendata.arcgis.com/datasets/717b10434d4945658355eba78b66971a_6
- https://data-seattlecitygis.opendata.arcgis.com/datasets/sidewalks
- disagrees with OSM road centers sometimes
- https://data-seattlecitygis.opendata.arcgis.com/datasets/curb-ramps
- high quality thick roads: https://seattlecitygis.maps.arcgis.com/apps/webappviewer/index.html?id=86cb6824307c4d63b8e180ebcff58ce2
- render trees
- look for current stop sign priorities
- https://gis-kingcounty.opendata.arcgis.com/datasets/traffic-signs--sign-point/
- http://guides.lib.uw.edu/research/gis/uw-lib_data has cool stuff, but .lyr??
## Map edits
- lane type can affect border intersections
## Sim bugs/tests needed
- do bikes use bike lanes?
- test that peds will use buses organically
- make sure that we can jump to a ped on a bus and see the bus
- park/unpark needs to jump two lanes in the case of crossing a bike lane or something
- should only be able to park from the closest lane, though!
- explicit tests making cars park at 0 and max_dist, peds walk to 0 and max_dist
- lanechange rebalancing
- parking/unparking on offside of oneway
## Laundry list of intersection geometry ideas
- make sure road widths are reasonable first
- SDOT dataset
- channelization
- extend all the thick roads until they poke out of stuff (except for roads continuing straight)
- play with https://github.com/w8r/polygon-offset
- https://github.com/migurski/Skeletron
- stitch together orig center line of adj roads. then do polyline shifting, which already handles angle eating?
- manually draw intersections
- montlake/520 4 traffic signal case. existing road geometry in OSM doesn't even cover everything.
## Map layer
- fixed precision math
- more careful geom types, with negative/positive cases
- also bounds?
- cant get rid of the ccw intersection check... different answer in some cases that looks bad
## Sim layer
- rename Car->Vehicle?
- spawning is convoluted
- popdat trip -> Scenario SpawnTrip -> pick ped speed and make spawner's TripSpec -> create trip and schedule a Command -> last minute rewriting when executing the command
- more precise car FSM by putting scheduler pointer into carstate
## ezgui layer
- probably use f32, not f64 everywhere... but after Pt2D becomes fixed size
- undo the y inversion hacks at last!
- ezgui passes EventCtx and DrawCtx with appropriate things exposed.
- hide stuff inside the ctx's? canvas and prerender shouldnt even be known outside of crate
- loading screen
- FileWithProgress should go directly into Timer
- need to understand lifetimes
## Fix existing stuff
- if a lane could feasibly have multiple turn options but doesnt, print "ONLY"
- text box entry: highlight char looks like replace mode; draw it btwn chars
## New features
- collapse smaller roads/neighborhoods and just show aggregate stats about them (in/out flow, moving/blocked within)
## Better rendering
- depict residential bldg occupany size somehow
- rooftops
- https://thumbs.dreamstime.com/b/top-view-city-street-asphalt-transport-people-walking-down-sidewalk-intersecting-road-pedestrian-81034411.jpg
- https://thumbs.dreamstime.com/z/top-view-city-seamless-pattern-streets-roads-houses-cars-68652655.jpg
- general inspiration
- https://gifer.com/en/2svr
- https://www.fhwa.dot.gov/publications/research/safety/05078/images/fig6.gif
- http://gamma.cs.unc.edu/HYBRID_TRAFFIC/images/3d-topdown.jpg
- color tuning
- neutral (white or offwhite) color and make noncritical info close to
that. http://davidjohnstone.net/pages/lch-lab-colour-gradient-picker,
chroma < 50