Skip to content

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/
bortpro/WaymoWorld★ 00 forksHTMLMITCreated Oct 25, 2026 · last push Oct 25, 2026

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 

Team