Arcane-Arena

đŸ”„ Arcane Arena

Early access. The game is playable but still being built. Expect bugs, balance changes and missing spells.

Arcane Arena is a browser remake of Warlock, the classic Warcraft III custom map. Every player is a warlock on a stone platform surrounded by lava:

Arcane Arena

Play: https://tenggames.com.au/arcane-arena/

Features

Development

npm install
npm run dev        # dev server with hot reload → http://localhost:5173
npm test           # headless bot games + multiplayer test
npm run build      # static site → dist/

npm run serve builds and runs the optional Node server, which hosts rooms over WebSockets. You can also use the Dockerfile for that. The published site doesn’t need it.

Deployment

The game is published at tenggames.com.au/arcane-arena/ as part of the Teng Games site (JTstacky/Chess-tutor). As with the site’s other games, the built files are committed into that repo at public/arcane-arena/.

On every push to main, .github/workflows/publish.yml tests and builds, then commits the build to the site as “Arcane Arena: update to the latest build”. The site’s own deploy then publishes it.

That step needs the repository secret SITE_DEPLOY_TOKEN: a fine-grained token with access to Chess-tutor only and Contents: Read and write. Without the secret, run scripts/update-games.sh in Chess-tutor and commit the result.

How it works

client/   game client: entry (main.js), HUD + shop (hud.js), host worker
server/   warlock.js: rules, spells, knockback, lava, shop, bots
shared/   warlockData.js: spell and item tables (used by server and client)
engine/   shared engine (also used by Hammerguy's Party):
          sim, rooms, networking, renderer, input, HUD base
docs/     research.md: findings from the original Warlock 1.02 map (rules, spells, economy)
          wc3-observations.md: measured behaviour from real WC3, via wc3-instrumentation/
          (engine: movement, casting, knockback, camera)

Networking. The simulation runs in WC3’s 0.03 s steps (33.3 Hz) on the host, and snapshots go out every other step. Clients send only orders and interpolate between snapshots.

Snapshots are sent as small deltas, over a lossy WebRTC channel where possible, and your own warlock is predicted so it responds instantly. docs/multiplayer.md explains the whole stack, every setting, and how to reuse it in a new game.

The engine is copied here and in Hammerguy’s Party. Port engine fixes across when they matter to both games.

Credits

Inspired by Warlock by Zymoran and Adynathos. The rules and numbers are based on the original map and on the authors’ Warlock Brawl. Warcraft is a trademark of Blizzard Entertainment. This fan-made game contains no Blizzard assets.