132 lines
7.6 KiB
Markdown
132 lines
7.6 KiB
Markdown
# 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.
|