~/adam.log

Custom Roguelike - The Prologue: a Tutorial in the Demon Castle, One-Hit AOE, and Fades Everywhere

Published 2026-09-30

Step 1: AOE attacks become one big hit

The five AOE techniques (Whirlwind, Flurry, Blizzard, Javelin Volley, Arrow Volley) were far too strong. Each one hit every enemy 3 to 9 times for a full attack, so an Arrow Volley on floor 1 did about 126 damage to everything on screen, and I could save one for the boss and kill it outright. Now each one is a single hit on every enemy for 225% of my attack damage. My attack already includes the Blade buff and my weapon, so the AOE still grows as I go deeper. On floor 1 that’s about 31 damage: every Goblin, Kobold and Orc dies, and an Ogre (35 HP) is left at a sliver. On floor 2 it’s about 47, which kills an Ogre and leaves an Ettin (70 HP) at about a third. The percent is set per ability in template.ron if one class needs a nudge later. The Battle Arena uses the same abilities, so it changes too; the classes should feel the same everywhere.

The timing changed with it. Nothing lands until the whole move has played out, then every enemy takes its hit at the same moment. For the Mage, Hunter and Amazon, the volley fires two shots per enemy: one at each enemy and one at a random spot around the formation. They’re shuffled together and launched at uneven gaps, so it doesn’t read as “first the hits, then the misses.”

Step 2: the Rogue blinks and the Barbarian jumps

I had PixelLab make two new animations for this: a Flurry Power-Up for the Rogue and a Jump for the Barbarian. Both went onto character_technique.png as rows 19 and 20 (tools/place_aoe_moves.py), which grew the sheet to 21 rows. The jump rises higher than a 32-pixel cell, so those frames are cropped around the Barbarian with his feet on the bottom row, and the game draws the arc of the jump itself.

Flurry now powers up where the Rogue stands, then blinks next to an enemy for three quick frames of the Flurry animation, vanishes for a frame, and blinks to the next one, four times around the formation. Whirlwind jumps the Barbarian into the middle of the enemies, spins there, and blinks him back home (I’m making a south-west jump for the trip back). In both cases the enemies take their hits together once he’s home. Drawing the player somewhere other than their own spot needed a new console (62), because the old technique console can only place whole cells and the enemies stand between them. Where exactly the Rogue stands next to an enemy, and how high the jump arcs, are first guesses until I see them in a real fight.

Step 3: two spins, a jump home, and no more shake

I recorded both moves in a real fight. The Mage, Hunter and Amazon looked right, but the Rogue and the Barbarian both gave a little shake at the very end. That turned out to be the ordinary “attacking” flash every hit sets on the player: once they’re home and back in their normal stance, that flash shakes it. The cast animation the other three are still showing never shakes, which is why they looked fine. The moves that travel now clear that flash when the hits land.

Whirlwind now spins twice in the middle of the enemies instead of once, and I made a south-west Jump so the Barbarian jumps home instead of blinking. It went onto row 21 of character_technique.png (22 rows now). The highest frame of each jump is two pixels taller than a cell, so those frames lose the top of the axe instead of his feet.

Step 4: icons for the Debug abilities

Three of the Debug class’s abilities never got real icons: Battle 4 showed a plain “9”, Final Boss a plain “ƒ”, and Current Boss borrowed the “B” cell, which is actually the Hunter’s picture. Final Boss now shows the Final Demon himself, his south-facing walk frame shrunk down into the “ƒ” cell. For the other two I set up a PixelLab request (art_requests/debug_icons.json) with four variations each: a crown for Current Boss, which moves to its own free cell, and a little group of four enemies for Battle 4.

The PixelLab run cost 20 generations. I picked the gold crown with a big ruby in front for Current Boss, which now has its own cell (“▲”), and a goblin, a smaller goblin, a slime and a bat for Battle 4.

Step 5: the battle cursor only shows when it means something

In a fight it was hard to tell when I could actually pick something. The Actions box always had its yellow pointer on a row, even while my gauge was still filling or an enemy was attacking, and one enemy always had a yellow “> Name” on it before I’d chosen anything. Now the Actions pointer only shows when I can pick an ability, and it stays on that ability while I choose who to hit with it. The enemy highlight only shows while I’m choosing a target, so seeing “> Name” means I’m aiming. In Active ATB, where I can queue an action before my turn comes up, the pointer shows while I can queue and goes dark once something is queued, until it goes off. The arrow keys follow the same rule in both modes: they only move the cursor while it’s showing.

Step 6: Active ATB lets me pick ahead

I’d assumed Active ATB let me choose my next move while my gauge was still filling, but it never did. The menu only opened once the gauge was full, same as Wait mode, and the only “queue” was a pick made while an enemy’s attack was on screen, which always hit the default enemy. Now in Active ATB I can pick an ability and its enemy any time except while my own action is playing: while the gauge fills, on my turn, or in the middle of an enemy’s attack. Once I confirm, it’s locked in. There’s no changing it, and the ability’s row and the enemy’s name turn light blue to show it. It fires the moment my gauge is full, and if that enemy has died in the meantime, it goes to another one. Wait mode plays exactly as before.

Under the hood, choosing a target used to be its own battle phase, and the gauges stopped moving during it. It’s now a layer that can sit on top of any phase, shared by both modes, so the gauges keep filling while I aim.

Step 7: the bosses fall over

PixelLab gave me full animation sets for nine of the themed bosses, and I used them for the death animations only. Skeleton King, Yeti King, Massive Alligator, Hulking Lizardfolk, Bullywug King, Massive Goat, Manticore Alpha and Guard Commander now collapse instead of just vanishing, and so does every slime in the Large Red Slime fight: the Large Red Slime when it splits, the two Red Slimes when they split, and the four Small Red Slimes when they die. It’s the same bursting animation each time, drawn at 1.5x for the Large one and 0.6x for the Small ones so it matches the slime it came from. An ordinary Red Slime out on floor 1 still just disappears, since only the boss fight’s slimes get it. Yeti King’s zip came without a Death animation at first, so I made one in PixelLab the same afternoon and he goes down like the rest. All nine went onto enemy_death.png, which grew from 5 rows to 14.

The first recording showed the slime split in the wrong order: the Large Red Slime died, the two Red Slimes appeared and the formation re-centred right away, and the burst played underneath them. The last slime’s death didn’t show at all, because the kill that ends a fight jumped straight to the victory screen, and that was true for every boss, not just the slimes. Now a death animation holds the fight while it plays. The gauges stop, nobody can act, and the enemies still standing keep their spots instead of sliding onto the corpse. Once it finishes, the split’s children join the fight, or the victory screen opens. The balance bots never play animations, so they skip straight past the hold.

The victory screen also read the slime fight wrong: “You defeated the Small Red Slime, the Small Red Slime, the Small Red Slime, and the Small Red Slime!” It’s one boss fight, so it now just says I defeated the Large Red Slime. The battle log still shows each piece dying as it happens.

The Rat Pack got the same treatment. It’s still four rats in the fight, but each one now knows it belongs to the Rat Pack, so the victory screen says I defeated the Rat Pack instead of listing four Rats.

Step 8: counting more things for achievements

Before the balance pass I wanted the game to start counting a few more things, so that if I add an achievement for one of them later, it won’t have to count backwards. The history file now also keeps the damage I deal and take in battle, every step I walk, the gold I spend in shops, the enemies I kill with the opening strike of a Stealth ambush, and the dungeon floors I get through without a single fight. Nothing shows them yet. Reset progress and history in Options still wipes them along with everything else, behind its “are you sure” box.

Gold spent took a detour: the input system already takes the most resources legion allows a system (8), so it couldn’t take the history as well. A purchase now leaves a small marker behind, and a separate system counts it on the next turn. Steps aren’t saved on every step, just alongside the next thing that gets saved, and once more when the run ends.

I also wrote down two story ideas. The Elder will talk about the far-away places the Blades were sent, and tell me which one this run’s Blade is in. And the prologue has more shape now: the Blades are meant to be used on the Demon, and that’s how I’ll win in the end. But the hero keeps their extra power and fights with them instead. He has carried them too long, takes too many hits, and gets pulled into the nether at the end of the fight. When he never comes home, the Elder goes down with his acolytes and has them spread the Blades far apart, so the Demon can’t gather all their power when it comes back.

Step 9: the Elder knows where the Blade is

The first time I talk to the Elder in a run, he now tells me where the acolytes took the Blade for this dungeon, with two lines for each of the five places and one picked at random. In the Forest it might be “Listen for the forest going quiet. That is where the Blade lies.” If he has a quest for me on that visit, the line comes first and the offer follows. After that he’s back to his normal lore, which has a new line: he begged the old hero to use the Blades on the Demon instead of keeping their power, and if the hero had listened, he’d never have had to scatter them and I wouldn’t have to bring them back. It works in every tier, Dungeon Crawl included.

A few of these lines promise sounds, like the forest going quiet, the Blades humming and the nether stirring, so I listed them in the audio item so the sound matches what people say once there’s audio.

Step 10: a pause menu I can actually read

The pause menu was printed straight onto the town map, so Resume, Options and Quit were hard to pick out against the grass and cobblestones. It now sits in its own box, with a blank row between the choices, and the help line and the “your run is saved” line are inside the box too. Left and Right now page through the hints by hand, and the Hints title shows which one I’m on (“Hints (12 of 70)”). One hint was simply wrong: it said my portrait tints red when my health is low, but it’s my character on the map that does.

Then I went through the hints themselves. Seventy was far too many, and a lot of them were things every RPG player already knows (arrow keys move, poison hurts every turn, bosses leave loot). I cut those, folded the ones that repeated each other into a single hint (four about the Fortress Ingot became two), dropped the ones that just repeated a quest’s reward, and removed the Endless one because Endless doesn’t exist yet. That leaves 45, and each of them tells me something specific to this game. Then I added four new ones: talk to the Elder first because he knows where the Blade is, the battle settings in Options, picking ahead in True ATB mode, and that the run is saved in town but lost if I quit in the dungeon. That brings it to 49. I also renamed the “True ATB” setting in Options to “Active”, which says what it does. If a settings file still has the old name saved, it loads as Active.

Step 11: planning the prologue, and a sixth theme - the Demon Castle

I started planning the prologue: a one-off opening where I play a powerful hero who has gathered all five Blades and goes down to kill the Demon. He is vain and certain he will win. He fights through two or three hand-made rooms, one kind of attack per room (single-target hits, then spells, then one AOE that wipes the room), and then the Demon. That fight is scripted: after his first attack I lose control while he monologues and lets the Demon hit him, and before the killing blow the Demon tells him he should have given up the Blades, because they will consume him. The Demon dies, the hero is pulled into the nether, and instead of a Victory screen the Elder comes down with acolytes to spread the Blades far apart. He comes back later as one of Endless’s final bosses, in a Nether theme I added to the Endless plans. His first PixelLab character is done: black jagged plate with crimson trim, glowing red eyes, and five gold sword hilts fanned behind his shoulders.

The prologue’s map is the Demon’s castle, so I made it a real theme. The tileset came from PixelLab and gives dark charcoal flagstones, walls with banners and spikes, a crimson carpet, a rune circle, lava cracks, a lava pool, a brazier, a toppled statue and a chasm. The battle and Defeat backdrops came from Leonardo and took several rounds. The short prompts kept coming back flat and top-down, and what finally worked was a long prompt that spells out the room: a back wall I can see the face of, the side walls receding, and where the floor has to stay empty. The castle has two battle backdrops, a plain castle room for every fight and the Demon’s throne room for boss fights only, which is new: each theme used to have exactly one. A fight now remembers whether it started with a boss, so the throne room stays up even after the boss dies first, and on the Victory screen.

The Demon Castle is now the sixth theme in the normal dungeon pool, with its own Defeat scene (the long pillared hall with the throne far away) and its own Elder lines. It has no enemies of its own yet, so its floors spawn the Forest set, and no Victory scenes, so a win shows the Dungeon’s. It is also meant to become the final dungeon of the 5-Blade tier. One permanent test assumed every theme has its own roster; it now checks the bounty against the roster a floor really spawns.

Then I changed my mind about where the castle shows up: only in the 5 Blades dungeon. It’s where the Demon lives, so no other run should ever wander into it. Every other run rolls from the other five themes, a 5 Blades run is always the castle, and winning there already shows the ending in the happy town, so the castle never needs Victory scenes of its own. What it does need is its own enemies for each of its three floors, and a few bosses before the Demon.

The castle has its own enemies now, at least on paper. Floor 1 is Imps and Hellhounds, guarded by an Imp Swarm (four Imps at once, the same trick as the Sewer’s Rat Pack). Floor 2 is Hellhounds, Cultists and Fallen Knights, guarded by the Fallen Champion, someone who carried the Blades before me and ended up twisted by them. Floor 3 is Fallen Knights and Demon Guards, and then the Demon. Their stats are placeholders until the balance pass, and they show as plain letters until the PixelLab art comes back. A new script is ready to place all six the moment it does: it can check every animation first without writing anything, and it refuses to half-write the sheets if something is missing.

My first look at the castle in the game: the map and the Defeat screen looked right, but in battle every enemy stood on the back wall, the Demon in front of his own throne included. The castle’s backdrops use a lower camera than every other theme’s, so the floor starts much further down the screen, and the standing spots every theme had shared (a lone enemy always stood in the same high spot) put them on the wall. Each theme now also says where a lone enemy stands, and the castle moves everyone down onto the floor. I also gave the Cultist a ranged attack: it throws its fireball across the room and the hit lands when the fire arrives, the same way the archers’ arrows work.

The first balance run on the new 5 Blades dungeon came back hard: 33% of runs won, down from 69% on Forest and 57% on Dungeon before the castle. The Mage still wins nearly every time (14 of 15), but the other four classes won only 1 to 4 of 15 each. Most deaths are still the Demon himself (37 of 50), and the castle’s own floors now claim a handful of runs on the way (the Imp Swarm, Fallen Knights, Hellhounds, Demon Guards). The castle enemies’ stats are placeholders, so this is the number to fix before merging.

To find out why, I had the bots log every run’s health going into the Demon fight, won or lost, then tuned the castle a little (weaker Imps, a slower Hellhound, less damage from the Cultist, Fallen Knight and Demon Guard) and ran it next to the same dungeon forced to Forest, on the same code. The castle came out at 29% and Forest at 40%, which is within the noise for 75 runs. The castle’s floors are now actually easier than Forest’s: more runs reach the Demon, with about the same health. The real surprise was Forest itself: it won 69% the day before and 40% now, so something else I merged since then made the final dungeon harder on every theme. That is a job for the big balance pass, not the castle.

Step 12: the prologue hero gets his animations

The Hero Knight now has everything the prologue needs, generated through the PixelLab API instead of by hand: a walk, a battle idle, a sword attack for the first room, a fire-bolt spell for the second, an AOE for the third, a defend, a hit reaction for when he lets the Demon strike him, a death, and being pulled into the nether at the end, next to the laugh I’d already made for his monologue. Three of them were weak the first time: the idle drifted into a crouch instead of looping, the AOE was a small orange puff, and the nether pull was him just sinking. The second tries are much better. The idle ends on the pose it starts from, so it loops cleanly, the AOE ends in a crimson ring, and a glowing portal opens under him while tentacles drag him down. The whole set cost 15 generations.

Step 13: the prologue becomes the tutorial

I decided the prologue is also the game’s tutorial. Five scripted rooms in the Demon’s castle, each teaching one thing. Room 1 is two Imps with nothing but Attack, and one of them drops a Shadow Bolt, which explains ability drops. Room 2 is a Fallen Knight that one Shadow Bolt kills. Room 3 is an ambush by four Hellhounds, which teaches waiting with Space and fighting several enemies at once, all killed by one Blade Nova. Room 4 is the Fallen Champion, who hurts him badly: he laughs, says “I’ll be right back”, flees, drinks a potion and finishes the job, which teaches fleeing and potions. Then comes Battle Shout, an out-of-combat ability worth +50% on his next 20 melee attacks, and then the Demon. He can never lose; every action is scripted. It plays the first time the game starts, and it can be replayed from Options. The full plan, a table of which abilities he uses and gains in each room, and a first draft of every line are in docs/prologue_script.md. On the art side the hero got Jump, Jump Back and two Battle Shouts (one for the map). The first try at each shout came back broken, one with a grey box behind it and one with a red blob, and the second tries are clean. I also sent one big PixelLab icon request that fills all 64 slots: his three ability icons, props for the castle map (a throne, gates, pillars, the five Blades lying on the floor, the nether rift), and icons Endless will need later.

Step 14: the prologue is built

The prologue is playable now, on its own branch. The hero is a hidden class like Debug, so his walk, attack, spells, laugh, hit and nether pull all went onto the normal player sheets, and his three ability icons (the dark bolt, the sword in the crimson burst, the roaring helm) went into the font. The castle is one hand-drawn map with five rooms in a row, and each room’s door stays a wall until its fight is won. Every fight runs from a small script: the battle menu greys out everything except the one action the lesson is about, every hit deals exactly what the script says (a share of the enemy’s health, so the numbers in the data files don’t matter), enemies never fill their gauges and only swing when the script tells them to, and the drops are the ones from my ability table instead of a random roll. Story boxes pop up on the map and in the middle of fights and wait for Enter. Walking into one Imp pulls both into the fight, the four Hellhounds jump out around him when he gets near the middle of room 3 and only Space works until they close in, and after fleeing the Champion only the Item Menu works until he drinks. Battle Shout was the one new mechanic: +50% on his next 20 Attacks, spells don’t count. When the Demon dies there is no victory screen, just the nether pull on the throne-room backdrop and then the Elder’s two lines. It starts the first time you press a key on the title screen, and Options has a new “Play the prologue” row. I gave the hero 100 health so the Champion’s big hit and the potion both show clearly on his bar. I played the whole thing through in a test before looking at it on screen, and that caught the Demon’s scripted swing doing nothing (the final boss runs his own moves instead of a plain attack).

Step 15: the first prologue playtest

I played the prologue through once and made a list. The enemies just stood there, so they follow the hero again, like everywhere else; a fight now finds its room by the enemies’ names instead of where they stand, since they wander out of their rooms. Every killing blow said 1000 damage, because a scripted kill was the enemy’s health plus 999 to be safe; now it deals exactly what the enemy has left. The biggest change is how the tutorial boxes close: a box that teaches something stays on screen while you do it, and the key it asks for (Space, M, 1, the ability’s number in the battle menu) is what moves it on. Only the speech boxes wait for Enter. The potion and shout lessons now say that the Item Bar and the Ability Bar at the bottom can be clicked too. The rooms have lava pools to walk around now, and the lava cracks on the castle floor are single scattered tiles instead of big patches. In the ending the text box was covering the hero’s nether pull, so the boxes on the battle screens sit at the top now, and the Demon laughs while the hero is dragged under. After that the game goes back to the castle map with the hero gone, and the Elder walks into the throne room to say his lines. I also decided what the five acolytes are: nameless, all alike, only in the prologue (they died after carrying the Blades away), and they come back in Endless as the hero’s servants in the nether. The Elder and the acolytes will get walking animations.

Step 16: damage that adds up, and a new ending

The damage numbers in the prologue were all over the place: a hit could say 45 and the next one 5, because every hit was worked out as a share of whatever the enemy’s health happened to be. Now it works the other way round. The hero’s moves always hit for the same amount (Attack 30, or 45 after Battle Shout, Shadow Bolt 45, Blade Nova 60 to every enemy), and each enemy’s health is picked to fit the lesson: an Imp has 30 so one Attack kills it, the Fallen Knight 45 for one Shadow Bolt, a Hellhound 60 for one Blade Nova, and the Fallen Champion 105, which is a Shadow Bolt and then two Attacks after the potion. The Demon has 196, so four shouted blows leave him on exactly 1 HP. That’s on purpose, because I rewrote the ending. After the last hit the Demon says “Haha… you might have killed me, but this isn’t over.” and falls. The hero says “That was easy…”, pauses, then “…wait… noooo! I killed the Demon!!!!”, and he gets pulled into the nether while the Demon’s laugh fills the text box. Then the battle screen closes, and on the castle map the Elder walks into the throne room with his five acolytes in a line behind him. The acolytes are wearing the Townsman’s sprite for now, until they get their own.

Step 17: the second playtest

The second run through the prologue turned up a proper bug: the Imps would walk right beside the hero without ever stepping onto his tile, so I could walk straight past their fight. Now any enemy that catches up with him starts its fight at once. The “arrow keys” hint goes away once he walks into the first room instead of coming back after every line, the battle lessons say “Select Shadow Bolt or press 3”, and greyed-out Attack/Defend/Flee stay in their own column instead of sliding in with the abilities. The castle’s crimson carpet tile is painted like a banner, so patches of it looked like a wall of banners; it’s scattered one tile at a time now, like the lava cracks. The fights feel more like fights now: the ATB gauges fill on screen again, the script only decides who goes next, the Champion hits back once more after the potion, and the Demon swings back between the hero’s blows. There’s also a Defend lesson right after the hero says “take your best swing”, so the free hit shows what Defend does (it lands at half). Then I made the acolyte: one hooded, brown-robed PixelLab character for all five, plus walking animations for it and the Elder, generated through the API.

Step 18: the acolytes take the Blades

The ending doesn’t just stop on the Elder’s speech anymore. The five Blades now lie on the floor where the hero was pulled under (the icon I’d picked for it, finally on the map). The Elder walks in with his acolytes and says “The Demon is gone, but so is the hero… He should have given up the Blades.” Then, after he tells them to carry the Blades as far apart as the world goes, the acolytes go one at a time: each walks up to the Blades, stops to take one, and walks back out through the door until it’s out of sight, and the pile disappears with the last Blade. Left alone in the throne room, the Elder says one last thing: “The Demon will be back…”

Step 19: a curse, and fights that play the same every time

Another pass on the prologue. The fights now have no randomness at all: every gauge starts empty and every hit is scripted, so each fight plays out exactly the same way every time. The enemies’ gauges still fill in every fight, but they stop just short of full until the script lets them swing. The hero also wears down properly now: an Imp bites him, the Knight and a Hellhound each get a hit in first, and the Champion hits him hard. The Demon’s one big swing (the one you learn to Defend against) now leaves a curse on him that takes 9 HP every time he acts, so when he lands the killing blow he’s on 1 HP. The curse is what finishes him, and that’s why the nether takes him. The ending holds on the Demon’s body: it stays on screen for a couple of seconds before the hero talks, and stays there while he’s pulled under, which is slower now too. On the map, the Blades lying on the floor finally show up (the hidden hero was drawn on the same tile and covering them), and the Elder steps aside and turns to face the Blades before he talks, so the acolytes don’t walk through him.

Step 20: making the prologue feel like a real fight

This round was about making the prologue feel like a normal battle instead of a slideshow. The ATB gauges now run exactly as they do everywhere else: everyone fills at their own speed and whoever fills first goes. I stopped forcing the turn order and instead set where each gauge starts, worked out from the speeds so the natural order is the one the lesson needs (an Imp is faster than the hero, so he starts nearly full; one Hellhound starts ahead of him so it gets its bite in before his Blade Nova). The prologue always plays in Wait mode, whatever the Options say. The Defend lesson moved to the Fallen Champion (“I’ll give you a free one”), and the Demon fight goes: strike, the Demon’s swing does nothing (“…That was it?”) but leaves a curse that shows up as a debuff icon and hurts him every time he acts, then blows traded until the Demon is on his last HP. The ending stays on the battle screen now: the Demon’s body stays where it fell, the hero realizes what he’s done, the curse takes his last point of health with the usual damage number, and he’s pulled under. Battle Shout finally shows its buff icon too. The castle got its door: all the props I picked are now a proper tile block, the hero starts just inside a door in the south wall, and the rooms are closed off by portcullises instead of plain wall. The opening line is new (“We find our hero at the end of his journey…”), the Elder ends on “The Demon will return…”, and the Demon’s death animation is being redone so he ends up face down instead of kneeling.

Step 21: furnishing the castle

The prologue is merged into the main game now, so the next job was making the castle look lived in. All the props I picked from the icon batch were already sitting on the tile sheet, and now they’re on the map too. The entrance hall has two banner stands, the Imps’ room has a hanging cage, chains and candelabras, the Knight’s room a weapon rack, and the Champion’s room the demon altar. The ambush room only gets a pillar in each corner, because the Hellhounds need the rest of the floor to jump out on. The throne room finally has its throne, against the far wall behind the Demon, with his hoard either side and pillars and candelabras around it. Everything is solid, so you walk around it like the lava, and I checked that every floor tile is still reachable. I also decided the prologue doesn’t need a skip yet; it’s short.

The throne room was too big: the hero only sees eight tiles, so from most of the room you couldn’t see the far wall or the throne at all. I shrank it to 11 by 9, so standing by the Demon you can see the whole room, throne included.

Step 22: enemies hold their ground

In a fight with several enemies, every kill used to shuffle the survivors: the layout was worked out from how many were left, so killing the middle Goblin of three slid the other two into the two-enemy spots, and I kept losing track of which one I’d been hitting. Now the lineup is set when the fight starts. A dead enemy leaves its spot empty and everyone else stays exactly where they were, down to the last one standing. The only time the lineup is laid out again is when someone new joins: a slime splitting into its children, or the Ambush’s next wave of guards. The ATB bars keep their width as the fight thins out too, since that’s based on the lineup rather than on who’s left.

Step 23: knowing where to hand a quest in

When I came back to town with the mushroom, nothing told me who to take it to. Now the quest giver has a ? over their head: grey while I’m still working on their quest, and yellow once it’s ready to turn in. The Blacksmith gets a yellow ? too whenever I’m carrying a Fortress Ingot, which should help a new player work out what the ingot is for. The yellow ! still marks anyone with a quest to offer.

While I was in there I fixed accepting and giving up both being on Enter. The old guard only stopped a held Enter from doing two things, so pressing Enter a second time right after taking a quest dropped it again. Giving up is on X now, and Enter only accepts and turns in.

Step 24: the town save sticks around

The pause menu told me my run was saved whenever I was in town, but that wasn’t quite true. Choosing Continue Run deleted the save as it loaded it, and the next one wasn’t written until I got back from the next floor. Quitting straight away from the town I’d just continued into left me with nothing to continue. On top of that, the save was a snapshot from the moment I walked in, so a reload quietly rolled the town again: new quest offers, a different cat, and a fresh pick for the random ability reward if I’d already handed that quest in.

Now the save stays for as long as I’m in town, and the town rewrites it whenever something changes: taking, handing in or giving up a quest, buying something, drinking a potion. It also records what’s left on the shop counter, where the cat is and whether it has a quest, and the Elder’s line about the Blade, so continuing puts me back in the same town with the same offers. The save still goes away when I head down to the next floor, when I die or win, or when I reset from Options, so a bad fight in the dungeon still can’t be reloaded.

Step 25: WASD, and no abilities in town

Abilities no longer work in town. In a playtest I’d used my Armor and Cloaks while shopping, which wasted them, so now the number keys and the Ability Bar just do nothing while townsfolk are around. Potions and the other items still work there.

I also added WASD. The arrow keys always work now, for walking and for every menu, and on top of that there’s a set of movement keys that are WASD by default and can be changed in Options. Those move the cursor in menus too. The Item Menu key (M) and the give-up-quest key (X) moved into Options as well, and picking a key another action already has just swaps the two, so nothing can end up sharing a key. A few letter shortcuts were in the way: O and Q on the pause menu are gone since the menu does the same thing, and the Debug class’s keys moved to 0 on Class Select and F1-F6 for switching class mid-run. The tips on the pause screen, the prologue’s lessons and the quest prompt in town all show whichever keys I’ve actually set, so changing the Item Menu key to something else doesn’t leave the tutorial telling me to press M. That also fixed a pause tip that still said Enter gives up a quest.

Step 26: the prologue waits for Main Game

The prologue used to start the moment I pressed a key on the title screen, before I’d even seen the menu. Now the title always goes to the menu, and the prologue starts the first time I pick Main Game. After that, Main Game goes straight to the difficulty screen like before.

The Battle Arena is also greyed out now until I’ve earned my first Blade. It says to earn one in the Main Game, the cursor skips over it, and pressing its number does nothing.

Step 27: lining up the Options screen

The Options screen looked jagged: the selected row jumped two spaces to the right when the > appeared in front of it, and every value sat right after its own label, so they made a ragged edge. Now every row keeps a space for the pointer so nothing moves, and each box has its own column for the values, centered so “Normal”, “Wait” and “Off” all share a middle. The column is as wide as the longest value a setting can ever show, so cycling Battle Speed doesn’t nudge anything around either.

Step 28: the Champion freezes, and the Elder hopes

In the second Champion fight his gauge could fill between my two Attacks and nothing happened, which looked like a bug. Now the battle log says the Fallen Champion is frozen in fear, so the skipped turn reads as part of the story. At the end, the Elder no longer says no one should ever carry all five Blades, since that is exactly what I end up doing. Now he tells the acolytes to scatter them until a true hero comes to wield them and spend them for good.

Step 29: loot waits for the win

In a fight with two enemies, killing the first one dropped its loot into my bag straight away, so Burn went from 0 to x1 while the second enemy was still standing, and I could have used it right there. Now a kill only rolls its loot, and everything rolled shows up in the bag when the fight is won, together with the victory screen. If I run away or die partway through, that fight’s loot is lost.

Step 30: fading to black

Every scene change in the game was a hard cut. Now there is a fade to black and back: the screen darkens for 0.4 seconds, the switch happens while it is black, and the new scene fades in. The prologue uses it everywhere: starting it, going into each fight and back out to the map, moving from the Demon’s laugh to the Elder’s scene, and returning to the title at the end. Nothing I press gets through while a fade is running. The rest of the game gets it next, one scene at a time.

Step 31: the shop explains itself

Standing next to something in the town shop only showed its name, how many were left and the price, so I had to guess what the Speed and Defense Potions did. Now the box underneath also says what the item does, with the real numbers: the Healing Potion restores 42 HP, the Speed Potion makes my battle gauge fill 50% faster for my next 20 actions, the Defense Potion takes 5 off each of the next 20 hits I take, and the Dungeon Map reveals the whole floor.

Step 32: thinner ice for the Mage

Now that armor and buffs come off a hit together, the Mage’s Ice Armor was too good: the Mage’s -5 Defense plus the armor’s +10 meant taking 1 damage, or none, from the first floor’s enemies. I cut Ice Armor to +7, so those hits land for 3 to 5. The bots still had the Mage winning most runs even at +8, so the Mage stays the strongest class for now, and the full balance pass will look at it again.

Step 33: fading everywhere

The fade to black from the prologue is now in the whole game. Picking a class or continuing a saved run fades into the town, walking out of town or down to the next floor fades, every fight fades in and back out after the victory screen, and running away or dying fades out over the fight as it ended. Dying on the map and winning the run fade into their end screens too. The Battle Arena’s shop and waves and the menus still cut straight across, which is how I want them.

Step 34: the Shadow Bolt flies straight

The Shadow Bolt was tumbling end over end on its way to the enemy. I only wanted it turned the right way, so now it flies head first with its tail streaming behind, no spinning. It also travels a bit slower than the arrows and fireballs, so I can actually see it cross the screen.