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.
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
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.
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
Made By
Connect
- Game: lss.fractalreality.ca
- Author site: fractalreality.ca
- Repository: github.com/ashmanroonz (source-visible, proprietary ; see LICENSE)
- Email: ashroney@gmail.com