Tides of Fortune : an open-world pirate game in three.js with zero asset files

Hi everyone!

Tides of Fortune is an open-world pirate game for the browser, set in the 17th-century Caribbean and inspired by 2000s classics like Sid Meier’s Pirates!: sailing, naval battles, boarding, sword duels, ports, trade and governors’ missions. My goal was really to use three.js and focus on navigation aspect of the game.

:play_button: Play: https://tides-of-fortune.fr/
Code: GitHub - silvestroz/tides-of-fortune: Vibecoded 3D pirate game, playable in your browser · GitHub

The three.js side

  • Zero asset files. Ships, rigging, islands, towns, characters, textures, music and sound are all generated by code at load time. The whole game is a single ~2 MB HTML file (700 kB compressed).
  • Ocean: 12 Gerstner waves on the GPU with an exact CPU copy, so ships float, heel and pitch on the surface you actually see. Detail rings around the camera, calmer shallows, foam wakes drawn into a texture.
  • Islands and towns: terrain baked in parallel in Web Workers during loading, instanced vegetation, towns cut into 60 m blocks so only the useful part goes into the shadow pass.
  • Ships: 27 types built from 6 parametric hull designs, with a lighter hull beyond ~200 m.
  • Painterly look: HDR pipeline, sun shafts, bloom, ACES, a colour grade with canvas grain; FXAA, or SMAA + GTAO in “Ultra” quality.
  • Stack: three.js r186, Vite, plain JS modules, no framework.

How it was made
As I’m not as experienced as most of you, then the code was written with Claude Code. Every system went through three rounds of critique on fresh screenshots against an art bible and a performance budget, and 22 scripted Playwright/Node tests actually play the game (sailing, combat, duels, missions, economy). Heavy documentation of the project was used to ensure consistancy and prevent side effects.

What I’d love feedback on

  1. Performance on your machine: how does the game feel for you? You can press F3 for the frame rate and draw calls in game.
  2. Sailing feel: the handling is deliberately arcade. Does the ship respond well? Is the camera comfortable (at sea and in combat)?

Thanks for playing, and fair winds!

1 Like