Spaces:
Sleeping
Sleeping
metadata
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 +wsserver: 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
npm install
npm start
# open http://localhost:7860 in two or more browser tabs/windows