WaymoWorld
WaymoWorld: Online Multiplayer Lasertag So You Can Roleplay a Waymo.
Core trick
A WebSocket server validates hits and owns health and kill counts, broadcasting 20 Hz position snapshots to browser clients.
Tags
Description
WaymoWorld: Online Multiplayer Lasertag So You Can Roleplay a Waymo.
Try it out:
https://waymoworld.onrender.com/
README excerpt
# WaymoWorld
A multiplayer browser game: players drive Waymos around a city and shoot lasers at each other.
## Status
- **Frontend** (`index.html`): multiplayer game. A start modal asks for a username; a leaderboard (top right) shows players online and kill counts. Every other car is a real player (the old single-player bots were removed).
- **Backend** (`backend/`): WebSocket game server. Tracks players, broadcasts 20 Hz position snapshots, validates hits, and owns HP / kills / deaths.
## Deployments (Render)
| Part | URL |
| -------- | ----------------------------------------- |
| Frontend | https://waymoworld.onrender.com/ |
| Backend | https://waymoworld-server.onrender.com |
- WebSocket endpoint: `wss://waymoworld-server.onrender.com/ws`
- Health check: `https://waymoworld-server.onrender.com/health` returns `{ ok, clients, players }`
- Debug dashboard: `https://waymoworld-server.onrender.com/debug?token=<DEBUG_TOKEN>` (see below)
## Layout
```
index.html # Whole frontend: one HTML file with an inline ES module, Three.js r160 from jsDelivr via importmap
backend/
package.json # Node >= 20, ESM, sole dependency: ws
src/server.js # HTTP server (/health, /debug) + WebSocketServer on /ws, player registry, 20 Hz snapshots, hit validation, 30s ping/pong heartbeat
src/debug.html # Debug dashboard page served at /debug
```
## Running locally
Frontend: serve the root folder with any static