A multiplayer Asteroids game
https://georoids.com β// 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β¦