// readme

GeoRoids

A cooperative open-world spaceship game with surveying, asteroid towing, and shared mineral deliveries. Play at www.georoids.com.

Astro produces the static pages, and Svelte 5 with shadcn-svelte owns the interfaces. The TypeScript canvas engine renders and predicts the local ship. A Node WebSocket server owns the shared world, combat, asteroid field, NPCs and rewards.

Local development

Use Node 26 (nvm use). package.json requires ^26.0.0; jsdom accepts that major from 26.0.0. On macOS, the native canvas dependency requires Cairo, Pango, libjpeg, giflib and librsvg.

git clone git@github.com:jsolly/GeoRoids.git
cd GeoRoids
npm ci
npm run dev

Astro serves the client at http://localhost:5173; the game server listens on port 3001. npm run dev routes /ws and /logs through Astro’s Vite proxy to the local server, including custom dev ports. A public HTTPS tunnel to Astro therefore also carries the game WebSocket, so phones never connect to their own localhost. Direct Astro and production endpoint configuration is documented in config/app/.env.example.

Choose a ship, enter the game, steer with the mouse or…