← All work

Shrink down and fight for the board

Little War

A Halo-style arena shooter played as a living tabletop: shields, seven weapons, grenades and bots that fight like people, on a 1:64 board in a browser tab.

Overview

Little War started life as Project Slayer, built around one question: can a shooter in a browser feel like Halo? Once it did, it needed an identity of its own. The rebrand turned it into a living tabletop. You play a 28 mm piece on a cast-resin board under a studio lamp, with painted team territories, rubber trim and a hobby table beyond the walls. Only the presentation is little. The world, physics and hitboxes are full size, and underneath is a complete arena shooter built on FP Engine, the movement kit I pulled out of this site’s gallery. Two boards are playable: Arena, a castle board with a blue gatehouse and a red keep, and Icefire, an offshore refinery rig on a night sea.

Play Now

Design Pillars

  • Movement is the skill ceiling. Slide-jumps, mantles, bunny hop chains and grenade jumps. Arena is three 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 skip and bounce, plasmas stick.
  • Shields over health. Shields absorb first and regenerate. Health only comes back from pickups, so fights are engagements, not instant deaths, and a cracked shield is the moment to push.
  • Map control wins. Power weapons spawn on timed pads ringed in gold, and Overshield and Camo sit in places you can’t hold at once.

Highlights

  • A board you can read at a glance. It is built in code from a kit of bevelled pieces, because a small chamfer catching the lamp says “painted miniature” better than any texture. The scale is fixed at 1:64, so a die is the size of a crate and a stack of tokens is a silo, and both are cover. Grid letters and numbers on the ramparts give you something to call out.
  • The table plays along. An hourglass drains with the match clock and peg tracks on the ramparts move when someone scores. You respawn as a piece being placed on the board, with a resin clack and a ring of dust. Die and the camera lifts out of your eyes into a tilt-shift shot of your toppled piece. Every round chips the board and every blast scorches it, so by the end of a match it looks played on.
  • Built in code, down to the hands. Assault rifle, battle rifle, pistol, shotgun, sniper, rockets and a hammer, all modelled from scratch. Reloads swap real magazines, the pistol slide locks back on empty, the shotgun racks after every shot, and the rifle carries a live ammo counter. The combatants stand on a jointed rig, so they hold their weapons properly and strafe and backpedal instead of moonwalking.
  • Impact you can feel. Shots kick the view, melee hits and kills freeze the gun for a few frames, controllers rumble, enemy rounds crack past your head and close blasts muffle the world. None of it moves your aim: the camera shakes, the shot doesn’t.
  • Grenades with the Halo feel. The fuse starts when the grenade first lands, not when you throw it, so timing depends on where it ends up. Throws loft above the reticle, and blasts set off nearby grenades and shove you, enough for a grenade jump.
  • Bots that fight like people. They aim like a human hand: steady strafes get tracked, sudden changes of direction cost them shots. They hear gunfire, remember where you were and go and check, take cover when their shield breaks, dodge grenades, flank, and act on their teammates’ callouts.
  • Sound with a sense of place. Every effect was designed with ElevenLabs. The guns and explosions are punchy, while the world leans into the tabletop: resin pieces knocked on wood for footsteps, a pen click for hit markers, marimba for the countdown, playing-card swishes in the menus. An announcer calls every medal, from Double Kill to Board Wipe.

Multiplayer

Online matches run on a server that owns every hit. Getting there took five steps: relay positions, make the server the authority, move all combat server-side, hand it match flow, then add lag compensation. Movement was the hard part. The client and server run the same movement code at a fixed 60 ticks a second, so your client can predict your moves, and when the server disagrees it rewinds to the correction and replays your inputs on top instead of snapping you back. Every shot is stamped with the tick you were seeing, and the server rewinds up to 300ms to check it. It runs grenade fuses and inventory too, and checks that a shot or throw comes from somewhere you could actually be.

What I Learned

Humanization beats intelligence. Momentum, hesitation and an aim that lags a moving target did more for how real the bots feel than any pathfinding. Measuring first kept me honest: the old bots looked deadly on paper, but four of them on a team managed half a kill a minute between them.

Pick a scale and let it make the decisions. Committing to 1:64 settled what every prop should be: a die is crate-sized, so it is cover, not decoration behind a wall. The same idea applied to the camera. Once shake, kick and roll were presentation only, with aim read from one steady source, firing could feel heavy without getting less accurate.