Repository navigation
Releases: rgnv/wc3-wasm
Release list
wc3-dedicated v0.2.0 — native x86_64 + aarch64
Native dedicated server builds for the Warcraft III wasm port.
Assets
wc3-dedicated-v0.2.0-linux-x86_64.tar.gz— x86_64 (Proxmox/mesa, verified)wc3-dedicated-v0.2.0-linux-aarch64.tar.gz— aarch64 (Ampere/chi1, verified)SHA256SUMS
Each tarball contains bin/openwarcraft3, the engine module libs, and the
WebSocket bridge + dedicated-lobby scripts. No game data is included — point
-data at your own Warcraft III data directory.
What's new in v0.2.0
- First aarch64 build. Fixed a JASS interoperability bug that broke every
map boot on ARM: the type-pointer corruption guard injass_setnull()
rejected addresses >= 2^47, and AArch64 PIE/ASLR maps the JASS library above
that line, so every pushed value was zeroed (invalid native argument: expected jasstype_integer→ abort). The guard now checks alignment and
page-zero only. - Reliable match start. The browser host's
lobby_start_matchis re-sent
every 600 ms (up to 20x) while connected — the command rides a one-shot
unreliable channel message, so one lost datagram previously cancelled the
Start silently. - Connect-handshake retries for all address types (was Internet-rooms
only): a lostclient_connectreply no longer leaves a client half-joined
(rendering the lobby but unable to send). - Lobby seat config that matches the map:
run-dedicated-browser.shnow
seats bootybay's two real players (map_player 0 and 1) instead of mapping
extra slots to map players the map does not use.
Verified
- x86_64 and aarch64: dedicated boot to
Server initializedon bootybay from
the extracted tarball layout (relative RPATH). - Live two-player match on the aarch64 host through the public WebSocket relay:
both clients join, the host presses Start, both sign on as player 0 / 1.
Requirements
SDL2, Mesa/GL, ALSA or PulseAudio on the host. Server is headless
(+dedicated 1).
wc3-web v0.1.0 — first public binary release
wc3-web v0.1.0 — first public binary release
The browser client for wc3-wasm — Warcraft III: Reign of Chaos + The Frozen Throne running in a browser tab. Built from the published 29-patch series with a data-free preload: engine code only, no game content.
What's inside
index.html,wc3-input.js— the client shell (touch + gamepad input, FMV overlay, base64-sidecar fetch path)openwarcraft3.js,openwarcraft3.wasm— the wasm64 engine (~12 MB)openwarcraft3.data— engine share files only (configs + font stubs; no game data)version.json— build idREADME-RELEASE.md,NOTICE.md,LICENSE,serve.py
Quick start
- Extract this tarball into a directory. Put your own extracted
gamedata/mirror next toindex.html—scripts/prepare-data.shin the source repo builds it from a Warcraft III copy you own (nothing is downloaded or re-hosted here). - Serve it:
python3 serve.py --web . --data ./gamedata→ open http://127.0.0.1:8080/ - First boot builds the UI from your mirror over HTTP (a few hundred small requests); later loads are cached.
Verified
- The literal release files, served against a fresh mirror, boot to the Frozen Throne main menu (~6–16 s on a LAN), navigate Single Player → campaign → mission, and load into a running mission (Strahnbrad, in-game HUD).
- The live reference deployment is additionally verified on real-GPU hardware.
- Without movie transcodes you click once through the two logo screens at startup (built-in skip; see
README-RELEASE.md).
Rules restated
No game assets are distributed in this release or in the repository. Warcraft III is © Blizzard Entertainment, Inc. — bring a copy you legally own. Engine and tooling are MIT-licensed. Source + patch series: https://github.com/rgnv/wc3-wasm