SALVO BAYV0.1.0 · BY CHRIS COOLEY
GHPLAY

A DIORAMA GAME · BY CHRIS COOLEY

Salvo Bay.
Sink what you can't see.

A ship-hunting duel on a cutaway tabletop: two glass trays of water, a dock, a fort and a lighthouse. Hide your fleet, then trade shells across the table.

PLAYor tap the table to play right here

01 HOW TO PLAY

Place. Fire. Sink. Win.

  1. 01

    PLACE

    Hide your fleet

    Pick a ship on the dock, then a cell in your bay. R turns it, RANDOM deals a fleet. Four ships on the classic 8 × 8 bay, five on the big bay.

  2. 02

    FIRE

    Call a cell

    Tap a cell in the enemy bay. The shell arcs over the table: a splash and a white peg is a miss, a fireball and a red peg is a hit.

  3. 03

    SINK

    Finish what you hit

    Hit every cell of a ship and it rolls over and settles on the bottom, where you can still see it through the water.

  4. 04

    WIN

    Clear the bay

    Sink their whole fleet before they sink yours. The end card has your shots, accuracy, best streak and time.

arrows move the cursor · Enter places or fires · R turns a ship · X random fleet · S start · V view · L log · P pause · M mute. Phones: tap a ship, tap a cell; drag to orbit, pinch to zoom.

02 WHAT'S IN THE BOX

A whole harbour on one table.

  • Three bots

    Easy fires at random. Normal hunts on a checkerboard. Hard counts every place your ships could still be. Measured over 300 matches each, to sink a classic fleet they take 41.7, 33.4 and 29.0 shots.

  • Pass and play

    Two people, one screen. A curtain hides each fleet while you hand over, and the table turns to whoever is firing.

  • Online

    Two screens over a room server, with an invite code and a link to send. Fleets never cross the wire until the end, when each is checked against the hash it locked in and every answer it gave.

  • Two bays

    Classic: 8 × 8 and four ships. Big bay: 10 × 10 and five, with the Walrus.

  • Night watch

    Switch to night and the lighthouse sweeps the bay. Orbit the table with a drag, pinch to zoom, or pick a view.

  • Shot log and stats

    Every shot in the log, a turn banner, rematch, and your record against each bot on this device.

PLAY ONLINE PASS AND PLAY

03 BUILT ON FIZLET

No libraries. No engine but a tiny one.

The whole table, every ship, shell, splash and the lighthouse's beam, is software 3D on a plain 2D canvas, from Fizlet's bricks. No runtime dependencies, no WebGL, no images.

  • @fzlt/core/kernel the fixed-step loop, settle and Recall
  • @fzlt/core/diorama shapes, the depth sort, shadows, picking
  • @fzlt/core/sound the cues
  • @fzlt/core/presence the room for online play
  • @fzlt/core/ui the Board UI keys and cards

MEASURED · GZIP

The whole game
47.6 KB
This hero
41.0 KB

Built 2026-11-13, from dist/ in the repo. The game's step allocates nothing: 0 young GCs over 200,000 sim steps.

04 BY CHRIS COOLEY

Made at coded.design.

Salvo Bay started as a tiny game in Fizlet's daily gallery (#102) and grew up into this. It is open source (MIT), and part of the DOM VIRUS family of games.