Inspiration

Shapeships began as a dice, pen, and paper game. We played heaps of games on paper before I decided to make a digital version.

Both players receive the same roll, turn it into lines, and use those lines to draw ships. Each ship adds a permanent power to the fleet, creating strange combinations of damage, healing, economy, control, and upgrades.

What it is

Shapeships is a simultaneous-turn strategy game for desktop and mobile browsers.

Players secretly commit builds from the same shared resources, reveal together, and adapt as their fleets grow. The game supports private online matches and solo play against bots - which are actually pretty decent!

Matches are quick, but there is a deep meta: players develop openings, counter-builds, favourite species, and fight about which ships are broken.

From paper to browser

Shapeships uses a server-authoritative architecture. The browser handles interaction and previews, while the server validates and resolves the game.

The frontend is built with React, TypeScript, Vite, and Tailwind CSS. The backend uses Supabase Edge Functions, with Deno and Hono powering the authoritative game engine and persistent match state.

Lightweight polling checks for changes before fetching full game state, while chat and match history remain separate from the main live payload.

Building with GPT and Codex

I used GTP as a director level assistant, and Codex as the live code editor. We'd pass plans back and forth a lot.

As the project grew, I created dedicated architecture and workflow documents for AI contributors. These guardrails helped preserve the separation between the authoritative server, client runtime, and presentation layers.

I did all the the game design, visual direction, architecture, playtesting, balance, and final review.

Challenges

The hardest challenge was making dozens of unusual ship powers coexist inside one deterministic simultaneous-turn system.

Other major problems included preserving hidden information, keeping multiple browsers in sync, adapting a dense strategy interface to mobile, and building computer opponents that use the real game engine.

AI accelerated development, but it also made scope control essential. Small passes, clear ownership, and explicit validation became as important as the code itself.

What I learned

I learned that AI-assisted development works best with constraints. Clear architecture and narrow tasks produced better results than broad prompts.

What’s next

I want to grow the community and have a competitive scene!

Next steps include balance testing, onboarding improvements, accessibility and performance polish, stronger computer opponents, and completing the Ancient species. This is where I've mostly used 5.6 - in this massive planning step for the 4th species which has a heap of new logic and design stuff.

Built With

Share this project:

Updates