bottleship
Run classic Windows games in your browser. A high-level-emulation engine that boots real x86 Windows executables and reimplements Win32, COM and DirectDraw/Direct3D on WebGPU, WebAudio and OPFS
OriginGitHub WebAssembly emu
TechnologyCross-platform native emulator (JIT / dynamic)
Available forWeb, Web
View official projectAbout the project
Emulator indexed on PortsNative optimized to run titles from GitHub WebAssembly emu on Web, Web. Offers high compatibility, graphic enhancements, and modern controller support.
Official project information
BottleShip
Run classic Windows games in your browser.
BottleShip runs real x86 Windows games in the browser — no OS image, no plugins, no server round-trip. It loads a game's PE executable directly and reimplements Windows itself (Win32, COM, DirectDraw / Direct3D 3–9, DirectSound) on top of WebGPU, WebAudio and OPFS.
Play online · Release 0.7 · Compatibility · Documentation · Contributing
<!-- TODO: hero.gif — a short montage (Max Payne / NFS Underground / StarCraft / Unreal) -->- Real x86 Windows executables — not source ports
- DirectDraw & Direct3D 3–9 → WebGPU
- DirectSound &
waveOut→ WebAudio - Runs entirely on the client — no game streaming, no server-side execution
⚠️ Early and actively developed — expect rough edges.
Games running today
BottleShip already runs a range of late-90s / early-2000s titles into gameplay, including Re-Volt, Heroes of Might & Magic III, StarCraft / Brood War, Diablo II, Max Payne, The Elder Scrolls III: Morrowind, Harry Potter and the Philosopher's Stone, Need for Speed: Porsche Unleashed & Underground, Unreal Gold, Command & Conquer: Tiberian Sun, Discworld Noir, Tomb Raider II and Tony Hawk's Pro Skater 2. See the full compatibility list for exact status per title.
Several of these are sold DRM-free on GOG (Heroes III, Re-Volt, Morrowind, Unreal Gold, Tomb Raider II…) — you can drop the offline installer straight in. Because only demos and freeware are legally redistributable, the online library lets you play those instantly; everything else, you bring your own legally-owned copy.
Why
The web has great open emulators for old platforms — DOSBox, ScummVM, Dolphin. But the awkward middle — native Win32 games from ~1997–2004 with no source port, not on modern stores, and fussy on current Windows — has no easy home. BottleShip aims squarely at that gap.
It gives those games a browser-native runtime without booting a Windows image or a native install. We ship the emulator, not the games: the online library is demos, shareware and other redistributable releases; you import your own legally-owned files locally.
How it works
BottleShip doesn't boot Windows. It loads the game's PE executable into a 4 GB guest address space, runs its x86 code through a fork of v86, and intercepts every imported Win32 and DirectX call.
flowchart LR
GAME["Windows game<br/>x86 PE"] --> CPU["v86 CPU<br/>(WASM)"]
CPU --> HLE["Win32 / DirectX HLE<br/>TypeScript + WASM"]
HLE --> WEB["WebGPU · WebAudio<br/>OPFS · input"]
- Win32 / COM APIs are reimplemented in TypeScript and WASM.
- DirectDraw and Direct3D 3–9 are translated to WebGPU / WGSL in real time.
- DirectSound and
waveOutmix in an AudioWorklet over a SharedArrayBuffer ring. - Game files, saves and registry live in an OPFS virtual filesystem (read-only ROM plus a copy-on-write overlay).
- Hot guest/host calls stay entirely inside WASM for speed.
Run locally
Requirements: Bun, and a browser with WebGPU (Chrome / Edge 113+) and SharedArrayBuffer.
git clone https://github.com/jenissimo/bottleship
cd bottleship
bun install
bun run dev
Open http://localhost:5174.
Development & self-hosting guide →
Multiplayer uses an optional LAN relay with WebSocket and HTTP polling. Virtual DirectPlay remains the default. Experimental native DirectPlay 8 hosting requires an explicit provider policy and a configured UDP listener; its current backend targets a Host with one remote Peer. See the native Host setup and conformance guide for the supported scope and verification workflow.
Import your own games
BottleShip can load:
.wgbgame bundles;- raw game folders (drag & drop);
- supported GOG Inno Setup installers (extracted in-browser).
Imported files are processed locally in the browser and stored in OPFS, with a read-only base image and a writable overlay for saves and configuration.
bun tools/make-wgb.ts <game-dir> <out.wgb> --exe game.exe
Game import guide → · GOG import →
Help preserve a game
BottleShip is built around compatibility work: load a game, find the generic Win32 or DirectX gap, implement it faithfully, and prove the fix with the automation harness — a fix that helps every title on the same code path, never a per-game hack.
Coding-agent-assisted contributions are welcome, as long as fixes stay generic, reviewable and covered by reproducible harness tests.
- Report a working or broken game
- Diagnose a missing API (
report()/stubs()name the culprit) - Submit a verified, generic implementation
Contributing guide → · Contributing with coding agents →
Community & contact
- Questions, ideas, or a game you got running → GitHub Discussions.
- Bugs & compatibility reports → Issues (use the templates).
- Security → SECURITY.md (private reporting).
- Anything else, including takedown / legal: jenissimo+bottleship@gmail.com.
Support
BottleShip is free and open source. If it brought a game back to life for you, you can chip in: Ko-fi · CloudTips (RU) · Crypto.
Documentation
- Architecture — how the engine fits together
- Compatibility — tested titles and their status
- Importing games · GOG import
- Development & self-hosting
- Release notes · Versioning
- Automation harness — driving and observing games
- Multiplayer — virtual LAN, server setup and API coverage
- Child processes — execution, display routing and diagnostics
- Performance measurements — workload and correctness contracts
- Contributing with coding agents
License & acknowledgements
BottleShip is licensed under Apache-2.0. It builds on a fork of v86 (BSD-2) and bundles other open-source components (SeaBIOS / VGA BIOS, an FFmpeg-based decoder, fonts) — their licenses and notices are in THIRD-PARTY-NOTICES.md.
BottleShip does not distribute commercial game files. Bring your own legally-owned copies.