greglab
GamesLive

Shooter

Fast-paced browser FPS arena.

A real-time first-person browser arena with server-owned combat, varied procedural maps, weapon pickups, rounds, respawns, and shared profile support.

Mode
Multiplayer FPS
Authority
Server
Renderer
Three.js
First commit
2026-05-09

What it is

Shooter is a Socket.IO multiplayer FPS rendered in Three.js. The browser handles presentation and input while the Node server owns player state, hit decisions, scores, and round flow.

The arena set includes purpose-built maps with distinct traversal and combat spaces. Map voting moves the room between rounds, while weapon pickups change how players approach those spaces.

Client prediction and server reconciliation keep movement responsive, including special traversal such as bounce pads, while preserving an authoritative result under latency.

The game can recognize a greglab Games profile and still allows a guest to enter when the shared hub is unavailable.

Highlights

  • Server-authoritative hit detection
  • Multiple weapons and map voting
  • Shared greglab player profile support

Captured features

Inside the project

The opening screen introduces the first-person arena and its match entry controls.

Capabilities

Key features

Authoritative combat

The server validates shooting and damage instead of accepting client-declared hits.

Arena rotation

Multiple constructed maps and end-of-round voting vary sightlines, traversal, and pickup routes.

Weapon pickups

Arena pickups provide different weapon behaviors and create contested points around the map.

Responsive movement

Prediction and reconciliation cover ordinary movement and map mechanics such as bounce pads.

Round lifecycle

Rooms coordinate joining, live rounds, scores, respawns, pausing, and leaving.

Under the hood

How it works

  1. 1The browser sends input over Socket.IO and renders the Three.js world, HUD, weapons, and effects.
  2. 2The Node server advances room state and validates movement, shots, damage, scores, and respawns.
  3. 3Client prediction is reconciled against authoritative snapshots to keep movement responsive.
  4. 4Profile lookup is optional; failed hub calls fall back to guest play.

Recent changes

Full changelog →
  1. Upgraded the procedural render pipeline

    Improved rendering while fixing initialization, cleanup, and map-build stability.

  2. Refined pause and leave controls

    Improved in-round pause, resume, and exit behavior.