Skip to content
coded4
 Journal
Mobile 5 min read

Hexbrew is out on the App Store

Hexbrew, my arena action game for iPhone and iPad, went live on the App Store on 21 October 2026. It plays offline, with no ads and no account. Here is what it is, what makes it its own game and how it is built.

Ash Readman-Thorley Full-stack developer

Hexbrew went live on the App Store on 21 October 2026. It is an arena action game for iPhone and iPad on iOS 15 or later. It plays offline with no ads and no account, and it collects no data at all.

What Hexbrew is

You pick one of nine wizards and survive twenty waves of slimes. Your weapons aim and fire on their own; you do the moving, and you cast your wizard's spell by hand. Slimes drop essence, which is both your money and your experience, and ingredients for the cauldron.

Between waves you take your level-up picks, visit the workshop to buy and combine weapons, brew potions and then decide whether to hex the next wave. A captain turns up on wave 5, a boss on waves 10 and 15, and on wave 20 the King Slime, who has to be killed before the timer runs out. Beat him and you can keep going into endless waves.

Hexbrew on an iPad: a storm cloud casts lightning into a crowd of slimes on wave 13, with the wizard and his weapons on the left
Wave 13, with a storm cloud gathering over the slimes.

What makes it its own

Four things make Hexbrew its own game:

  • Brewing. Potions are brewed from ingredients that particular slimes drop. Recipes are unknown until you try them, and the recipe book is kept between runs.

  • A spell you cast by hand. Each wizard has one, and you see it happen: a meteor falls, a storm cloud gathers.

  • Hexes. Before each wave you can put a curse on it, paired with a reward for surviving it.

  • A spellbook look on a meadow.

I also wanted numbers you can read. Damage should not run away: a slime hits for 1 on wave 1 and for about 20 on wave 20, not hundreds.

Every rule in plain scripts

The idea the whole game rests on is that every rule lives in plain scripts with no scene dependence. One script is a whole wave in real time: movement, spawning, weapons, spells, hits and drops. It knows nothing about drawing. The scenes only draw it and feed it input.

That is what makes the rest possible. 156 GUT tests step the simulation without a window, a bot plays whole 20-wave runs in a few seconds, and the desktop and iOS builds share every rule.

If a rule ever needs a scene to work, that is the thing to push back on.

The Hexbrew handover notes

Content as data, balanced by a bot

Wizards, weapons, spells, monsters, waves, potions, trinkets, runes and hexes all live in JSON. A hex is a single entry:

{"id": "swift", "name": "Hex of haste", "curse": "Slimes move 25% faster", "reward": "Twice the ingredients this wave", "mods": {"monster_speed": 1.25, "ingredients": 2.0}, "bot": 2}

A new weapon, trinket, potion, hex or rune is usually an entry and an icon. A data test checks that every reference resolves and that everything has its art and sound, so a missing icon fails a test rather than crashing in play.

Balance is tuned against the bot. It plays whole runs with every wizard on every difficulty, and the target is that it nearly always wins on Apprentice, wins a little over half the time on Adept and about a quarter of the time on Archmage. It is also very good at finding holes. Before there was a limit, it bought ingredients without end and brewed the single best potion 551 times in one run, which is why there are now two brews per workshop and two doses per potion.

The bot is not a person, though. It dodges better than most players and shops without taste, so its win rate is a way to compare changes, not a measure of how hard the game feels in the hand.

One project, two platforms

Hexbrew runs on iPhone and iPad from the same Godot 4.6 project as the desktop game. It decides at run time whether it is on a touch screen. If it is, a thumbstick appears wherever your left thumb lands, the spell button casts at the nearest crowd when you tap it or aims when you drag it, and the menus grow and keep clear of the notch and home bar. The desktop game is unchanged.

On a phone a wizard is under a centimetre tall, so they are drawn simply: a big hat, a big head with dot eyes and a robe. Nothing is drawn or recorded by hand. Every sprite is an SVG written by a Python script, and every sound and music loop is synthesised by another.

The cauldron screen: five ingredients to add or buy, slots to mix two or three of them, and a row of potions already drunk
The cauldron: two or three ingredients a brew, and new recipes go in your book.

Store images drawn by the game

The App Store screenshots are the game drawing itself, with nothing edited by hand. The bot plays a run to a chosen wave and saves it, the game picks up from that file at a store's exact screen size, and a promo scene frames the shot and sets its caption. The 20-second preview is cut from frames Godot writes out itself, over the game's battle music. When a screen changes, the images that show it can be captured again the same way.

Get Hexbrew

Hexbrew shipped on 21 October 2026 and is on the App Store for iPhone and iPad. There is more about the game at hexbrew.coded-4.co.uk, and the Hexbrew case study goes further into the design and the build.

  • Godot
  • iOS

Choose what you're happy with. You can change this any time from Cookie settings in the footer.

Strictly necessary
Keeps the site working, like remembering your cookie choice and light or dark mode.
Always on