The third devlog closed with the Goblin Captain, and the Thorn Forest's last three maps were still on the to-do list. With this post, those three maps are playable too: Root Cave, Goblin Camp, and the Slime King's Swamp. The first chapter now plays from start to finish; its boss and its end-of-chapter card are both in place. This post covers those maps, rebuilding the health and armor systems from scratch, cutting back the campfires, the rules for water, fire, and mushroom poison, and how the world puts itself back together after you die.
The images for this post haven't been captured yet.
43 · Root Cave
The sixth map goes down into the roots of the great trees at the end of Misty Grove. The roots run down into the dark and then curl back upward. The only way forward is to climb them. You come down through a curtain of roots into a flooded gallery. From there you go up to the hollow where Faber has lit his fire, and then on to the vertical well itself. On the well's walls, rock ledges and root planks zigzag their way up sixteen rows.
At the top there is a Heart Crystal caught in the roots, and two rope bridges crossing over a bed of thorns. The cave opens onto a ridge under the night sky. From the slope below, the smoke of the goblin camp is visible.
44 · Goblin Camp and the thorn pit
The packs don't include tents or fences. The camp was built out of what was on hand: chests, the dungeon's wooden furniture, cages, wooden scaffolds, and fires burning everywhere. The path runs in this order:
- the camp's lookout hill;
- a storeroom carved into a rock mound, where the goblins hide what they stole from the village;
- a square where an ambush is set;
- the explosives courtyard with the thorn pit in the middle;
- and at the very end, the Captain's square.
No bridge crosses the thorn pit. You get across by jumping and dashing between chunks of earth hanging in the air. Some of the chunks crumble and fall when you step on them. Some stay solid, and there is fighting on top of them. This section was deliberately designed as the chapter's only jumping and dashing test. The reachability analysis reports forward movement here as "required", and this is the one exception that was accepted.
When the Captain is defeated, Nestor Dede is freed from his cage and the chest of stolen copper opens. That chest gives the chapter's last copper ingot.
45 · The Slime King's Swamp
The last map descends into the swamp, where the Veil stands like a wall of purple mist. The packs have no swamp tiles. The swamp was built out of night tiles and dark water:
- crumbling chunks of earth and rotten logs in the water;
- a mushroom-shaped rock with bats roosting on top of it;
- a goblin lookout camp on a mound;
- Faber on an island;
- a lake where the slimes boil up out of the water (the ambush is here);
- a misty reed bed;
- the thorns at the King's threshold.
The Slime King was rewritten from scratch. The old version was a one-move jumper with 24 health. Now he has 90 health, and the same "!" warning appears before every one of his moves:
- Crush: he leaps on top of the player. The shockwave of the landing pushes first and hits second, so it can't be soaked up with the shield. You get away by jumping, dashing, or leaving its range. Afterward he stays open for a while, and hits land for double damage during that time. A parry with the shield leaves him open in the same way.
- Spit: he throws a three-way fan at a player standing at a distance. The globs can be cut out of the air with the sword.
- Swamp call: at every quarter of his health, he marks two spots with smoke. A short while later slimes come out of them, never from right above the player.
When his health drops to half, he speeds up and changes color. Touching him costs no health.
When the King falls, a horned silhouette appears in the mist while the closing lines are read. It arrives on the line that describes it and leaves on the line where it vanishes. This is the first sign of Aldric. So that the long walk from the King to the exit wouldn't be empty, three groups of enemies were added: the King's spawn, goblins fleeing the swamp, and a last stand before the exit.
46 · Hearts in halves, and armor that really protects
The health system was rebuilt from scratch.
- Half hearts: health is now counted in half-heart units. The packs have no half-heart art, so the HUD builds it itself out of the halves of a full and an empty heart.
- Hearts per map: every map starts with 4 hearts. The only way to go above that is the Heart Vessel Faber sells. At most 2 can be bought on a single map, and they only count for that map. There are no permanent hearts.
- The Heart Crystal chest: it doesn't give a new heart slot, it refills missing health.
- Armor: it no longer adds hearts, it softens blows. The material tiers of the helmet, chest armor, and leg armor are added up, and each tier takes a share of the blow. The remainder that doesn't divide evenly is carried over to the next blow. With a full copper set, one out of every two one-heart blows costs half a heart. A blow always costs at least half a heart.
47 · Two fires per map
There were too many campfires on every map, and health was constantly being refilled. Every map now has exactly two fires. Their positions were chosen to keep the longest walk between the spawn point, the fires, and the exit short. Wherever possible, there is a fire before an ambush or a boss.
- A fire only works forward: going back to a fire you've left behind doesn't refill health and doesn't move the return point back. You can't refill health by going back and forth between two fires.
- Hazards don't send you to the fire: falling onto thorns or off the map costs one heart and puts the player back on the last solid ground. Solid ground is the last spot where there was ground under both edges of the feet, that touched no hazard, and that wasn't a crumbling platform. Only death sends you to the fire.
- Burning fires burn: touching the big fires on the maps costs half a heart and knocks the player back.
48 · Water drowns you
Falling into water is now outright death and a return to the last campfire. Health, armor, dash, and shield won't save you.
The same goes for enemies. A goblin that fell into the water used to sink to the bottom of the lake and wander around down there forever. The reason was that the water's hazard area was only a thin strip at the surface, and the check was made when the enemy landed on the ground. Now every walking enemy drowns with a blue splash the moment its feet enter the water, even in midair. Flying bats are the exception.
49 · Mushroom poison
The spores that mushrooms launch now poison you. A hero who takes a spore walks at 60% of normal speed for 3 seconds. The dash isn't affected, because that's the way out.
While poisoned, the hero flashes green, bubbles rise off him, and the hearts in the HUD turn green. After 1.5 seconds the poison takes one more half heart, once, but it never takes the last half heart. A spore blocked with the shield, dodged with a dash, or cut with the sword poisons no one. A campfire, a Heart Crystal, or death clears the poison.
50 · When you die, the world resets too
After a death, the enemies were laid out again from the return point onward. The rest of the world wasn't. Now, while the death screen fades to black, these are put back as well:
- platforms that crumbled and fell;
- bear traps that snapped shut;
- explosive barrels that exploded ahead of the return point.
Platforms and traps already came back on their own timers. But objects that are off screen are paused for performance, and their timers stopped with them. A player who respawned at the fire and came back would still find the platform halfway fallen.
51 · End-of-chapter card
At the exit of the last map, the map card comes first and the chapter card after it. The chapter card shows:
- the chapter's totals: the sum of the best times, gems found and gems in total, and the number of deaths;
- "Black Thorn 1/6": the pieces taken from the Heart of the Veil, one for each biome boss defeated.
The "Map Selection" button goes back to map selection. There, the second chapter, the Poison Jungle, appears unlocked. Since its maps haven't been made yet, it reads "Coming Soon".
Behind the scenes: tests no longer touch the player's save
The owner plays the game on the development save between changes. The automated tests used that same file, so before every test run a copy of the save was taken and then put back afterward. One time that copy fell a run behind, a test wrote over the run the owner had played, and we had to go back to the previous copy. Now the tests write to their own save and settings files (save_test.json, settings_test.cfg). A test can be run even while the game is open.
Two sneaky bugs turned up around the same time. Both of them came out of refusing to answer the question "is it fixed?" without measuring:
- Hazards hit twice: the list of who is standing inside a hazard area is refreshed by the physics engine one frame late. A hero who drowned in the water was killed by that water once more on the frame he respawned at the fire. A hero who fell onto thorns with his last heart lost another heart at the fire. Hazards now check whether the body really is inside them at that moment before they hit.
- The platform wasn't restored on the physics side: a platform that is paused off screen is also taken out of the physics world. Putting it back only moved its image, not its collision body. The test puts the hero on top of a restored platform and checks whether he falls through.
What's next?
- Chapter 2, the Poison Jungle. This chapter assumes the player has made the first chapter's upgrades, and it treats a full copper set as "normal". Enemies are scaled up to that level, and the player isn't told. To get ahead, you have to have iron forged and spend gems.
- The images for this post and for the previous two.
- Sound. The game still has no sound at all.
Credits
- Character, enemy, tile, and item art: Eduardo Scarpato (im-dagon), Dagon's Fantasy packs: eduardscarpato.itch.io
- UI and title lettering: Franuka, RPG UI Pack: franuka.itch.io/rpg-ui-pack
- Text font: Silver, Poppy Works (CC BY 4.0): poppyworks.itch.io/silver