Description
An Arkanoid-style brick breaker built entirely inside World of Warcraft. Break bricks, catch power-ups, clear 60 hand-crafted campaign levels, then see how long you survive Endless mode. No external assets, no downloads, no dependencies — just a fully playable minigame you can open with /wkanoid anywhere in the world.
🎮 Two ways to play
Campaign — 60 levels across 8 themed zones, from Recruit's Trial in Elwynn Forest all the way to The Lich King. Difficulty ramps naturally: you'll meet gem bricks first, then tougher rocks, then stone, then indestructible obsidian barriers that force you to think about angles instead of just hammering the ball.
Endless — the wall descends. Forever. Each wave adds harder bricks, tighter timing, and faster descent. Your only goal is a bigger number on the scoreboard.
🧱 Four brick types
| Icon | Name | Hits | Notes |
|---|---|---|---|
| 🟠 | Gem | 1 | Rotates through four colours, breaks fast |
| ⚪ | Rock | 2 | Standard mid-tier |
| ⚫ | Stone | 3 | Brings a workout |
| 🟣 | Obsidian | ∞ | Unbreakable — used as pillars, gates, and maze walls |
Every campaign level is validated at load time with a flood-fill check (IsLevelFair): if any breakable brick is sealed off from the bottom of the field, the addon prints a red warning in chat so a broken level can never sneak into a release.
💎 Seven power-ups
Each one drops from a destroyed brick with a configurable pity timer so you never go dry for too long:
-
Ogre Suit — widens your paddle
-
Slow Fall — slows the ball for easier control
-
Real Sticky Glue — the ball sticks; press SPACE to release
-
Fireworks Launcher — SPACE fires lasers upward
-
Charge — punch straight through 1-hit bricks
-
Mirror Image — splits the ball into three
-
Healing Potion — a rare extra life
Effects tint your ball and paddle with a live colour cycle, and stack duration bars appear at the bottom of the field.
⭐ Silent progression
You earn XP for every brick, every power-up, every cleared level, and every endless wave. XP quietly accumulates in the background and only interrupts you on a level-up:
Level Up! — Champion
Ranks: Novice → Adventurer → Veteran → Champion → Hero → Warlord → Legend. Your campaign best, endless best, and total player level are shown on the main menu; nothing is spammed into your chat unless you ask for it with /wkanoid xp.
🖼️ Presentation
-
Clean, flat, minimal UI — dark panels, 1-pixel lines, a single accent colour per level. No borrowed art, no noisy textures, works on every client.
-
Blizzard background art rotates every three levels through hand-picked loading screens and Encounter Journal art — Stormwind, Orgrimmar, and Crossroads — with a themed ambient sparkle colour for each level.
-
Native paddle visuals built from Blizzard's own
UnitPowerBarAlttextures, so it looks like it belongs in the client. -
Buff, Xp, and level-up feedback is presented with particle effects and floating text, never with intrusive sounds or chat spam.
⚙️ Commands
| Command | Effect |
|---|---|
/wkanoid or /wkanoid play |
Open the game |
/wkanoid play <n> |
Jump straight to campaign level *n* |
/wkanoid scale 0.5–1.5 |
Resize the game window |
/wkanoid particles |
Toggle ambient particles on/off |
/wkanoid validate |
Re-run the fairness check across all campaign levels |
/wkanoid xp |
Print your current level, rank, and XP to next level |
/wkanoid orb size N / ox N / oy N / debug / reset |
Fine-tune the ball sprite (useful for troubleshooting alignment) |
/wkanoid art |
List every art path and whether this client can resolve it |
A draggable minimap button is added on first load — left-click to toggle the game, drag to reposition around the ring.
🛡️ Safety and etiquette
-
Automatically pauses on combat. The moment you enter combat, the game freezes and a "Combat!" card appears. Finish the fight to resume.
-
Keyboard capture is released the instant you type in a chat box, so you can't accidentally swallow a
/saymid-game. -
No combat automation, no unit frames, no polling of the world. It's a self-contained minigame that lives in its own frame and only reads input you give it while the window is open.
-
SavedVariables: a single table (
WoWkanoidDB) with your best scores, player level, orb tweaks, and minimap angle. Nothing about your character.
🎨 Made to be edited
Levels.lua is a plain list of { name, tint, rows } entries with a character-per-cell layout:
"0011111100", -- 0 empty · 1 gem · 2 rock · 3 stone · 4 obsidian
If you want to build your own campaign, a companion offline level editor (single HTML file, no install) lets you paint levels visually, run the same fairness check, and export a drop-in Levels.lua block. Grab it from the project's discussion thread.
📦 Compatibility
-
Interface: 16001 (vanilla-era clients, including private shards)
-
Load type:
camelot -
No dependencies. No libraries. No external fonts or textures.
-
Should work on any 1.12-derived client that ships the standard Blizzard UI files referenced in
Data.lua.
🐛 Feedback
Found a level that feels unfair? A power-up that never drops? A pattern that breaks IsLevelFair? Post the level index and a screenshot in the comments — I read every one. Bug reports and level submissions welcome here or in the Discord.
Pull up a chair in the tavern. The wall isn't going to break itself.







