Wordhoard: designing a word roguelike that isn't 'Balatro with letters'
Wordhoard is a word roguelike set inside an illuminated manuscript. The beasts doodled in medieval margins (snail knights, killer rabbits, bagpipe-playing bears) have climbed onto the page and are eating the words. You're the scribe.
My brief to myself was strict: polished from the first build, original, and not "Balatro with letters". There are already several word roguelites on that template (Letterlike, Lexforge, Wordlike, Spellbrew, Wordatro), and I didn't want to be the sixth.
What makes it different
- A board, not a rack. You trace words on a 5×5 grid with the same swipe as Word Search, a gesture my players already know. Used tiles vanish, tiles above drop down, and new letters fall in.
- A satchel instead of a deck. The letters that fall in come from a satchel you build over the run: add strong letters, digraph tiles, wilds.
- Beasts instead of score targets. Each page is a beast with health and a visible next action. For the first two pages of a chapter you choose which of two beasts to fight, then the chapter boss, building up to a dragon that hoards every word.
- Rare words score more. Common words do modest damage. Obscure ones hit hard.
- Charms keyed to the board's geometry: straight lines, corners, words spanning the board, chains, palindromes. 44 charms, all of them working in all 12 languages.
Rarity from word frequency (harder than it sounds)
"Rare words score more" needs a rarity for every word in twelve languages. I started from subtitle-based frequency lists, and immediately hit a problem: inflected forms are undercounted. DEFERS appears 21 times in the corpus, and DEFER 548 times. Ranked raw, perfectly ordinary words showed up as "Arcane".
Each word now takes the frequency of its family: its stem, with up to three letters cut. Rarity tiers are cut per million words, so they mean the same thing in every language.
A technical aside: the dictionaries are Hunspell. The JavaScript Hunspell library never finished loading the Portuguese dictionary (I killed it after 12 minutes). A pure-Python Hunspell loaded it in under a second. Use whatever finishes.
The look
Vellum, lapis blue, vermilion and gold leaf. There are 93 pieces of art, all generated from one style reference: the reference first, then every beast, charm, ink, satchel and interface icon, reviewed together on contact sheets so nothing drifts off-style.
The combo the simulator missed
The balance sim said the game was fair: a typical player won 16% of runs, a casual one cleared chapter 3 95% of the time, an expert won 77%, and no charm dominated.
Then I played it and found it "a little easy". I got to chapter 9 with Mimic copying Dragon's Hoard. Dragon's Hoard multiplied word score by 1 per 10 gold, with no cap, and I was carrying 249 gold. A six-letter word scored ×3,212, for 170,236 damage against a boss with 25,000 health.
The sim couldn't find that, because its simulated player buys charms at random and never builds a combo on purpose. The fixes:
- Dragon's Hoard is capped at ×4, and Miser's Purse at +15,
- beast health went up 10–40% from chapter 2, and endless chapters grow 2.5× instead of 1.75×,
- a test fails if any gold-scaling charm exceeds its cap at 1,000 gold,
- legendary charms appear in one boss chest in ten (it was about one in three), never in the shop, and never two at once.
Afterwards, a typical player wins 7% and an expert 70%.
The lessons: a random-buyer sim can't find degenerate combos. Every scaling effect needs a cap or a test, and copy effects (like Mimic) square whatever they copy.
Sounds that didn't fit
This game also taught me to be strict about sound. Things I threw out in playtesting:
- the "strike" sound, which was basically a gunshot. Far too much for a word game,
- a hissing burst of noise standing in for a page turn,
- the harp that replaced it, which sounded nothing like a page turn,
- a tile tap that played twice, on press and again on release.
The strike is now a seal stamp: a wooden knock and a soft paper pat. The page turn is a real recording of a page being turned. Each tapped letter plays exactly one sound. I wrote the rules down: no full-volume noise bursts, hits are knocks and stamps rather than booms, a sound imitating something real must sound like that thing, and one sound per action.
Ads
A banner, one rewarded "two more words" second chance per run, and Remove Ads. No interstitials. It went from repo to submitted in an afternoon, through the launch pipeline.


