mlmihjaz's picture
Complete game: Laser Tag Party — name join, blaster w/ unlimited ammo, 5-heart elimination, WebAudio sounds, trees/rocks/houses/tower/lakes, bigger map
dd14326
|
Raw
History Blame Contribute Delete
1.83 kB
---
title: Laser Tag Party
emoji:
colorFrom: blue
colorTo: green
sdk: docker
app_port: 7860
pinned: false
---
# ⚡ Laser Tag Party — kid-friendly multiplayer FPS
A friendly multiplayer laser-tag game built with **Three.js** + a **WebSocket** server.
Type your name, jump in, and zap your friends with rainbow lasers! Nobody gets hurt —
you have **5 hearts ❤️**, and if you're zapped 5 times you're out (but you can rejoin
instantly with fresh hearts). **Unlimited ammo, unlimited time.**
## How to play
- **Enter your name** and press Play
- **Click / hold** — shoot lasers (unlimited bullets!)
- **WASD / Arrow keys** — move · **Mouse** — look · **Space** — jump · **Esc** — pause
- On phones/tablets: on-screen pad to move, 🔫 FIRE and JUMP buttons, drag to look
- 🎤 button turns on voice chat (peer-to-peer WebRTC)
- Each zap = **+1 point** on the scoreboard; 5 zaps knocks a player out
## The world
Big open arena with trees 🌲, rocks 🪨, colorful houses 🏠, a watch tower, clouds ☁️
and three lakes 💧 you can wade through. Laser shots are blocked by scenery, so hide
behind things!
## Sound
All sound effects (laser pew, hit blips, knockout, fanfares) are synthesized live with
the WebAudio API — no audio files needed.
## How it works
- `server.js` — Express + `ws` server: relays positions (~20/sec) and laser shots,
tracks scores and hearts server-side, eliminates players after 5 hits, and relays
WebRTC voice-chat signaling.
- `public/index.html` — the entire Three.js client: first-person controls, blaster +
tracer effects, hit detection via raycasting, HUD (hearts, scoreboard, toasts),
mobile touch controls, and WebAudio sound effects.
## Running locally
```bash
npm install
npm start
# open http://localhost:7860 in two or more browser tabs/windows
```