This commit is contained in:
131
todo.md
Normal file
131
todo.md
Normal file
@@ -0,0 +1,131 @@
|
||||
# Project Development Roadmap
|
||||
|
||||
---
|
||||
|
||||
### Phase 1: The "Power User" Planner (UX & Tooling)
|
||||
*Focus: Making the act of drawing routes feel responsive, intelligent, and precise.*
|
||||
|
||||
**1. Live "Ghost" Pathfinding (Live A\*)**
|
||||
* **Concept:** Instead of drawing a straight line from the last stop to your mouse, the system runs A* pathfinding in real-time (every ~100ms on mouse move).
|
||||
* **Benefit:** The user sees exactly where the bus/train will travel along the road network before they click.
|
||||
* **Visuals:** A semi-transparent "ghost" line snaps to the roads. If the mouse hovers over a building, it snaps to the nearest road node.
|
||||
* **Feedback:** A floating tooltip near the mouse shows the segment distance and estimated travel time instantly.
|
||||
|
||||
**2. Mid-Line Modification (Splitting & Dragging)**
|
||||
* **Concept:** The ability to modify a route without deleting the whole thing.
|
||||
* **Interaction:** Hovering over an existing line segment reveals a "ghost node" in the middle. Clicking and dragging this ghost node splits the segment and creates a new stop or waypoint.
|
||||
* **Healing:** Deleting a node in the middle of a route automatically reconnects the previous node to the next node using the shortest path.
|
||||
|
||||
**3. Dynamic Walkshed Heatmaps (Isochrones)**
|
||||
* **Concept:** When placing a stop, the map visualizes the "catchment area."
|
||||
* **Implementation:** Instead of a simple circle radius, use the road network to calculate how far a human can walk in 5 or 10 minutes.
|
||||
* **Visuals:** Color the roads/sidewalks green (2 min walk), yellow (5 min walk), and red (10 min walk) radiating from the cursor. This helps users place stops efficiently without overlapping coverage too much.
|
||||
|
||||
**4. Route "Snapping" Logic**
|
||||
* **Magnetic Stops:** If you drag a new route near an *existing* stop from a different line, it should snap to that stop. This creates a "Transfer Station" logic automatically.
|
||||
* **Key Interest Points:** Snap to high-density buildings (hospitals, schools, stadiums) to ensure maximum ridership.
|
||||
|
||||
---
|
||||
|
||||
### Phase 2: Professional-Grade Ridership Modeling
|
||||
*Focus: moving from "distance-based" checks to legitimate transportation engineering logic.*
|
||||
|
||||
**5. The "Four-Step Model" (Simplified for Gaming)**
|
||||
Real planners use this. You can implement a gamified version:
|
||||
* **Generation:** Every building generates specific trips based on its zoning data (e.g., A house generates "Home-to-Work" trips in AM, "Work-to-Home" in PM).
|
||||
* **Distribution:** Determine *where* they want to go. (e.g., A resident at coordinate A selects a job at coordinate B).
|
||||
* **Mode Choice (The Utility Function):** The most critical part. An agent calculates a score for every option:
|
||||
* *Score (Car)* = Traffic Time + Gas Cost + Parking annoyance.
|
||||
* *Score (Transit)* = Walk Time + Wait Time + Ride Time + Fare.
|
||||
* *Logic:* If `Score(Transit) < Score(Car)`, the agent becomes a rider.
|
||||
* **Assignment:** The agent picks the specific route (Line A vs Line B) that gets them there fastest.
|
||||
|
||||
**6. Transfer Penalties**
|
||||
* In real life, people hate transferring.
|
||||
* **Logic:** Add a "penalty weight" to the pathfinding algorithm when switching lines. A direct route that takes 20 mins is preferred over a 15 min route that requires switching buses.
|
||||
|
||||
**7. Peak vs. Off-Peak Dynamics**
|
||||
* **Time Scales:** Simulate a 24-hour cycle.
|
||||
* **AM Rush (7-9 AM):** Massive flow from Residential -> Commercial/Industrial.
|
||||
* **PM Rush (4-6 PM):** Massive flow Commercial -> Residential.
|
||||
* **Night:** Low demand, mostly service industry or entertainment areas.
|
||||
* **Gameplay:** You must buy enough vehicles to handle the Peak, even if they sit idle at night.
|
||||
|
||||
**8. Crowd Dynamics & Capacity**
|
||||
* **Station Overcrowding:** If a station has too many waiting people, new passengers might leave (despawn) and drive instead (lowering your approval rating).
|
||||
* **Vehicle Capacity:** If a bus is full (40/40), it drives past the stop without picking anyone up. This forces the player to add more vehicles or upgrade to trains.
|
||||
|
||||
---
|
||||
|
||||
### Phase 3: Topography & Environment
|
||||
*Focus: Utilizing your data pipeline to create a challenging 3D world.*
|
||||
|
||||
**9. Lidar-Based Terrain & Constraints**
|
||||
* **Visuals:** The ground plane should not be flat. Use a heightmap to deform the mesh.
|
||||
* **Vehicle Physics:**
|
||||
* *Buses:* Can climb steep hills but slow down significantly.
|
||||
* *Light Rail:* Can climb moderate hills.
|
||||
* *Heavy Rail/Subway:* Cannot climb hills. Requires digging tunnels (very expensive) or building viaducts (expensive).
|
||||
* **Cost Logic:** Building a route over flat ground = $100/m. Building up a 30% grade = $500/m.
|
||||
|
||||
**10. "Fog of War" or Discovery**
|
||||
* If playing a career mode, don't show the detailed density map immediately. The player might need to "survey" areas or pay for traffic data to see where the demand actually is.
|
||||
|
||||
**11. Environmental Impact**
|
||||
* **Noise Pollution:** Residents get unhappy if you build noisy elevated trains right next to their bedroom windows (NIMBY mechanic).
|
||||
* **Land Value:** Good transit raises land value (gentrification simulation), which might change the density of buildings over time (Dynamic City Growth).
|
||||
|
||||
---
|
||||
|
||||
### Phase 4: Economy & Management
|
||||
*Focus: The "Tycoon" aspect.*
|
||||
|
||||
**12. Operational Expenditure (OPEX)**
|
||||
* It's not just about the cost to build the track (CAPEX).
|
||||
* **Fuel/Electricity:** Every mile a vehicle drives costs money.
|
||||
* **Driver Wages:** Every active vehicle costs money per hour.
|
||||
* **Maintenance:** Tracks and vehicles degrade over time and need repair costs.
|
||||
|
||||
**13. Zone-Based Fares**
|
||||
* Allow the player to set ticket prices.
|
||||
* **Strategy:** Low price = High Ridership / Low Revenue. High Price = Low Ridership / High Revenue.
|
||||
* **Zones:** Charge more for longer trips (Zone A to Zone B).
|
||||
|
||||
**14. Loans and Bonds**
|
||||
* Allow the player to go into debt to build a massive subway line, hoping the future revenue pays off the interest.
|
||||
|
||||
---
|
||||
|
||||
### Phase 5: Visuals & "Juice"
|
||||
*Focus: Making the map feel alive.*
|
||||
|
||||
**15. Procedural City Decor**
|
||||
* Even if not strictly simulated, use "Instanced Mesh" rendering to scatter generic trees in park zones and parked cars along roads. It adds scale and realism for cheap performance cost.
|
||||
|
||||
**16. Dynamic Weather**
|
||||
* **Rain/Snow:** Affects vehicle speed and visual atmosphere.
|
||||
* **Visuals:** Particle effects and changing the skybox fog density.
|
||||
|
||||
**17. Data Visualization Filters (The "Lens" system)**
|
||||
* Toggleable views:
|
||||
* *Traffic View:* Roads turn red where congestion is high.
|
||||
* *Satisfaction View:* Buildings turn red where residents are unhappy with transit.
|
||||
* *Profit View:* Lines turn green/red based on profitability.
|
||||
|
||||
**18. Day/Night Cycle with Lighting**
|
||||
* As the sun sets, turn on point lights at street intersections and emissive textures on building windows. This makes the city feel like a living organism.
|
||||
|
||||
---
|
||||
|
||||
### Phase 6: Tech Stack & System Architecture
|
||||
|
||||
**19. Multi-threading (Web Workers)**
|
||||
* **Issue:** Running pathfinding for 1,000 agents or calculating complex ridership models will freeze the UI thread.
|
||||
* **Solution:** Move the simulation logic (Movement, Pathfinding, Economy) to a Web Worker. The Main thread just renders the result.
|
||||
|
||||
**20. Spatial Hashing / Quadtrees**
|
||||
* **Optimization:** When checking "Who is near this stop?", don't loop through 10,000 buildings. Use a Quadtree to instantly find the 50 buildings in range. This is essential for the "Live Walkshed" feature.
|
||||
|
||||
**21. Real-World Data Import (GTFS)**
|
||||
* **Feature:** Allow users to upload a `GTFS.zip` file (General Transit Feed Specification). This is the standard format used by Google Maps.
|
||||
* **Result:** You could load the *actual* bus routes and schedules of Madison, WI instantly as a starting point for the player to improve.
|
||||
Reference in New Issue
Block a user