Defend your kingdom with arcane power. The king trusts you. Probably a mistake.
Real-time strategy · Tower defense
Court Wizard is a 2D/3D real-time strategy tower-ish defense game where you play as a powerful wizard defending your castle from relentless waves of attackers.
Cast devastating spells from your tower, support your defenders, and master the arcane arts to protect your king. Built entirely in Rust with the Bevy engine.
The king trusts you. Probably a mistake.
The studio
Court Wizard started as a hobby project — one developer learning Rust and game development from scratch. What began as a simple hobby with the Bevy engine grew into a potential business venture.
It is now the first title from Blackhearth Games, an indie studio born from the belief that a single developer with a little free time can build something the rest of the world might enjoy.
Made with passion for fantasy and magic.
GPL v3.0
Court Wizard is open source and licensed under GPL v3.0. The whole game is built in Rust, in the open.
Wishlist on Steam to follow along, or browse the source when it goes public.
No spells hidden behind closed doors.
Six reasons the king keeps you around.
Playstyles
From the Rune Caster to the Meteorologist, each archetype plays completely differently. Yes, one of them even uses poop magic. Unlock new wizards by earning achievements.
Arcane arsenal
9 talents per spell across 3 tiers. Build offense, control, support, and utility loadouts that match your wizard. The math is fine. Trust the wizard.
25 levels
25 levels, seeded runs, and difficulty sliders so you can dial the challenge to taste. Blame the RNG.
Survival
Infinitely scaling enemies. Infinitely scaling you. It gets ridiculous — that's the point.
Big threats
Ogre, Lich, Hags, and Dark Mage. They all want you dead. Specifically. Each demands a different plan.
Peer-to-peer PvP
Bring a friend. Destroy their kingdom instead. Peer-to-peer versus battles, wizard against wizard.
Online · Co-op
Connect to a fellow wizard and defend the kingdom together. Team up in both Endless and Roguelite modes — two wizards, one castle, twice the spells against the swarm.
Two wizards are better than one. Usually.
3 revealed. 8 locked. One of them definitely uses poop magic.
Revealed
Wizard · Starter
The reliable all-rounder. Straightforward spells, no gimmicks, no surprises — just solid arcane fundamentals to learn the ropes on.
Sometimes boring is best.
Wizard · Chaos
Embraces chaos. Your spells are drawn from the whims of fate — adaptable, unpredictable, and never the same run twice.
You don't choose the spell. The spell chooses you.
Wizard · Power
Master of mana flow. Reroute arcane energy on the fly to power up whatever the battlefield demands.
Geordi would be proud of your power routing.
Locked
Locked · Earn an achievement
This wizard has not been unlocked yet.
Something smells off…
Locked · Earn an achievement
This wizard has not been unlocked yet.
Spells? Where you're going, you don't need spells.
Locked · Earn an achievement
This wizard has not been unlocked yet.
Some wizards prefer a more… hands-on approach.
Locked · Earn an achievement
This wizard has not been unlocked yet.
The cauldron whispers to those who listen.
Locked · Earn an achievement
This wizard has not been unlocked yet.
The sky darkens. Something is brewing up there.
Locked · Earn an achievement
This wizard has not been unlocked yet.
Mysterious symbols. Mysterious results.
Locked · Earn an achievement
This wizard has not been unlocked yet.
Violence is never the answer… right?
Locked · Earn an achievement
This wizard has not been unlocked yet.
Some people just want to watch the world burn.
Click a screenshot to view it larger.
Gameplay
Casting spells from the tower as waves close in on the castle.
Brewing
Mix ingredients dropped by enemies in the cauldron between the chaos.
The Study
Research new spells and spend your Arcane Insight at the Wizard's Tower.
Battlefield Chaos
When the spells and the swarm collide, the screen earns its name.
Ogre Boss
One of the bosses that wants you dead. Specifically.
Roguelite Run
Seeded runs across 25 levels with difficulty sliders to taste.
How to play Court Wizard. Click a topic to expand it.
You are the Court Wizard. Defend the castle from waves of incoming enemies by casting spells. Keep the king alive and eliminate all attackers to advance. Each wave brings more and stronger enemies.
You stand atop your tower with the full arcane arsenal at your disposal — but mana is finite, enemies are many, and the king is a bit of a worrier. Choose spells carefully, time your casts, and brew a potion or two between the chaos.
Press Escape or click the spell button in the top-left to open the spell book. Spells are organized into four categories: Offense, Control, Support, and Utility. Click a spell to see its description, then Select to prime it. You can also assign spells to action bar slots (1–5) from here.
The action bar at the bottom-left shows your 5 quick-cast slots. Press 1–5 anytime to instantly prime that spell. To assign a spell, open the spell book and press a number key while hovering over it.
Different spells have different casting styles:
Concentration spells remain active until you end them. While concentrating, the spell's mana cost is reserved — your mana won't regenerate past the reserved amount. You can concentrate on multiple spells at once, but each one reserves more mana. Click the cancel buttons on the right side of the screen to end individual concentration spells and free up mana.
The cauldron lets you brew potions from ingredients dropped by defeated enemies. Click the cauldron icon to open the brewing menu, toggle ingredients on or off, preview the effects, and click Brew. Your wizard can't cast while brewing, and mixing multiple ingredients dilutes each effect — choose carefully.
Defeating enemies earns Arcane Insight, which you spend at the Wizard's Tower to research new spells. Spells are organized in research chains — unlock earlier spells to access more powerful ones. Some spells require a minimum number of total spells researched.
Different wizard types offer unique playstyles. Three are available to start — Boring Ole Mage, Randomancer, and Arcanorouter — and eight more remain locked until you earn their achievements. See the Wizards tab for the full roster.
Every version, newest first. Click a version for its notes.
2026-06-15
2026-06-15
2026-06-13
2026-06-13
2026-06-12
2026-06-10
2026-06-04
2026-06-04
2026-06-02
2026-06-01
2026-06-01
2026-06-01
2026-05-30
2026-05-29
2026-05-28
2026-05-28
2026-05-26
2026-05-10
2026-05-08
2026-05-07
2026-05-05
2026-05-05
2026-05-04
2026-05-04
2026-05-03
2026-04-30
2026-04-30
2026-04-29
2026-04-29
2026-04-29
2026-04-28
2026-04-28
2026-04-28
2026-04-27
2026-04-27
2026-04-27
2026-04-27
2026-04-24
2026-04-23
2026-04-17
2026-04-17
2026-04-17
2026-04-15
2026-04-15
2026-04-14
2026-04-14
2026-04-14
2026-04-13
2026-04-13
2026-04-13
2026-04-12
2026-04-12
2026-04-11
2026-04-11
2026-04-11
2026-04-11
2026-04-10
2026-04-10
2026-04-10
2026-04-09
2026-04-09
2026-04-08
2026-04-07
2026-04-07
2026-04-06
2026-04-06
2026-04-06
2026-04-05
2026-04-05
2026-04-03
2026-04-03
2026-04-02
2026-04-01
2026-04-01
2026-04-01
2026-03-31
2026-03-30
2026-03-30
2026-03-30
2026-03-29
2026-03-29
2026-03-28
2026-03-27
2026-03-26
2026-03-26
2026-03-26
2026-03-25
2026-03-25
2026-03-25
2026-03-25
2026-03-24
2026-03-23
2026-03-23
2026-03-22
2026-03-22
2026-03-21
2026-03-21
2026-03-21
2026-03-21
2026-03-20
2026-03-20
2026-03-20
2026-03-19
2026-03-18
2026-03-18
2026-03-18
2026-03-17
2026-03-17
2026-03-16
2026-03-16
2026-03-16
2026-03-15
2026-03-15
2026-03-15
2026-03-14
2026-03-13
2026-03-13
2026-03-13
2026-03-12
2026-03-11
2026-03-11
2026-03-11
2026-03-10
2026-03-10
2026-03-10
2026-03-10
2026-03-09
2026-03-09
2026-03-09
2026-03-09
2026-03-09
2026-03-08
2026-03-08
2026-03-08
2026-03-07
2026-03-07
2026-03-07
2026-03-06
2026-03-06
2026-03-06
2026-03-06
2026-03-05
2026-03-05
2026-03-05
2026-03-05
2026-03-04
2026-03-04
2026-03-04
2026-03-04
2026-03-03
2026-03-03
2026-03-02
2026-03-02
2026-03-02
2026-03-02
2026-03-02
2026-03-01
2026-02-28
2026-02-28
2026-02-28
2026-02-28
2026-02-27
2026-02-27
2026-02-27
2026-02-26
2026-02-26
2026-02-26
2026-02-26
2026-02-26
2026-02-26
2026-02-25
2026-02-25
2026-02-25
2026-02-25
2026-02-25
2026-02-24
2026-02-24
2026-02-24
2026-02-24
2026-02-23
2026-02-19
2026-02-19
2026-02-19
2026-02-18
2026-02-18
2026-02-17
2026-02-17
2026-02-17
2026-02-16
2025-02-16
2025-02-14
2025-02-13
2025-02-13
2025-02-13
2025-02-13
2025-02-13
2025-02-12
2025-02-12
2025-02-12
2025-02-12
2025-02-12
2025-02-11
2025-02-11
2025-02-10
wizard/archetypes/ module2025-02-10
2025-02-10
2025-02-09
2025-02-09
2025-02-07
2025-02-07
2025-02-06
2025-02-05
2025-02-05
2025-02-04
2025-02-04
2025-02-04
2025-02-03
2025-02-03
any_exist run condition to game-level for reuse across entire codebasesrc/game/input/run_conditions.rs for input-related conditionsmouse_left_not_consumed, mouse_right_not_held, spell_input_not_blocked) to input moduleClone trait bound from any_exist function for better performance2025-02-03
2025-02-02
2025-02-02
2025-01-31
2025-01-31
2025-01-31
2025-01-31
2025-01-31
2025-01-31
2025-01-31
2025-01-31
2025-01-30
2025-01-30
2025-01-30