
Hearthfall: My Pixel-Art Roguelike
I made a video game! 🎮
Hearthfall is a story-driven pixel-art roguelike. You fight your way down a dungeon, room by room, die, go back to town, and the story moves forward.
The whole story is playable from start to finish. What's left is art, balance, polish, and a redesign of the final boss.
❄️ The Story

The kingdom of Hearthmere has known only winter for three hundred years.
A magic flame called the Hearth keeps the city alive. The Church says the cold comes from a Hollow King buried below, and that killing him will bring summer back.

So the Descenders' Guild sends people down the Pit, a giant shaft in the old district, into the Undercroft.
Most go for the loot: three centuries of weapons, alchemy and strange magic, left behind by everyone who died down there. A few have reached the king. Nobody has ever beaten him.

You play a nameless Descender who can't remember falling. You wake up at the bottom next to Snowdrop, a small, cheerful flame spirit who says you hit your head.
She revives you when you die, eats the souls of what you kill, and powers your spells. She seems very happy to have you. 🙂

⚔️ How It Plays
It's a twin-stick action roguelike, kind of a mix of Hades and Slay the Spire:
- The fighting is fast top-down shooting and slashing.
- The route is a branching map you pick your way through, room by room.
- The progression is a Hades-style loop. You die, go back to town, and the story moves on.
It works with mouse and keyboard or a controller.
A Descent
Each depth is a branching map with the boss at the top. Before going into a room, you can see what's in it: a fight, an elite, a shop, a treasure chest (about 1% are mimics 👀), a rest site, a challenge, a mystery event...
The doors lock until every wave is dead. Then you grab the reward and pick the next room.
Building Your Character
This is the fun part. Every descent, you build a character out of stats, boons, weapons, spells, gear and companions.
There are 6 stats: Strength, Defense, Agility, Focus, Friendliness and Luck.
Enemies drop Embers, little coloured orbs that go into your stats. When a stat hits a breakpoint, you pick one of three boons.
On top of that:
- Weapons: 11 classes (pistols, shotguns, snipers, lasers, rockets, staffs...). They can have an element and up to three modifiers like bounce, pierce, homing or chain. And 53 recipes merge two weapons into a new one.
- Spells: three slots, paid for with souls. Instant casts, auras, beams, and conjured weapons.
- Gear: helmet, body, pants and boots, with 9 sets that give bonuses.
- Companions: hire them and they fight next to you.
- Curses: some of the most powerful items come with one...
When a build comes together, it gets a little chaotic. 💥
Mystery Events
There are 115 hand-written events: riddles, gambles, ambushes, deals and strangers. Some choices depend on your stats.
Bosses
Each depth has a story boss you always fight first. After that, the boss is picked at random from a rotation.
A short cutscene plays before and after every boss.

And at the bottom of depth 3, King Kaldor, the Hollow King, is waiting on his throne.

What's after the king? You'll have to find out for yourself. :)
🏘️ Hearthmere, the Hub
When you die (or win), you go back to Hearthmere, a snowy walled town above the Pit.
You spend Ash, the currency you keep between runs, on new heroes and on perks sold by the townsfolk. There are 6 heroes: the Wanderer, Berserker, Paladin, Rogue, Mage and Bard (who starts with Biscuit the dog 🐶).
The people of Hearthmere have their own stories, and they move forward as you play. A gold "!" shows up when someone has something new to say.
Your choices change the town, decide who lives, and lead to different endings.

There's also a training yard, an armory with every weapon in the game on display, daily challenges, New Game+, a boss rush, and 75 achievements.
📦 By the Numbers
The game got pretty big:
- Weapons: about 120 you can loot, plus 53 recipes
- Spells: 57
- Gear: 80 pieces in 9 sets
- Boons: 172
- Enemies: 225, including 44 bosses and minibosses
- Mystery events: 115
- Cutscenes: 44 scenes
- Dialogue: about 7,000 lines, from 53 characters
- Music: 43 tracks
- Code: about 100,000 lines of C#
🎬 Cutscenes
The cutscenes are pixel-art stills with captions and slow camera moves (zoom, pan, hold), plus music and sound effects.


The stills are AI-generated, then pixelated and matched to the game's palette.
🛠️ How It's Made
- Engine:
Unity 6.6withURP 2D(640×360, pixel-perfect) - Gameplay base:
TopDown Engine 5by More Mountains (characters, weapons, AI, inventory) - Dialogue:
Inkby inkle. Every conversation in the game is written in it. - UI:
UI Toolkit - Camera:
Cinemachine - Tools: about 90
Pythonscripts that generate and recolour sprites - Balancing: anonymous run summaries sent to
Supabase(you can turn it off)
Every sprite is remapped to one shared palette, Resurrect 64, so art from different packs looks like it belongs together.
All the content (weapons, spells, boons, enemies, events...) lives in JSON files, and a menu in Unity turns them into game data in one click.
And most of the code was written with Claude Code. It can even read the Unity console and inspect scenes by itself.
🚧 The Making Of
I started this project back in December 2023, as a prototype in Unity 2022.3. In October 2026, I rebuilt it in Unity 6.6: that month alone has 651 commits.
The full story of how it got made, with the early versions, the playtests and the glitches, is coming soon!

