Tortuga
A real-time multiplayer strategy game played on a hexagonal board: hop across the hexes, capture enemy turtles and resurrect your fallen shell-mates on the race to the far side. Play a friend in a live lobby, or take on three levels of AI. Built with Next.js, TypeScript and Socket.IO.
Summoning turtles…
The rules
How to play
- Objective. Be first to land a turtle on the tiki goal hex on the far side of the board — or win outright by capturing every enemy turtle.
- Movement. Turtles move by hopping over an adjacent turtle into the empty hex directly beyond it. No hops, no move.
- Capturing.Hop over an opponent's turtle and it flips belly-up — dead, out of the game. But not gone…
- Resurrection. Hop over a dead turtle to bring it back to life — and you choose which team it joins.
- Chaining hops. Keep hopping as long as you have moves, but every live turtle you cross in one chain must belong to the same team. Dead turtles chain freely.
The build
Under the shell
Tortuga is a TypeScript monorepo: a Next.js and React client, a shared types package, and a Socket.IO server embedded in a Next.js API route. The multiplayer rules engine — captures, resurrections, win conditions and rematches — runs server-side, powering live lobbies, a challenge/accept flow and real-time move sync between players.
Single-player pits you against one of three hand-built AI opponents, from a friendly Easy to a Hard that punishes loose play. The game ships as a multi-stage Docker build, self-hosted on a VPS behind nginx — which is also what lets it live right here, embedded in the page you're looking at.