A low-poly 3D train tycoon in your browser.
Design stations, lay track, run passenger service across the USA — then unlock a detailed NYC map.
Survival badges · Tycoon milestones · Global leaderboard · Autosave · Mobile-friendly
Early development — cannot promise scores will remain; balance and features are still evolving. Saves, badges, and leaderboard entries are stored locally in your browser.
| Two maps | USA — 50 major metros. NYC — landmark stops with water crossings and bridges. |
| Two modes | Tycoon — milestones and win conditions. Survival — endure escalating demand and climb the leaderboard. |
| Deep building | Standard, high-speed, and maglev track · mid-line junctions · station capacity upgrades · train tiers. |
| Living network | Rush-hour demand, transfers, overcrowding pressure, demand surges, share cards, and run history. |
npm install
npm run devOpen the printed URL (default http://localhost:5173).
- Build stations — Station tool → click a stop. On the USA map, expand into gray metros (cost scales with city size).
- Lay track — Pick a track type, click station to station. Tracks auto-connect through stationed cities on the line. Click an existing segment to branch via a junction.
- Buy a train (
B) — Click stops in order to set a loop route, then Done. - Earn & reinvest — Passengers pay fares; maintenance and ops drain cash. Upgrade track and trains in Select mode.
Track types: Standard (Tier I) · High-Speed (Tier I–II) · Maglev (Tier III only)
Tips: Network overview (O) · Past runs (clock icon) · Share your network from the HUD
| Tycoon | Survival | |
|---|---|---|
| Goal | Milestones + win conditions | Badges + personal best time |
| Fail state | Bankruptcy below −$250k | Network collapse (sustained high Lost/min) |
| Pressure | Linear demand growth | Compound growth, tighter crowding |
| HUD | Time elapsed | Survived + Lost/min + strikes |
The sim clock starts when the first passengers spawn — build freely until riders appear.
Open Milestones (medal icon). Expand to all 50 US metros or reach $5M cash to win. Stay above −$250k or face bankruptcy after a grace period.
No bankruptcy — survive as long as you can. Lost/min above 15 for too long triggers network collapse. 16 badges across duration, skill, network, expert, and a Jack of all trades capstone. Sim-time counts (4× speed does not shorten duration badges).
| Input | Action |
|---|---|
| Drag / scroll | Orbit / zoom |
0 |
Pan map |
1–6 |
Tools (select, station, tracks, bulldoze) |
B |
Train shop |
O |
Network overview |
Space |
Pause |
Esc / right-click |
Cancel |
Progress autosaves to localStorage. New Game resets the current run; Survival badges and personal best persist.
| Symptom | Likely cause | Fix |
|---|---|---|
| Scores or badges reset unexpectedly | Early dev — leaderboard + local saves still evolving | See disclaimer at top; report via in-game Report bug |
| Leaderboard empty locally | Netlify Blobs only work on deployed site | Test leaderboard at https://overlandgame.netlify.app/ |
| Trains stuck or paths fail | Graph disconnected or invalid route order | Re-assign route; ensure stations are connected by track |
| NYC water crossing too expensive | Bridge multiplier (x2.6) | Plan shorter water hops or upgrade track later |
| Survival collapse at ~15 Lost/min | Sustained overcrowding | Add capacity, reroute trains, or pause to replan |
| Red GitHub Pages badge | Environment protection on github-pages |
See deployment troubleshooting below |
Survival high scores post to netlify/functions/leaderboard.js using Netlify Blobs.
Local npm run dev does not persist global leaderboard entries — use the live deploy.
Live: overlandgame.netlify.app
Pushes to main also build dist/ and deploy to gh-pages via .github/workflows/deploy.yml.
GitHub Pages setup & troubleshooting
Settings → Pages → Source: Deploy from branch gh-pages / / (root)
If you see Branch "main" is not allowed to deploy to github-pages:
- Settings → Environments →
github-pages - Deployment branches → No restriction (or add
mainandgh-pages) - Disable Required reviewers if enabled
- Re-run the failed deploy
The red pages build and deployment bot job is optional; the workflow deploy is what updates the site.
- Three.js + Vite — low-poly 3D maps
- d3-geo Albers-USA + us-atlas TopoJSON
- Graph network with Dijkstra pathfinding
- Tick-based passenger simulation (decoupled from render loop)
- Icons: Phosphor (MIT) · Font: Outfit (OFL)
MIT — see LICENSE.
See CONTRIBUTING.md.
