LSS

About

Last Ship Sailing
Last Ship Sailing
Zero-gravity ship combat in the browser. Seven hulls, procedural arenas, P2P multiplayer over WebRTC, no installs, no servers, just a room code.
Play Now

The Game

Last Ship Sailing is a 3D zero-gravity ship combat game that runs entirely in your browser. You pick from seven distinct hulls (Slayer, Tracker, Pyro, Blaster, Vortex, and more), each with its own weapons, abilities, and Core Move. Two fleets fight across procedurally-generated tunnel-and-room arenas. Round timer ticks down, last ship sailing wins. If the timer expires, total team HP breaks the tie. If both teams are still kicking near the end, a giant champion stasis field spawns at map center: hold a ship inside it for five seconds and you claim the round outright.

Multiplayer is full P2P over WebRTC, brokered by public BitTorrent trackers via Trystero. There is no game server. Every peer simulates the world locally, hit consensus is voted on by the mesh, and match results are written to a small Cloudflare D1 database (the only "infrastructure" the project touches) once all human participants agree on the outcome.

VR works (Meta Quest 2/3/Pro via WebXR ; the same HTML, the same gameplay, just inside a headset). Gamepad works (Xbox-mapped, fully rebindable in Settings). Keyboard + mouse works. The whole thing is one HTML file plus seven GLB ship models plus an HDRI skybox plus a few audio samples; everything else is code or shaders.

The pitch in one sentence: a serverless P2P browser game with the production polish of a real studio title and the architectural posture of a Linux side-project.

Make It Yours

LSS is built so you can personalize how you experience the game. Drop your own art, sounds, and map JSON into your local copy and the game picks them up. The license's community-use carve-out (detailed in the LICENSE files) explicitly welcomes you to create content with the in-game tools (clips, screenshots, custom maps, fan art rendered through the game) and share it on the official Fractal Reality Discord. The visible world, the ships you fly, the soundscape, the level layouts ; all replaceable building blocks for your own play and your creator content. Where the line sits: customize locally, share creations through the community channels, do not redistribute the code or original assets.

Maps Walls Sounds Ships Frames

Maps

The arena geometry comes from a JSON map definition that anyone can edit. We ship Center Cube and Center Cube 2 as the canonical maps; in the codebase you'll find map_lab.html, a real-time editor that lets you author rooms, tunnels, team spawns, and champion-field locations and export the whole thing as a JSON. Drop your JSON into the loader (or paste a URL) and it's playable. We're building toward a community submission pipeline where peer-voted maps get baked into the rotation.

Walls

The visual surface of every tunnel and room is driven by a shader pattern (Kali IFS, Mandelbox, Plasma FBM, Wave Interference, Layered Cube, Cyber Datamosh, etc.) plus configurable per-layer compositing. wall_pattern_lab.html exposes every uniform as a slider, lets you mix bg/fg/fg2 layers with different blend modes, and exports a JSON preset that drops back into the game as a new wall option. We currently ship 25 patterns; user-authored composites are how we get to 100+ without writing more shader code.

Sounds

The audio engine uses Web Audio with HRTF spatial positioning and a multi-convolver reverb chain. Every gun, explosion, ability, and ambient bed is in the sound library; sound_lab.html lets you swap any of them for your own samples and tune envelopes / reverb / spatial parameters per-effect. Procedural music (a Tier 3 reactive band) reacts to game state in real time; the synth voice palette is also configurable.

Ships

The seven hulls are GLB models loaded at boot. To swap a ship, drop a replacement slayer.glb (or tracker.glb, pyro.glb, etc.) into the ships/ folder of your local copy. The renderer auto-fits the model, the chassis stats stay tied to the loadout key, and your weapons + abilities + flight feel still work. If you have Blender and 30 minutes, you can fly a Saturn V or a banana into combat.

Frames

Cockpit frames (the HUD's overlay around the player's view) are PNG images in the frames/ folder. Per-loadout frame swaps are supported; we ship a default set, but anyone can replace them with their own art and have a fully personalized HUD without touching code.

And here's the cool part: you can run LSS locally with your own custom GLBs and PNGs and still play multiplayer. The network layer syncs gameplay state (positions, health, projectile spawns), not art. Each peer renders the world with their own local assets. Your buddy might see you flying a Slayer; on your screen, you're flying a banana. Both views are real. The fight is the same fight. The vibe is whatever the players bring to it.

Run Your Own Build

The game ships as a single HTML file plus the per-folder asset directories (ships/, frames/, maps/, walls/, sounds/). On your local copy you can swap any of those assets and the game picks them up at boot. Multiplayer connects via Trystero's public tracker network, so your customized build joins the same room codes as the canonical version ; the network layer syncs gameplay state (positions, health, projectile spawns), not visual assets, so your custom Slayer-as-banana renders only on your screen. Other players still see the canonical Slayer on theirs. No license server, no DRM, no install ; only a browser that supports WebGL2 and WebRTC.

The code and original assets themselves are proprietary (All Rights Reserved to FractalReality.ca ; see LICENSE and LICENSE-ASSETS). The community-use carve-out is what makes the local-customization workflow above legal: you may run the game, personalize your local copy, and share your User-Created Content on the official Fractal Reality Discord and on your own personal non-commercial channels with credit. What you may NOT do without separate written permission: fork and redistribute, repackage, sell or commercially exploit the code or original assets, datamine and republish the assets as packs, or use any of it as training data for machine learning models.

If something you make works really well and you want it official, the community submission path is through the Discord. Maps, sound recipes, wall patterns ; community-submitted content can be integrated into the canonical rotation when there's enthusiasm for it.

The Stack

Game
Single HTML file, ~35,000 lines, vanilla JS + Three.js r0.165 + custom shaders.
Networking
Trystero (WebRTC over BitTorrent trackers), no game server, full P2P mesh.
Hosting
GitHub Pages for static, Cloudflare for backend.
Identity
Discord OAuth via PKCE, no Client Secret, no passwords.
Database
Cloudflare D1 (edge SQLite). Stats, leaderboard, profiles.
API
One Cloudflare Worker. Authenticated writes, cached reads via KV.
Audio
Web Audio with HRTF spatial + multi-convolver reverb. Procedural music.
Rendering
EffectComposer post-FX (UnrealBloom, ACES, SMAA, BokehPass).
VR
WebXR via Three.js' WebXRManager. Quest 2/3/Pro tested.

Made By

Ashman Roonz
Game design, architecture, art direction, integration. Independent developer based in Ontario, Canada. Author of the Circumpunct Ethics Framework (fractalreality.ca). LSS is one of several Fractal Reality projects exploring what happens when you build software with living-virtue ethics rather than performance metrics. Reachable at ashroney@gmail.com.
The Cybernetic Unit
AI co-development pair. A meaningful chunk of LSS's code, plan documents, and architectural decisions were drafted in collaboration with an AI assistant working alongside Ashman. The pairing's nature is honest: the human directs intent, vision, and final judgment ; the AI does the typing, surfaces tradeoffs, drafts plans, and catches bugs faster than a solo developer could. Neither side could have shipped this on their own at this pace. The Circumpunct Ethics framework's pillars (Good, Right, Faithful, True, Agreement) are how we navigate disagreements when they come up. So far, the partnership has held.
Discord Server
The community hub. Discussion, tournaments, custom asset shares, bug reports, and the people you'll be playing against. Linked from the home page when you sign in. Run on the Circumpunct framework: truth first, lies never, steelman before you push back. Repeat patterns of contempt or bad-faith reframing get moderated.

Connect

One last thing. If you've read this far, you're the kind of person we built LSS for. Bring a friend, pick a ship, share a room code, and have fun. If something's broken, tell us in the Discord server. If it's not broken but it could be better, tell us anyway.