Coil Arena
In progressSlither through a crowded terminal arena — eat pellets, outgrow bots, climb the board.
arcademultiplayer
controls :: Mouse / touch to steer · ← → to nudge · enter name to join · R respawn via Play
Play vs bots now · real players when the server is live.
Coil Arena is a Slither.io-style crowd-eater: spawn into a circular arena with AI snakes already slithering, eat glowing pellets to grow, and avoid crashing into bigger coils. When humans connect to the same server, everyone shares one room.
Run locally
# game server (WebSocket on :8765)
npm run dev:arena
# portfolio + iframe embed
npm run dev
# or both at once
npm run dev:all
Open /games/coil-arena, enter a name, and hit Play. One tab is enough — bots
fill the arena immediately. Open a second tab to test real multiplayer.
Architecture
- Client — self-contained Canvas page under
public/games/coil-arena/ - Server —
server/coil-arena/Node process with authoritative 20 Hz tick loop - Bots — server-side AI snakes using the same movement and collision rules as humans
Azure deploy (later)
When you move the portfolio to your Azure VM + custom domain:
astro build→ nginx serves staticdist/node server/coil-arenavia PM2/systemd on localhost- nginx reverse proxy
wss://game.yourdomain.com→:8765 - Point the client at production WS via
?ws=wss://game.yourdomain.com
No Astro schema changes required — the iframe client just needs the production
WebSocket URL instead of localhost.
Built with
HTML5 Canvas WebSocket Node.js