All work

First Person Arena Shooter

Project Slayer

A Halo-style arena shooter with six weapons, grenades, melee and online multiplayer, in a browser tab.

Overview

Project Slayer came down to one question: can a shooter in the browser feel like Halo? It is built on FP Engine, the movement kit I pulled out of this site’s gallery, with combat layered on top. Six weapons, two grenade types, melee, bots that behave like people, and online multiplayer with the server calling every hit.

Play Now

Design Pillars

  • Movement is the skill ceiling. Slide-jumps, mantle boosts, bunny hop chains. The arena is three vertical lanes with walkways above and a tunnel below, and every surface is a decision about who gets the advantage.
  • The golden triangle. Guns, grenades, melee. Every encounter is a choice between the three. Frags bounce, plasmas stick.
  • Shields over health. Shields absorb first and regenerate. Health only comes back from pickups. Headshots only count once the shield is cracked, so fights are engagements, not instant deaths.
  • Map control wins. Power weapons spawn on timed pads, Overshield and Camo sit in corners you can’t hold at once, and ammo gives the high walkways a reason to exist.

Highlights

  • Six weapons with their own voice. Assault rifle, pistol, battle rifle, shotgun, sniper, rockets. Each sound is synthesized, so each had to be distinct: the AR’s tinny rattle, the pistol’s bassy snap, the sniper’s supersonic crack with a metallic ring behind it.
  • Grenades with real physics. Tuning them was about feel, not correctness. Cutting the fuse to two seconds did more than any physics parameter, and a slight upward bias on the throw gets the Halo lob instead of a flat toss.
  • Melee with magnetism. A cone scan instead of a thin ray. Close and you hit. A little further and you lunge. Behind them and it’s a lethal backsmack straight through full shields.
  • Bots that feel human. They ramp up to speed instead of snapping, pause on patrol as if deciding, hesitate after a kill, take a beat before their first shot, and hop when they change strafe direction. In team modes they share what they see, avoid dogpiling one target, and flank around friendlies.
  • Medals, sprees, match flow. Countdown, play, post-game. Double, Triple, Overkill, Killtacular. Team Slayer from 2v2 to 4v4 with spawns that weigh distance from enemies against closeness to teammates.
  • Procedural everything. The arena is boxes with four material presets and emissive trim. Weapon viewmodels are a few primitives each with their own kick and reload rhythm. Deaths are pooled ragdolls with an impulse from the killer’s direction.

Multiplayer

Getting from offline to real multiplayer took five steps: relay positions, make the server the authority with a headless physics world, move all combat server-side, hand it match flow, then add lag compensation. Clients send inputs, not positions. The server broadcasts at 20Hz and the client predicts in between. Every shot is stamped with the tick the player was seeing, and the server rewinds up to 300ms to check it. The same physics engine runs on client and server with identical behavior, which turns out to be possible in a browser.

What I Learned

Humanization beats intelligence. Momentum, pauses and hesitation did more for how smart the bots feel than any pathfinding improvement. Players read intention from how something moves, not how well it decides. And additive design pays off: every weapon was built by adding an optional field to one definition, so giving three more weapons a scope later was config only, no code.