Skip to content

OpenMW-Web v1.1.0 — by Virtastic

Choose a tag to compare

@github-actions github-actions released this 12 Aug 14:39
· 566 commits to main since this release

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 = true behind 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 world
  • openmw-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.