a round of adding/removing things from the TODOs

This commit is contained in:
Dustin Carlino 2019-04-30 15:25:32 -07:00
parent a1d1c3d3bc
commit 6e2689f68c
5 changed files with 125 additions and 66 deletions

View File

@ -1,13 +1,8 @@
# TODO - Core gameplay
- parking vs bus tutorial level
- big vertical road. some neighborhoods off to the side. everyone trying to go nrth or south. one driving, one parkign 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...
- Example use cases
- maybe dont need simulation at all to play with these
- just a smooth editing and diffing UI
- 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?
- create a bike network with minimal hills, dedicated roads, minimal crossings
@ -15,15 +10,19 @@
- easter eggs
- name agents, with some good names scattered in (Dustin Carlino, Dustin Bikelino, Dustin Buslino...)
## Tutorial
- parking vs bus tutorial level
- big vertical road. some neighborhoods off to the side. everyone trying to go nrth or south. one driving, one parkign 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...
- use a modalish menu to display instructions and also give the 'escape' option
- spawn cars somewhere
- run sim, pause, change speed, reset
## More things to simulate
- Light rail and downtown bus tunnel
- more accurate pedestrian speed, and randomized speeds
- 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
## Small bugs / tests to add
- 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

View File

@ -2,7 +2,6 @@
- enable more clippy lints
- enforce consistent style (derive order, struct initialization order)
- cross-platform builds
- update with mission statement (democratized urb p, that quote, refashion existing space cheaply)
- trailer

View File

@ -26,15 +26,14 @@
- then make them thinner
- 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?
- arrows
- sometimes head is separated from body. I314 montlake ped turn arrows
## More data
- lanes: https://data-seattlecitygis.opendata.arcgis.com/datasets/49d417979fec452981a068ca078e7070_3
@ -83,6 +82,62 @@
- if we dont filter at all, we pick up some houseboats! :) should draw water...
- undo disabled traffic signal assertion
## Map edits
- lane type can affect border intersections
- lane type can affect turn idx
- assert turns are the same
- crash when loading some edits (priori->bikelanez)
- edit an intersection first, then change lanes to destroy turns. need to recalculate the policy, preserving edits!
- just revert intersection and warn
- or store overrides more granularly and warn or do something reasonable
## Release
- publish the map data
## 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!
## Discrete-event sim model
- gridlock
- get_car_positions will recurse?
- laggy head stuff will be inefficient without prevention?
- preventish... dont start turn unless target WILL have capacity
- stronger is room_at_end now, but thats too strict
- best-case static capacity wont help (we might have longer buses and over-commit)
- worst-case static capacity will stop shorter cars from going when they legit could
- look at current occupants, find where the back WILL eventually wind up (just add up lengths + following dist, actually), then reserve after that.
- cleanup after the cutover
- explicit tests making cars park at 0 and max_dist, peds walk to 0 and max_dist
- proper intersection policies, by seeing full view
- time travel mode can be very smart
- dupe code for initially spawning vs spawning when a trip leg starts.
- validation (just do it in spawn and return an error?)
- getting the path
- converting goal into router and such
- is overtime necessary?
- all the scoring/query stuff is so terrible
- perf
- speed up Scheduler
- BinaryHeap
- binheapplus not serde
- std::cmp::Reverse not serde
- so have to manually impl ord
- BinaryHeap isnt PartialEq, which sim det stuff needs!
- update() is very hard
- priority_queue crate... internally uses hash, so serialization and determinism probably borked
- dig into individual events, still too many?
- for laggy heads, often round down and try slightly too early
- change sim.step API to something like step_to_time
- handle savestating better... use scheduler, but ensure at the end of that time
- make the desired speed in editor work better

View File

@ -33,28 +33,3 @@
- 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
## Editor layer
- plugin APIs are weird
- ambient_event and one event() indicating done or not. dont express blockingness in that API.
- actually, take away Plugin trait entirely? Except for the stuff that gets all boxed up?
- one API for all modes/plugins doesn't make sense maybe. does primary_plugins need to be in PluginCtx at all?
- can we somehow fold PluginsPerMap into PerMapUI? :D different API that doesnt blindly pass in all of primary field
- yes, we just have to change the API of everything in there to take a different PluginCtx that doesnt hand over entire primary.
- Layers could be stackable modal too, but do that later. low-pri.
- RenderOptions shouldnt need cam_zoom and debug_mode
- make sure keys from any mode dont overlap. activation keys in one place?
- stop following + floodfill from lane...
- some plugin state is a bit weird when loading savestates
- rewrite input to understand the 3: context menu, top menu action, or modal things
- misc keys?
- eventually input won't need to check for dupe keys
- escape is used in two places now... but who cares?
- consider the decentralized->monolithic redesign
- could do callbacks that take PluginCtx and that particular plugin. but it becomes awkward to express an action is invalid. write nice imperative code, use control flow.
- decentralized, stuff like showing original roads is tedious. lots of stackable stuff that can be removed.

View File

@ -9,34 +9,28 @@
- color roads as solid black when zoomed out, and make intersections similar (except for stop sign / signal)
- audit all panics
- tune text color, size, padding
- sort the top menus
- click cycle diagram to edit duration
- revamp stop sign editor
- toggle rewind mode
- sim stuff feels like a modal menu that's kinda omniprescent, but gets hidden sometimes
- yellow or flashing red/yellow for yields
- text box entry: highlight char looks like replace mode; draw it btwn chars
- traffic signal cycles go offscreen sometimes!
- mouseover shouldnt even be possible in lot of modes, like when a menu is active
- navigator
- show options on map
- stop jumping text size
## General ezgui stuff
- optionally limit canvas scrolling/zooming to some map bounds
- top menu doesnt know when we have a more urgent input thing going!
- cant use G for geom debug mode and contextual polygon debug
- X on all menus
- when dragging, dont give mouse movement to UI elements
- start context menu when left click releases and we're not dragging
- dont draw context menu off-screen
- can we change labels in modal or top menu? show/hide
- stacked modal menus
- should quit key for modal menus match key that started it?
- launch floodfill from context menu while following an agent... shouldnt be allowed
- can coexist: show score, search, hide
- some abstraction to just declare set_mode, give the extra width and height besides the menu, and get back a screenpt to start drawing at
- bold hotkey letters
## New features
@ -63,21 +57,58 @@
that. http://davidjohnstone.net/pages/lch-lab-colour-gradient-picker,
chroma < 50
## Switch to OpenGL (for speed)
- speed
- 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
- quality
- need padding around text
- text entry needs to draw the cursor differently
- more speculative performance ideas
- experiment with batching and not passing colors
- specialized shaders for common shapes like circles?
- try https://docs.rs/dymod/0.1.0/dymod/ to link in a release-mode ezgui crate?
## Performance
- it's a pity we have to redo DrawCar work for all those parked cars every tick
- areas like lakes are incredibly detailed
- 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
## Mission Edit Mode
- neighborhood
- how to "pop" up the menu, go back to load/create and even to managing scenarios? feels like a stack.
- display some instructions in the modal thing ("move a point by grabbing it")
- warp to neighborhood center and zoom out when loading one (or even hovering in the menu?)
- display all and click to edit
- draw text in map-space, or be able to scale it
- renaming
- scenario
- visualize should just be the default thing
- summarize in the modal menu, dont display the ugly text
- almost feels like a list of 3 'command' types, each of which can be visualized:
- seed cars
- spawn agents
- spawn agents from border
- kind of need to CRUD this list
- time input is very unclear, put help text in there
- combine the spawn and border spawn... choose neighborhood OR border
- choose in a menu list, or click on the map
- draw the border nodes loudly
- visualize better
- draw separate arrows src/dst, on each side of text
- draw text at a fixed size, not in screenspace, specify the font size.
- associate font size with Text, probably
- highlight a region, draw counts to/from it in some meaningful way
- timer slider (except timeslices arent neatly in hour blocks, though they maybe should be)
- a table (with color-coded entries) is actually perfect