OpenMW-Web v1.1.0 — by Virtastic
Multiplayer. 1.0.x was a single-player engine in a browser; 1.1.0 wraps a hosted service around it, plus a cloud locker for your own copy of Morrowind and a launcher tying the two together.
Self-hosting is unaffected — every new subsystem is off by default.
Multiplayer
- Worlds. One gateway in front of many world processes: a shared public world, plus a private world per player, started on demand and reaped when empty.
- Server-authoritative NPCs. A headless OpenMW sim peer holds cell authority and is the only thing that simulates actors.
- Sign in with Google, Discord or Microsoft. Accounts key on (issuer, subject), never email. No email scope is requested; you pick a public handle.
- Social. Friends, parties, whisper, chat history, cross-world presence, and party voice over WebRTC.
- Party play. Parties survive world switches and restarts. Loot rules with a roll UI, shared quest credit, optional difficulty scaling.
- Quests. Per-instance journals, durable steps, non-depleting quest items, and a whitelist of quests safe to share.
- Moderation. Anti-cheat envelope, PvP zoning, mutes, blocks, reports, a web admin dashboard, and no console in multiplayer.
Cloud locker & saves
Upload your Morrowind once and stream it back on any machine you sign in from. Per-account isolation with no deduplication, and uploads checked against a manifest so unrelated files are refused. Saves live on the server and follow your account, with multiplayer and locker saves in separate namespaces. There is a single-player tile for the locker too.
Launcher
A rebuilt front page with a tile per way in, a themed sign-in modal showing every configured provider, and a first-visit upload wizard.
Operators
One image runs the gateway and sim peer together; simPeer is auto/on/off. Linux peer builds ship. Bucket CORS registers from your own origin, strict content mode enforces per-file SHA-256, and optional dev bots can hold accounts for testing.
Two settings matter on a hosted deployment:
[auth] requireSso = true— otherwise password login stays accepted alongside SSO.[limits] trustCloudflareIp = truebehind Cloudflare — otherwise every player resolves to the edge address and all per-IP limits collapse into one bucket.
Hardening
A pre-release pass, several items found by probing a live deployment: per-IP login limits that were really one global bucket behind the proxy; client-forged address headers evading bans and caps; a reaped private world reviving with no owner and admitting anyone; a database opened without a busy timeout that could exit the process; concurrent migrations killing a booting world; a gateway crash orphaning its worlds; stale party membership caches; invites creating a party of one; and absurd inventory or level claims now refused rather than counted.
Known and deliberate: the server does not compute damage — armour, resistances and difficulty live in game data it does not load. It bounds shape, rate and proximity; the victim's client applies the hit.
Play Morrowind in your browser. Prebuilt WebAssembly engine - unzip the web bundle, run python3 server.py, open desktop Chrome. See SELF_HOSTING.md.
openmw-web-*.zip- grab-and-go: prebuilt engine + web shell + free demo worldopenmw-web-src-*.tar.gz- the exact source snapshot (GPLv3 Corresponding Source)
WASM port (c) 2025-2026 Virtastic - GPL-3.0-or-later - No Morrowind game data included.