Wizard of Wor is a classic arcade-style dungeon shooter. You control a warrior navigating maze-like arenas, shooting monsters before they shoot you. The game never ends — dungeons loop forever, growing harder with every level.
This edition is a faithful browser remake of the C64 version, extended with an Endless Connected Dungeon network multiplayer mode where players each inhabit their own dungeon and can invade each other through tunnel connections.
| Mode | Players | Entry point | Description |
|---|---|---|---|
| Single Player | 1 | index.html | Classic Wizard of Wor, one warrior, local play |
| Two Player (local) | 2 | index.html | Classic WoW, both warriors in the same dungeon |
| Multiplayer — Solo join | N | multiplayer.html | Each player gets their own dungeon; dungeons connect via tunnels |
| Multiplayer — Paired join | 2 | multiplayer.html | Two players explicitly share one dungeon (classic 2P feel, over the network) |
| Action | Yellow Warrior (P1) | Blue Warrior (P2) |
|---|---|---|
| Move up | ↑ | W |
| Move down | ↓ | S |
| Move left | ← | A |
| Move right | → | D |
| Fire | Right Ctrl | Left Shift |
| Action | Key |
|---|---|
| Start 1-player game | 1 or P1's fire key |
| Start 2-player game | 2 or P2's fire key |
Open /multiplayer.html on your server (same host you are playing on). Use the
on-screen buttons to choose Solo or 2-Player. Both warriors
are controlled from the same keyboard tab — open a second browser tab for true split-screen
network play.
Clear each dungeon of all enemies before they escape or kill you. You earn points for every monster you shoot. The game ends only when all lives are lost.
Every completed dungeon leads to the next, which is harder. Enemies become faster and more aggressive, and the layout changes. There is no final dungeon — the game loops indefinitely.
| Event | Result |
|---|---|
| All monsters killed or escaped | Dungeon complete; proceed to next level |
| Player hit by monster or bullet | Lose one life; respawn after ~2 seconds |
| All lives lost | Game Over |
| Worluk escapes | All players on-screen lose a life (Worluk penalty) |
| Wizard of Wor escapes | All players on-screen lose a life |
Six enemy types appear across the dungeon levels. Each has distinct behaviour, speed, and point value.
Dungeons are rectangular 11 × 6 tile grids with configurable inner walls. The layout changes each level.
| Level range | Layout pool | Special |
|---|---|---|
| 1–7 | 12 easy layouts (randomised, no repeat) | — |
| Level 4 | Fixed: The Arena | Bonus life at level 3 |
| 8+ | 8 hard layouts (randomised, no repeat) | — |
| Level 12 | Hard pool | Bonus life at level 12 |
| Level 13+ | Fixed: The Pit (every 6 levels) | — |
The centre panel at the bottom of the screen is a mini-map showing the position of all visible enemies (invisible ones are also shown). The label above the map changes to reflect the current dungeon name, or special event text.
Killing the Worluk sets a Double Score flag. The next dungeon is played with all point values doubled. The double-score banner is shown at the start of the dungeon.
Enemy speed is controlled by two factors: the speed level (1–16) and the background music tempo (1–7). Both increase as you progress through dungeons and as time passes within a dungeon.
| Speed level | Movement rate | Music tempo | Relative speed |
|---|---|---|---|
| 1–2 | 1 px / ~5 ticks | 1 | |
| 3–4 | 1 px / ~3 ticks | 2 | |
| 5–6 | 1 px / ~2 ticks | 3 | |
| 7 | 1 px / tick | 4 | |
| 8–9 | 1–2 px / tick | 5 | |
| 10–12 | 1–2 px / tick (faster) | 6 | |
| 13–16 | 2–3 px / tick | 7 |
| Target | Base points | Double Score |
|---|---|---|
| Burwor | 100 | 200 |
| Garwor | 200 | 400 |
| Thorwor | 500 | 1,000 |
| Worluk | 1,000 | 2,000 |
| Worrior (other player) | 1,000 | 2,000 |
| Wizard of Wor | 2,500 | 5,000 |
The top 5 scores are saved in localStorage and shown on the title screen.
Scores are per-browser and persist between sessions.
The left and right walls of the dungeon have teleport gates at row 3 (counting from the top). Walking into a gate teleports you to the other side of the dungeon — or, in multiplayer, to a connected dungeon.
In multiplayer, each dungeon has a left tunnel target and a right tunnel target — references to other connected dungeons. When you enter a tunnel that is linked to another dungeon, you are transferred to that dungeon and appear at the matching tunnel exit on the opposite side.
Once you have killed enough Thorwors (the threshold decreases at higher levels), the Worluk appears. The radar displays WORLUK, the wall colour changes, and enemy speed jumps to 14.
After the Worluk event resolves, there is a 1-in-7 chance the Wizard of Wor spawns:
The multiplayer server runs separately from the single-player static server:
npm run multiplayer # → /multiplayer.html (same host you are playing on)
| Click | Result |
|---|---|
| Solo | A new dungeon is created just for you. Your dungeon's tunnels are automatically linked to any existing active dungeon. You are assigned the next available warrior colour. |
| 2-Player | You wait for a second player to also click 2-Player. Both players share one dungeon with the original WoW side-by-side spawn positions. This is the closest to the classic two-player experience. |
The server is fully authoritative. Clients send only raw keyboard state; the server validates all movement, shooting, hits, scoring, tunnel transfers, respawn, and dungeon lifecycle transitions. The client is a pure renderer.
| Client sends | Server sends back |
|---|---|
| Raw key state (up/down/left/right/fire) at 50 fps | Full serialised dungeon state (positions, monsters, bullets, scores) at 50 fps |
Available from the in-game menu (single-player mode). Each filter also recolours the sprite palette to match the aesthetic.
| Filter | CSS effect | Palette |
|---|---|---|
| None | Pixel-perfect, no processing | Original C64 |
| Scan lines | Horizontal line overlay | Original C64 |
| Black & white TV | Blur + brightness + noise | Grayscale |
| Colour TV | Contrast / saturation blur + noise | VICE emulator C64 |
| Green C64 monitor | Blur + brightness tint | Green phosphor |
WORLUK means rush to kill it,
WIZARD OF WOR means prepare for chaos,
ESCAPED means you lost a life shortly.