~/adam.log

Custom Roguelike - Five Blades Deep Goes Up on Steam

Published 2026-10-19

Five Blades Deep Goes Up on Steam

The Rat King steps to the back

My first Steam screenshots caught the Rat King standing right in front of the hero with his Rats lined up behind him, when bosses with company are supposed to stand at the far right. His Rats are tagged as bosses too (so the fight counts as a boss fight), and the spot layout saw four “bosses” and kept them in the order they spawned, King first. Now only the leader counts for the back spot, so the Rats fill in from the front and the King waits behind them.

Dungeon wins counted at the right tier

I noticed I never got the achievements for winning the 2, 3 or 4 Blades dungeons. The run’s tier was reset to Dungeon Crawl a few lines before the win was written down, so every win at every tier went into the history as a Dungeon Crawl win: none of the “Win the N Blades dungeon” achievements could ever unlock, and the History screen’s per-tier wins were off the same way. The tier is now read before the reset. For the wins already played, the Blades you own say which dungeons you have finished, so on launch the game hands out the any-class “Win the … dungeon” achievements for those; the per-class ones need a new win, since nobody wrote down which class won.

Five Blades Deep goes up on Steam

Steamworks finally verified me, so today was the store page. I picked a pixel black-letter font (Jacquard24) for the title, and every capsule and library image is built by a script from the game’s own sprites: the five heroes facing the Demon in front of his castle. The library logo first came out tiny in Steam’s bottom-left box, so it went to two lines and the heroes moved right to make room. Eight real screenshots, the descriptions, tags, content survey and Early Access answers went in, and the page is now with Valve for review.

The free demo is its own little app on Steam, but it doesn’t get a separate store page: it shows up as a Download Demo button on the main page, with DEMO-badged copies of the art in my library. In the game it is a demo build: only the first dungeon can be picked, the Blade dungeons are shown locked (“Available in Early Access”), and after the Skeleton King’s victory screen a “Thank you for playing!” page points to Early Access. A script now builds the Windows depot and the SteamPipe file for the upload, so the demo’s first build is ready to go up.

The demo points back to the full game

The demo’s first build is on Steam. Its last page now does more than say thank you: under the text sit two buttons with the official Steam and Discord logos, “Wishlist on Steam” and “Join our Discord”. A click (or S / D) opens the full game’s store page right inside the Steam client, where the Wishlist button is, or the new Discord server’s invite. My first try put the links inline in blue text, and it didn’t look clickable at all, so they became real buttons that light up yellow under the mouse. The hidden Debug class is also switched off in the demo.

The full game asks for a review

The full game gets the same two buttons. Owners can’t wishlist a game they already have, so here the Steam one reads “Review on Steam”. They sit on the main menu, either side of the “Enter to select” hint, and on a new closing page after the Demon’s first defeat: “The five Blades are home, and the Demon is gone. Thanks for playing Five Blades Deep in Early Access.” Both pages now share one piece of button code with the demo’s.

A tester crash and Next Fest

The battle tester’s End screens list crashed now and then, and I had blamed stepping through the screens with Left/Right. A throwaway test that played the real game loop with 30,000 random key presses found the real cause in seconds: going back to the list and picking another screen. For the moment the screen fades out, the tester let go of the frame, and the real title screen tried to run on the end screen’s half-built world. The list now holds on until the new screen is ready. I also put Steam Next Fest on the list: the demo comes out November 16, and the February 2027 fest needs the base page “Coming soon” and my registration by January 10, a trailer by February 22, and Early Access only after it ends.

Achievements on Steam

Every theme’s enemies now have their own kill achievement (42 new ones, from 25 kills for the common ones down to 5 for the rarest), and a boss that comes with a pack counts once, on its last member. Exactly 100 of the achievements go to Steam: the Arena, Endless and the new kill achievements stay in-game only. The full Windows build loads Steam’s own library when it starts, sends everything already earned, and then each new one the moment its popup shows. A script draws the 256-pixel achieved and un-achieved icons for Steam from the game’s own ability and class icons. Before Early Access I also wanted to be sure every ability really counts toward its “Use … 10 times” achievement, after the tier wins turned out never to record: a throwaway test used each of the 34 abilities once through the real game code (27 battle techniques and 7 out-of-combat abilities like Roar, Stealth and the traps), and every one counted.

Steam Cloud

Steam Cloud will carry a player’s progress between PCs: the Blades, the run stats, the achievements and the controls. Window size, fullscreen and the other options stay with each machine, and so does a saved run, so two PCs can never fight over one run. That meant giving the keymap its own keymap.ron again; it had been one entry of settings.ron with the per-machine options. A keymap saved the old way moves to the new file the first time the game loads it. The Auto-Cloud rules (four files in the save folder) are written down in the Steam checklist for when I set them up in Steamworks.

The demo gets achievements too

The demo now has its own Steam achievements: the 69 a Dungeon Crawl run can actually earn, from the Sewer’s kill achievements and the first dungeon’s wins to the potions, gold, quests, weapon upgrades and every class’s abilities. The Blade-tier wins and the Final Demon stay off its list, so nobody sees an achievement in the demo they can’t get. In the game the demo’s Achievements screen still shows all of them, the Blade ones locked. The demo and the full game share one save folder, so anything earned in the demo pops on Steam the first time the full game starts. The icon script now also makes a folder with just the demo’s list and icons for the Steamworks upload.

“Full game” on the demo’s achievements

The demo’s Achievements screen shows every achievement, including the ones only the full game can give, so now those say so: “FULL GAME” is stamped in red across each box a Dungeon Crawl run can’t earn, slanted like a sticker. One already earned (the demo shares the full game’s save folder) shows normally. Three Sewer kill achievements that only live in the game, not on Steam, were missing the demo mark and would have been stamped by mistake, so they got it too.

Quest boxes that know where you are going

The item quests still told you to “Find the Old Key in the dungeon”, even when the run was headed up a mountain or into a swamp. Now every objective names the run’s place: in the Sewer, on the Mountain, in the Swamp, in the Forest, in the Dungeon or in the Demon Castle (Endless keeps “the dungeon”). Each quest also got its own line for while it’s open, so going back to the Witch without her herb gets “No herb yet, dearie? The cauldron is getting cold.” instead of her goodbye. The goodbye now comes only when I actually give the quest up: she says it, ENTER closes it, and her offer is right back if I change my mind.

Achievements and Steam Cloud go live in Steamworks

Typing 169 achievements into Steamworks one by one was never going to happen, so the icon script now also writes the two spreadsheets Steamworks’ bulk import takes (the names and settings, and the English text) for each app. Both lists went in that way and are published: 100 for the full game and 69 for the demo. Steam Cloud’s rules are set up and published for both apps too, with the demo sharing the full game’s cloud so progress carries over when someone buys the game. The last steps (ticking both features on the store page and testing them in the Steam client) wait until Valve finishes reviewing the pages, so nothing changes while they look.

The Fisher’s quests, planned

The Fisher has stood on his pier since the new town went in without a single job to give, so his three quests are next. He offers them in any order, picking one that fits where the next run is headed: the Lucky Lure before the Forest, the Mountain or the Swamp, the Old Net before the Sewer, and the Golden Carp before the Sewer, the Swamp or the Forest. The Carp isn’t an item to find but a fight: it waits at a pond (the Sewer already builds a pond room just for it), and it gets its own PixelLab art. All three pay gold (40, 40 and 80), he jumps for joy when one comes back, and finishing all three earns “Fisher’s Friend”. The Forest should get a river one day, and the Carp will swim there too.

The Fisher gets his quests

The Fisher finally has work to give. The Golden Carp came first: a 48-pixel PixelLab fish sitting in a puddle of its own, with its own animations and sounds and a backdrop for every place it can be fought. The Sewer one took two rounds, since the first channel was too narrow for the Carp to sit in, so in the end I painted a wide channel by hand for Leonardo to work from. In a run the Carp waits on water (the Sewer’s pond room, or a Swamp pond) and doesn’t chase anyone: you walk up to it. Each visit the Fisher offers whichever of his three quests fits where the run is going: the Lucky Lure that a crow stole, the Old Net the storm washed down the drain, or the Carp itself. When one comes back he jumps for joy, and all three earn “Fisher’s Friend”. The Lure and the Net got their own icons too. The first play test turned up one thing: the yellow “!” over his head was drawn on top of his own quest box, because he stands right under it by his pond, so quest marks now hide while someone is talking. The Forest is left out of the Carp’s places until it gets its river, which is next.

A river runs through the Forest

Every Forest floor now has a river winding from north to south, three to five squares wide. It drops off the northern cliff as a waterfall (four frames of falling water, drawn by a script like the campfire) and runs on across the map and out through the trees at the far edge. Wooden bridges cross it east to west: one where the walk from the start to the exit meets the water, then more until every part of the floor can be reached again, and the trail runs over them. Fights beside the river or on a bridge use the pond backdrop for now, until I make a proper riverbank one. Cattails and lily pads grow along its shores, and the Golden Carp lives there too, so the Fisher asks for it before Forest runs again. The bots played the Forest at 3 Blades to check nobody got stuck on the wrong bank: none did, and they won 69% of their runs, close to the 75% from before.

A riverbank to fight on

Fights by the river now have their own backdrop instead of borrowing the pond’s: the Forest floor again, with the river coming out of the trees behind the hero and running off past their left side, while the enemies keep the dry ground on the right. Leonardo gave four; two of them put the hero knee-deep in the water, and I took the one with the hero standing right on the bank. The first try still had the back-left goblin standing in the water, so on this backdrop the Actions box and the enemies come down a few rows, the way they do in the Demon Castle, onto the bank where the river has already turned away. The main backdrop sheet is full, so it starts a second row on the prologue’s sheet.