Wizards
Multiplayer wizard duels without leaving VS Code. Install the extension, sign in with GitHub and
play online against your friends, or anyone who's around.
Every player is a wizard with a class. Taking turns (or all at once), you cast spells, set up combos and
defend yourself until only one wizard is left standing. The whole game lives in a panel in the Explorer,
and the match plays out in the Output panel, styled like a dev log.
- 2 to 6 players per room, and many rooms at the same time.
- 21 spells that combo with each other, 6 classes and 6 battlegrounds.
- Surprise events, wandering wizards that join mid-match, and a boss that forces everyone into an alliance.
- ELO ranking and collectible items saved to your profile.
Start playing in a minute
- Install the extension.
- Open the Explorer (
Ctrl+Shift+E). Below your files you'll find the Wizards panel.
- Click disconnected · click to connect. The first time, VS Code asks for permission to use your
GitHub account: allow it. Your player name will be your GitHub username (you can change it, see
Settings).
- You're in the lobby:
- create room opens a new room. Public rooms show up in the list for everyone; private rooms
can only be joined with their code.
- join by code takes you to a friend's room using its 4-letter code.
- Or click any of the open rooms in the list.
- Inside the room, click room ABCD to copy the code and send it to your friends.
- Once everyone is in, anyone presses start match. Have fun!
Before starting you can pick a mode (classic or simultaneous), choose class (you get a random
one otherwise) and equip item (once you own some).
How to play
The basics
- Last wizard standing wins. Then hit rematch for another round.
- Health: 88 to 105, depending on your class.
- Action points (AP): you get 3 per turn. Spells cost 1, 2 or 3 AP, and you can chain spells
as long as you have AP left.
- Mana: you start with 30 (60 max) and regain +10 at the start of each turn. Every spell costs mana.
- Cooldowns: some spells are locked for a few turns after you cast them.
- Target anyone: any spell can be cast on anyone, including yourself (a shield on an ally, oil on
your opponent...).
Your turn
- Press ▶ next to the player you want to target (next to your own name to target yourself) and pick
a spell from the list. Spells you can't afford show a 🔒.
- Keep going while you have AP.
- Your turn ends automatically at 0 AP, or earlier with the ■ button in the panel.
The status bar (bottom left) shows health · mana · AP and lights up when it's your move.
Two game modes
|
Classic |
Simultaneous |
| How it works |
Players take turns in random order |
Everyone plans at once, then the round resolves |
| What you see |
Everything your opponents do before your turn |
Nothing until the round resolves |
| The key skill |
Reacting |
Predicting what the others will do |
In simultaneous mode, ▶ adds spells to my plan (nobody else can see it). When you're happy with
it, press ✔; ↶ removes the last spell. The round resolves once everyone is ready, in phases:
defenses first, then setups, then attacks, and healing last.
Each mode has its own ELO ranking.
Spells
| Spell |
AP |
Mana |
What it does |
FIREBALL |
2 |
12 |
14-18 fire damage, 40% chance to BURN |
ICE SHARD |
1 |
7 |
6-9 damage and +1 CHILL (3 CHILL = FROZEN) |
LIGHTNING |
2 |
16 |
12-20 lightning damage |
SPLASH |
1 |
4 |
Makes the target WET. No damage: sets up combos |
OIL |
1 |
6 |
Makes the target OILED. No damage: sets up combos |
POISON |
1 |
10 |
Poison that deals damage every turn and ignores shields |
DRAIN |
2 |
10 |
8-11 damage; you heal what you deal and steal mana |
METEOR |
3 |
35 |
35-45 damage, but it lands on your next turn: your target gets a chance to prepare |
TREMOR |
2 |
16 |
7-10 damage to everyone else; can't be dodged |
SHIELD |
1 |
10 |
+20 shield |
HEAL |
2 |
18 |
+22 health and halves poison |
CLEANSE |
1 |
12 |
Removes burn, poison, chill, wet, oil and steam |
COUNTERSPELL |
2 |
14 |
Cancels the next spell of 2+ AP cast at you |
MIRAGE |
1 |
8 |
The next attack against you has a 75% chance to miss |
THORNS |
1 |
10 |
Anyone who attacks you takes 3-7 damage |
CHARGE |
1 |
0 |
Your next damage spell deals ×1.5 |
CURSE |
1 |
9 |
The target takes +10% to +30% damage from everything |
SILENCE |
2 |
14 |
75% chance the target can't cast 2+ AP spells on their next turn |
PURGE |
1 |
8 |
Strips shields, charges, mirages and thorns from the target |
MEDITATE |
all |
0 |
Spends your remaining AP: +7 mana per AP |
SACRIFICE |
1 |
0 |
-10 health for +14-22 mana (on yourself or an ally) |
Run Wizards: Spellbook from the Command Palette to see the costs adjusted for your class.
Combos
Your target's state changes what each spell does. The best turns pair a cheap setup with a finisher:
| If the target is... |
...and you cast |
Result |
| OILED |
FIREBALL |
Explosion: +20 damage and a guaranteed burn |
| WET |
LIGHTNING |
Electrocution: double damage and 65% chance they lose their turn |
| WET |
ICE SHARD |
70% chance to freeze them on the spot (only 1 AP on their next turn) |
| FROZEN |
FIREBALL |
Shatter: +12 damage |
| BURNING |
ICE SHARD |
Thermal shock: +6 damage |
| WET |
FIREBALL |
Half damage, but they're left in STEAM (their attacks may miss) |
Examples with 3 AP: OIL + FIREBALL (about 36 damage) or SPLASH + LIGHTNING.
Classes
Each class has a strength, resists one element (25% less damage) and is weak to another (25% more).
| Class |
Style |
Health |
Strength |
Resists |
Weak to |
| 🔥 Pyromancer |
Aggressive |
88 |
Stronger FIREBALL that burns more often |
fire |
ice |
| ❄️ Cryomancer |
Control |
105 |
Freezes with two ICE SHARDs |
ice |
fire |
| ⚡ Stormcaller |
Burst |
100 |
Cheaper, stronger LIGHTNING |
lightning |
poison |
| ⚗️ Alchemist |
Attrition |
100 |
Cheaper poison, oil and water |
poison |
lightning |
| 💀 Necromancer |
Endurance |
100 |
DRAIN steals more health and mana |
shadow |
arcane |
| 🔮 Arcanist |
Defensive |
100 |
Better shields and mirages, cheap meteor |
arcane |
shadow |
Hover over a player in the panel to see their class in detail.
Surprises along the way
- Battlegrounds: every match takes place somewhere (the Ignis Cauldron, the Hrimfell Glacier...)
that gives everyone a perk and favors one class.
- Omens: a cryptic hint shows up now and then (👁 in the panel). A round or two later the event hits:
a downpour that soaks everyone, an eruption, an earthquake that breaks every shield, a mana surge...
- Wandering wizard: a server-controlled wizard joins the match and attacks anyone.
- Blood pact: a boss appears and everyone is forced into an alliance. If any of you dies (even by
friendly fire), you all lose. Defeat the boss and the duel goes on.
Ranking and items
- Your profile tracks ELO (one per mode), wins, streaks, damage and kills. Check it with my stats
and see where you stand in ranking.
- Beating someone with a higher ELO earns you more points.
- Items drop as loot (finishing off a wandering wizard, defeating a boss, or sometimes for winning).
Equip one per match with equip item. Each one has an upside and a cost.
The panel
| Where |
What it does |
| ▶ next to a player |
Cast a spell at them |
| ✉ next to a player |
Send them a private message |
| Panel title buttons |
Type a command, end turn (■), chat (💬), show the log |
| Panel ··· menu |
Create, join or leave a room, status, effects, spellbook, ranking, help |
| Expand a player |
Health, mana, AP, active effects (hover to see what they do) and cooldowns |
Chat: the 💬 button messages the whole room; start with @NAME to whisper. It doesn't use your turn.
Typed commands: the panel's command button accepts commands such as FIREBALL TO ALEX,
HEAL TO ME, SAY hi or HELP to list them all.
Settings
| Setting |
What it does |
wizards.name |
Your player name (2-16 letters, digits or _). Empty = your GitHub username |
wizards.autoConnect |
Connect when VS Code starts |
wizards.revealOutput |
Bring up the Output panel when something happens in your match |
Changing your name keeps your profile, ELO and items.
Your account
Your GitHub account is only used to know who you are, so nobody else can play under your name or take
your ranking. We store your GitHub username, its ID and your primary email address. Your email is
never shown to other players. You can sign out from the Accounts icon in VS Code.
Troubleshooting
- "Could not open a secure connection": your company network or an antivirus may be blocking the
connection (it uses port 7777). Try a different network.
- "The name ... belongs to another account": pick a different name in the
wizards.name setting.
- I can't see the panel: it's in the Explorer, below your files. If it's collapsed, click Wizards.
- The connection dropped: the extension reconnects on its own. If you were in a match, you'll be put
back in your room.
License
MIT
| |