organizing TODOs... well, some of them

This commit is contained in:
Dustin Carlino 2019-01-17 21:40:47 -08:00
parent d76c0d0652
commit 317c6ecd6c
12 changed files with 157 additions and 214 deletions

View File

@ -1,4 +1,11 @@
# Halloween visual demo
# 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
@ -10,3 +17,11 @@
- 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?

23
docs/TODO_game.md Normal file
View File

@ -0,0 +1,23 @@
# TODO - Core gameplay
- parking vs bus tutorial level
- Example use cases
- montlake/520 turn restrictions with pedestrian scramble
- close interior neighborhoods to most cars (except for src/dst), see how traffic restricted to arterials would work
- create a bike network with minimal hills, dedicated roads, minimal crossings
- easter eggs
- name agents, with some good names scattered in (Dustin Carlino, Dustin Bikelino, Dustin Buslino...)
## The very detailed driving model
- different lookahead reaction times
- could see if we ever have a lookahead constraint to deaccel more than what
we're capable of. it might mask problems. but since things like
accel_to_stop_in_dist don't have a careful notion of how much time will pass,
they recommend big rates sometimes.
- no way for an agent to request a turn and ASAP have it granted. are there cases where they might slow down unnecessarily?

11
docs/TODO_logistic.md Normal file
View File

@ -0,0 +1,11 @@
# TODO - Project logistics
- enable more clippy lints
- enforce consistent style (derive order, struct initialization order)
- cross-platform builds
- document map model
- diagram of data sources and stages
- explanation of intermediate formats
- autogenerate diagrams of the data schemas
- list invariants

View File

@ -1,60 +0,0 @@
# TODO for Phase 1 (Basemap)
- huge maps
- manually mark polygon for the part of seattle to simulate
- maybe need a quadtree for sidewalk finding to actually work (slightly weird, because no render layer -- use center points only)
- look into all the warnings (trim failing, no driving lane for buses, duplicate turns)
- lots 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)
- 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
- more data
- draw ALL water and greenery areas
- draw benches, bike racks
- more generally, a way to display random GIS data from seattle site (kml)
- render trees
- do need to mouseover shapefile things and see full data
- grab number of phases from traffic signal shp
- look for current stop sign priorities
- https://gis-kingcounty.opendata.arcgis.com/datasets/traffic-signs--sign-point/
- polish geometry
- new center polylines
- explode out at some angles
- draw intersections at dead-ends
- shift turn icons and stop markings and such away from crosswalk
- interpret failed shifting/polyline attempt as implying something about the lane specs
- figure out what to do about yellow center lines
- yellow and white lines intersect cars and turn icons and such
- who should own drawing them?
- trim them back too (maybe to avoid hitting the intersection?)
- code cleanup
- move map_model geometry stuff elsewhere (sim stuff also needs it though)
- better drawing
- bezier turns for lane markings, turn icons, agent turn signals?
- 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
- https://gifer.com/en/2svr
- 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

View File

@ -1,32 +0,0 @@
# TODO for Phase 2 (Editor)
- support massive maps
- render to a bitmap and clip that in?
- sometimes UI zooms in at once, then unzooms slowly. drop events?
- different UIs
- 3D UI sharing the same structure as the 2D one
- svg export some area, for manual mockups
- web version
- ggez, quicksilver, unrust could work
- easy UI bugs
- big maps start centered over emptiness
- deal with overlapping keys that still kinda happen (sim ctrl, escape game)
- and missing keys, like no tooltip for turns, since they're only shown in editors now
- bug: do need to recalculate current_selection whenever anything potentially changes camera, like follow
- traffic signal editor
- button to reset intersection to original cycles
- turns can belong to multiple cycles; the colors become slightly meaningless
- support left turn yield
- stop sign editor
- cant have no stop signs for two roads whose center line crosses
- infer default policy
- be able to change road directions
- tests that edits + reload from scratch are equivalent
- undo support!

View File

@ -1,57 +0,0 @@
# TODO for Phase 3 (Simulation)
## cars
- features
- different lookahead reaction times
- figure out lanechanging (and turns that dont make sense)
- code cleanup
- figure out responsibility btwn agents and managers, then fix up visibility
- things like ParkingSimState have so many methods -- some are only
meant for spawner, or driving/walking to query. separate out some
traits.
- on a lane vs turn permeates so many places
- better visualization
- draw moving / blocked colors (gradually more red as they wait longer)
- make lookahead buffer follow the shape of the road and extend into other lanes and stuff
- render cars with textures?
- reversible sim
- be careful
- could see if we ever have a lookahead constraint to deaccel more than
what we're capable of. it might mask problems. but since things like
accel_to_stop_in_dist don't have a careful notion of how much time will pass,
they recommend big rates sometimes.
- no way for an agent to request a turn and ASAP have it granted. are there cases where they might slow down unnecessarily?
## bikes
- model bikes as slow cars
## pedestrians
- render overlapping peds reasonably
## General
- savestating a sim has nondet output due to hashes; switching to btree is kind of weird
- consider overriding encoding for TurnID and such, instead of remembering to stick maps everywhere
- diffing two sim states is tedious no matter what; is there a nice macro-driven deep equals we could do instead?
- will need programmatic diffs later for pointing out changes to players in A/B tests
- consider refactoring car/ped sim
- basic structure with actions, react, stepping is same. SimQueue, lookahead, can goto? differs.
- handle map borders
- manually mark polygon, not a bbox, as the border
- be able to start/end trips there
- start to model demand data with manually selecting a source/dest area
- figure out how to capture stacktraces kinda optionally
- manual call at a fxn to dump its stacktrace somewhere (to a file? ideally shared global state to dedupe stuff)
- macro to insert a call at the beginning of a fxn
- macro to apply a macro to all fxns in an impl
- then i can manually edit a few places when I want to gather data
- https://en.wikipedia.org/wiki/File:A_Call_Graph_generated_by_pycallgraph.png

View File

@ -1,9 +0,0 @@
# TODO for Phase 4 (Game)
- Example use cases
- montlake/520 turn restrictions with pedestrian scramble
- close interior neighborhoods to most cars (except for src/dst), see how traffic restricted to arterials would work
- create a bike network with minimal hills, dedicated roads, minimal crossings
- easter eggs
- name agents, with some good names scattered in (Dustin Carlino, Dustin Bikelino, Dustin Buslino...)

27
docs/TODO_quality.md Normal file
View File

@ -0,0 +1,27 @@
# TODO - Map quality
## Geometry
- ped paths through sidewalk corners are totally broken
- figure out what to do about yellow center lines
- 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 ALL water and greenery areas
- draw benches, bike racks
- render trees
- look for current stop sign priorities
- https://gis-kingcounty.opendata.arcgis.com/datasets/traffic-signs--sign-point/

33
docs/TODO_refactoring.md Normal file
View File

@ -0,0 +1,33 @@
# TODO - Refactoring
- easier way to define magic tuneable constants
- and maybe to recalculate fixedish things if they change?
## Map layer
- pt2d resolution
- then my own physics types
- 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
- consider refactoring car/ped sim
- basic structure with actions, react, stepping is same. SimQueue, lookahead, can goto? differs.
- detangle sim managers... but first, figure out how to capture stacktraces
- manual call at a fxn to dump its stacktrace somewhere (to a file? ideally shared global state to dedupe stuff)
- macro to insert a call at the beginning of a fxn
- macro to apply a macro to all fxns in an impl
- then i can manually edit a few places when I want to gather data
- https://en.wikipedia.org/wiki/File:A_Call_Graph_generated_by_pycallgraph.png
- figure out responsibility btwn agents and managers, then fix up visibility
- things like ParkingSimState have so many methods -- some are only
meant for spawner, or driving/walking to query. separate out some
traits.
- on a lane vs turn permeates so many places

47
docs/TODO_ux.md Normal file
View File

@ -0,0 +1,47 @@
# TODO - GUI and UX
## Quick n easy
- audit all panics
- tune text color, size, padding
- sort the top menus
- click cycle diagram to edit duration
- lane edit validity
- make it easy to see current lane when changing it
## Less easy
- revamp stop sign editor
- toggle rewind mode
- sim stuff feels like a modal menu that's kinda omniprescent, but gets hidden sometimes
## General ezgui stuff
- trigger screencap from a top menu debug thing WITHOUT a hotkey.
- optionally limit canvas scrolling/zooming to some map bounds
- T top menu doesnt know when we have a more urgent input thing going!
- cant use G for geom debug mode and contextual polygon debug
- on a menu with preselected thing, clicking ANYWHERE does stuff...
- X on all menus
## New features
- swap direction of one-way
- convert between one- and two-way if there's enough space
- undo support for edits
## Better rendering
- render overlapping peds reasonably
- draw moving / blocked colors (gradually more red as they wait longer)
- render cars with textures?
- 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
- https://gifer.com/en/2svr
- 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

View File

@ -1,24 +0,0 @@
# Backlog
## Code cleanup
- easier way to define magic tuneable constants
- and maybe to recalculate fixedish things if they change?
- add/plan tests
- document pieces that're stabilizing
- run clippy everywhere
- presubmit script
- also enforce consistent style (derive order, struct initialization order)
## Conga line idea
- try constructive approach for snake idea
- with interactive mode?
- try destructive approach for snake idea
- with interactive mode?
## Generally useful rust stuff
- better test runner
- summary of pass/fail at the end, with timings
- log output from failures to tmp files

View File

@ -1,31 +0,0 @@
# Project plan
## Phase 1: Basemap
Produce a high-quality map of Seattle, modeling everything relevant. Input is
OSM, elevation data, King Country GIS data, etc, and also manual edits.
- Polygons shouldn't overlap
- Can export to various formats and announce for anyone's use (though waiting for the editor might be wiser)
- Have fun with themed rendering: halloween, winter, jungle, 8bit, organic
(deform buildings), floorplan, machine (make buildings pump along front
paths)
## Phase 2: Editor
Have an easy UI to modify the basemap -- changing lanes and intersections mainly.
- Can use this to make the basemap more realistic, and also later for the game
## Phase 3: Simulator
Model people moving around the map.
- Will need realistic demand data for this or the next phase
- Reversible simulation would be amazing
## Phase 4: Game
Turn everything into a game by introducing tutorial levels, specific challenges, scoring, etc.
- Figure out how to represent A/B tests