commit fd2a887524b15791daa81e7859be3ee379be775f Author: Kamil Krzywda Date: Wed Sep 16 17:24:50 2026 +0000 docs: initial baseline — game design plan, workflow rules, env template diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..43edbb4 --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +CESIUM_ION_TOKEN=your-cesium-ion-token-here diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..244445a --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +# env — never commit secrets +.env + +# deps +node_modules/ + +# build output +.next/ +dist/ +test-results/ +*.tsbuildinfo + +# local data (DB + CSV cache) — keep folder marker +data/* +!data/.gitkeep diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..f2f51cf --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,7 @@ +# Flight Simulator — Workflow Rules + +## Change process (mandatory) +1. **Small, incremental changes** — work is done one change at a time, in smaller parts; each part must be tested thoroughly with unit and e2e tests covering it before moving on. +2. **Changelog entry** — every such change is listed in `CHANGELOG.md` with date, time and version (format: `## v — YYYY-MM-DD HH:MM`, then bullet points of what changed). +3. **Version bump** — the version is updated in `package.json`. +4. **Commit + tag** — a commit is created for each change, tagged with the version (e.g. `v0.1.0`). diff --git a/PLAN.md b/PLAN.md new file mode 100644 index 0000000..5b4e0b2 --- /dev/null +++ b/PLAN.md @@ -0,0 +1,36 @@ +# Flight Ops — Game Design + +Browser game, pure economic gameplay: run a small airplane transport company in Europe. +No manual flying — planes auto-fly assigned routes; you manage the business from an ops dashboard over a 2D map (lite 3D terrain if it stays lightweight). + +## Layout (single screen) +- Left pane — Assets: fleet list (plane type, status, fuel, location), wallet, reputation +- Right pane — Jobs & Market: contracts between airports (reward, deadline, cargo/passengers) with accept/dispatch actions; market actions (buy/sell planes, refuel, maintenance) +- Middle — Map: EU airports as markers, animated plane positions along routes, active contract routes highlighted; click airport → info (runways, local time, weather); click plane → status + +## Core loop +Accept job → dispatch a plane → watch it fly the route on the map → earn money + reputation → buy better planes / take bigger jobs. + +## Map & rendering +- MapLibre GL JS with vector tiles (OpenFreeMap/OSM-based) — crisp detail down to ~10–100 m/px at city zoom, smooth continent overview; no Cesium needed +- Lite 3D: terrain/hillshade from free DEM tiles if it stays lightweight, otherwise flat 2D +- Game-logic data (airports, runways, countries/regions): downloaded CSV dataset cached in `data/` + +## Simulation engine +- Server-authoritative state: sim ticks on the server, client polls and renders +- Time scale 1x–60x + pause; sim clock persisted across sessions +- SQLite via Drizzle ORM — schema designed to switch to Postgres later +- Demand/revenue/cost formulas per contract leg; fuel burn by distance/plane type + +## Weather (display-only for now) +- Generated per airport (wind, visibility/fog, conditions) +- Shown on map / airport info; no gameplay effects yet + +## MVP slice +Starter plane + EU airports + contracts + buy/sell + map visualization + weather display. + +## Later +- Weather effects: delays, fuel burn changes, closed airports +- More aircraft types, upgrades (fuel efficiency, cargo capacity) — money sinks +- Multi-region packs (non-EU airports) +- Multiplayer (shared world, contract races)