Release 1.17: Champions and Items

Published on 2026-07-06 by Stuart Spence

Greetings, stranger. I'm not surprised to see your kind here. Many adventurers have traveled this way since the recent troubles began.

No doubt you've heard about the tragedy that befell the town of Northwood. Some say that Surtr, the Lord of Fire, walks the world again.

Since at least 2005 I've been dabbling with creating my own Diablo 2 inspired hero and item system. Well I've finally done it! I'm pleased to announce version 1.17 on Google Play, App Store, and Steam. It should be available within a few days starting with open beta testers on Google Play.

This may be the most work I've ever put into a single update, aside from maybe 1.3 translation or 1.12 online multiplayer.

chesscraft screenshot

Champions

In the new champion system:

  • Choose from six different champion types: Valkyrie, Siren, Algomancer, Paladin, Druid, and Highlander.
  • Gain experience and level up by winning chess games.
  • Loot magical items from captured pieces.
  • Equip magical items to enhance your champion.
  • Buy and sell items from NPC merchants.
  • Use 75 different types of magical enchantments, all with randomized values and formulas for requirements and values.
  • Find 151 different types of base item.

chesscraft screenshot

I had a ton of fun over-engineering this in a major way. There's spreadsheets for items, augments, merchants, and champions. Their categories intersect and formulas interact with each other. I also used all that data to generate the Arboric Codex pages as a reference if you want to min-max the game.

chesscraft screenshot

No Thanks

If you don't like this you can turn most of it off and still get the same essential ChessCraft experience. Also no amount of gems, experience, items, or levelling up will help you win any chess games. It's a completely isolated additional system.

Augments

Magic items have augments with random rolls on their X, Y, and Z values. So what's an augment? Here's some concrete examples:

X% more gems on prime number days. Y% less on every other day.

Where X and Y are rolled randomly. For example, earn 35% more gems on days like February 17, because 17 is a prime number.

X% enhanced damage

Weapons like axes, spears, and bows have a base damage value that can be enhanced. More damage earns more gems when you win a chess game.

X% more experience from undead

Capturing pieces gives your champion experience. This enhances how much you get from undead pieces like skeletons, ghosts, and vampires.

+X to constitution

There are six different stats. Constitution increases how long items stay on the board before disappearing, and it reduces the experience penalty for losing friendly pieces.

Sounds

My wife and I recorded all the 101 voice clips for the champions like "I can't" and "I'll put that to good use". I voluntold my wife but I think she had fun.

I also had lots of fun rummaging around my home for unusual items and clanking them near a microphone to record 76 sounds. Good thing I have a real sword, shield, and bo staff!

Game Balance and the Simulator

If you're not familiar with complex ARPGs you may not understand how challenging it is to tune the many numbers in these formulas. A well designed ARPG game is fun to start, balanced but exploitable, mildly addictive, and has a good end game grind for dedicated players. But I don't have a large team of testers to continuously play and replay the game for hours to report back on the "feel" of it. And even if I playtest to try out the current parameters just one small tweak could add up to dramatic end game changes. It may take hours of replaying to find a bad vibe. Or I'd only see the problem 10% of the time.

That's why I made the champion simulator. This is a tool that only I have access to which simulates many hours of gameplay in seconds. At any time I can have my champion play automated simulated games. Here's the results after a new level 1 champion played 500 chess games:

chesscraft screenshot

These are full simulated games with captured pieces sometimes dropping random items, a champion choosing to equip or sell them, the champion levelling up and assigning their stats, all while tracking key metrics that help me imagine what the gameplay experience must have felt like.

In one simulation I saw an anomaly: the champion became mega rich. I investigated. The champion had found and sold one item with a bug that made it worth way too much. Fixed!

In other simulations I saw that even after 500 games the champion still hadn't filled in all their equipment slots. I discovered that rings and amulets were accidentally extremely rare. Fixed!

Overall, there are dozens of parameters and formulas for the amounts of experience, gems, and items earned, or the amount, rarity, and strength of magic augments on items. I take my best guess, run the simulator, and try to understand the story of the latest champion. An AI with access to the simulator logs helps me track down precise events and items. It hunts down the anomalies that I find and even makes suggestions to fix them. The simulator and AI have been a super fun and super insightful tool!

St. Patrick's Day

Fun fact: magic items are twice as likely to drop on St. Patrick's Day.

UI - Stone

For years folks have been asking me to revamp my UI. Well I've finally done it. There's a new stone style across 40+ screens. It's still not AAA studio quality but I'm finally satisfied.

chesscraft screenshot

I also updated the website style to match and added new reference pages called the Arboric Codex. This new style is inspired by the old classic Arreat Summit for Diablo 2.

Project Internals

I executed a wonderful and massive project cleanup. I consulted AI to help design a better standardized project layout and folder structure. I sorted, moved, and deleted a ton of files. Deduplicated utility script components and standardized how they are setup and run. After nearly a decade of hobbyist development, clutter sure accumulates!

Part of the reason I did this was to prepare the project for a contract developer I hired earlier this year. The work they did was okay but ultimately I decided it wasn't worth the money or trouble to continue working with them. My expectations or standards are probably too high when it's my own money and my own project.

Relics

Introduced in version 1.11, relics are collectibles that look like jiggling pieces, scrolls, and themes you can pick up during play. The old system to decide how many and which to drop was shockingly sloppy - with some relics extremely rare or even impossible to collect. Sorry about that - completionists. I rebuilt this system.

GenAI

These are very exciting times for people that love building. After years of passively looking to hire help I've finally found an excellent teammate. Unfortunately, they're not human.

I wrote about how I used AI and didn't use AI for ChessCraft art here. On the code side, I've been using AI like ChatGPT to help a little bit here and there since perhaps 2022. For example AI helped plan my database migration. However AI has always been a side note in the ChessCraft story. Whereas 1.17 is the first release where bugs were one-shot fixed and entire features were one-shot implemented by AI. No copy pasting from a browser. I just ask and my files are fixed.

I must be having such a great experience partly because I know what to ask and how to ask. About 80% of the time AI has been nailing it one shot.

I've never hit my token limits on the cheapest plan - even while running a few agents at once. I think because my asks are so specific and guided. The AI of 2026 is incredible, fun, and extremely useful for building products.

Once this release settles down I can't wait to re-examine my big to-do list of 303 items on GitLab. That's because priorities are all about cost and benefit - and the costs of some tasks have now dropped significantly. Things I never thought I'd bother doing with ChessCraft are just a prompt away.

Until next time...

If you like, you can sign up for the ChessCraft newsletter by email. Thanks so much for reading!

white griffin sprite