mirror of
https://github.com/a-b-street/abstreet.git
synced 2024-12-27 00:12:55 +03:00
a round of adding/removing things from the TODOs
This commit is contained in:
parent
a1d1c3d3bc
commit
6e2689f68c
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user