The fifth post closed with the Poison Jungle finished, and the desert's plan was waiting on the owner's decisions. The decision was "you make them all." With this post, the third chapter can be played from start to finish too: eight maps, a mini-boss, a chapter boss, and an end-of-chapter card. The game now has 24 maps.
The desert was a good place to try something different from the jungle. In the jungle the danger was the enemy; in the desert the ground itself is a danger too. Something can come up from under the sand, the ground you walk on can swallow you, the wind pushes you back.
The images were captured in-game at 1920x1080. The game is drawn to a 384x216-pixel canvas and scaled up to the screen in integer multiples, so every pixel is a 5x5 block.
36 · Sands' Edge

The first map starts where the jungle dried up. For the first hundred tiles there are still palms and the jungle's own slimes, then it slowly turns into cacti and gravel.
There is a rule to how the desert looks: the dark back wall only in enclosed places. In the jungle we used the back wall out in the open as a mass of leaves; doing the same thing in the desert looked like a hole in the sky. Now depth comes only from the distant hills; the back wall is only in caves, tunnels, and halls. The audit script (terrain_audit.py) reports every back wall cell left under open sky.
The new enemy is the Sand Scorpion. If it sees Arin on the sand, it dives: its body disappears, and in its place a mound moving through the sand and a dust trail are drawn. In this state it can't be hit, and a parry does nothing. When it gets under Arin's feet the sand boils — bubbles over his feet and the familiar cream "!" mark — and 0.65 seconds later it bursts out of there. The shield doesn't help (it pushes first, then hits), the dash does. Afterwards it stays exposed for a second; that's where the punishment is.
Only ground made out of desert tiles counts as sand. Wooden scaffolding, rope bridges, palace stone, and other biomes' rock are not sand, and there is no diving there.
37 · Bat Hollows

The fourth map is vertical: 320x72 tiles, climbed from the canyon floor up to its rim. The desert's answer to the big tree in the jungle.
The cave that runs through the canyon has the Ember Bat in it. The jungle's orange fire bat was getting lost next to Arin's gold armor, so a darker version was derived for the desert: ember red, brown shadows, yellow eyes, and a 1-pixel ink outline. If its dive gets through, it leaves half a heart of burn on top of the normal damage — but if the shield is raised, nothing burns.
The Metal Scorpion is met here too. It's armored: an ordinary sword hit does damage but doesn't stagger it, it just rings and throws sparks. It has a leap and a sting, and both are announced with a "!"; its sting poisons. After it strikes, its tail stays stuck for 0.9 seconds, and the window is there. The pack has no frame with the tail on the ground, so for that window a frame with the white swing trail erased is generated at runtime.
38 · The Buried Palace

The fifth map is a palace left buried under the sand. The mossy temple in the jungle was made of gray dungeon stone; the palace is its yellow sandstone version — the same tile layout, derived by changing the colors one by one.
The desert's three traps come together here, and each one is introduced on its own first, with nobody else around:
- Flamethrower — closed, then ignition (the warning), then flame. The shield doesn't stop it, the dash goes through it.
- Press — it hangs from the ceiling, warns by swaying, then comes down in 0.12 seconds. Staying under it costs a heart and a return to safe ground. Neither the shield nor the dash saves you; the only answer is not being there.
- Cannon — the fuse spark is the warning, then the cannonball. The sword can't cut it, the shield stops it.
A bug found while the press was being made is worth noting: the press measured the distance it would fall on the first physics frame, and on a real map the tiles haven't started colliding yet at that moment, so every press fell only two tiles — it never touched Arin. Now it measures again over 30 frames.
There is also quicksand: you can walk on it but it slows you down, Arin sinks in up to his knees, and after two seconds he takes a heart and returns to safe ground. It never kills. A single jump gets you out.
39 · Mother Ember

The mini-boss at the end of the seventh map. Three times the size of the ember bat, and on load it is painted in the Veil's purples — the ember core stays.
It sleeps hanging from the ceiling. When it wakes up, it floats 88 pixels above the ground, that is, out of sword reach. It has three moves, and all of them come with a "!":
- Spear dive — it goes 80 pixels above Arin, gives the sign, and comes straight down at 250 pixels per second. If it slams into the ground, it stays exposed for 1.8 seconds, and hits there count double. The shield bounces it back but no window opens. A parry brings it down to the ground.
- Ember rain — it puts three marks on the ground, one of them under Arin; a second later the embers fall and leave flames that burn for three seconds. The shield doesn't stop this flame.
- Young — at every quarter of its health, two ember bats wake up on the ceiling.
When its health drops to half, it turns from red to purple, speeds up, and links a dive that hits the ground into a second dive with a short "!".
40 · Giant Metal Scorpion

The chapter's boss. Three times the metal scorpion. The packs have no crowned scorpion, so a 7x6-pixel black crown — with a purple edge and stones — is stamped onto every frame above the eye pixel at runtime. There is no crown on the death frames, because it falls off there.
Its armor is real: when its window isn't open, a hit does no damage at all, it just rings. When the window is open, hits count double. Its four moves come in order: the tail sting (poisons, the tail sticks, a parry staggers it), the dive into the sand (the sand scorpion's move, but two hearts, and it shoves the shield aside) and the leap-and-crush.
When its health drops to half, its crown glows and it raises its own sandstorm — since it is inside the cave, the map's own storm isn't drawn; this storm belongs to it. After every dive, two sand waves run along the ground, and they are crossed by jumping.
When it dies, its shell cracks, the crown rolls off, and a black thorn drives into the sand. Its body stays there until the last dialogue is over.
The storm, at the owner's request
The second map's sandstorm pushed at 45 pixels per second in its first version, and it only worked on the ground. When the owner played it he said "make it harsher, and push me back when I jump too." Now it's 85 pixels per second, it lasts 1.8 seconds, and it works in the air too: Arin standing still gets dragged ten tiles by a gust, jumping in place he slides three tiles, and running into the wind he only gets five pixels ahead in half a second.
It also blocks your view. The storm areas are merged into a single area and blurred, then drawn over the screen with a single quad and one shader. Around Arin's chest the transparency is 0.12, and it rises to 0.62 toward the edges of the screen. Below the ground line it is zero, so caves and dark rock stay clean. In the first attempt every column was drawn separately, so rectangular panels showed up above the rock columns; now no seam is visible anywhere.
The audit scripts learned something too: a storm area is reported if there is a drop or spikes within ten tiles downwind, or if a jump made into the wind can't make it and would fall into a hazard.
Diamond and sword scaling
The desert's ore is diamond. One armor piece is 4 ingots + 150 gems, and the Whetstone's fourth tier is 4 ingots + 300.
A small but annoying detail: in the pack's handmade atlas the diamond cell is a cut stone, that is, the game's gem currency itself. Using it as the diamond ingot would have meant showing "a gem for an ingot." So the gold ingot's ramp was converted to the diamond palette and its own ingot was derived.
From the third chapter on, the sword scales too. In the earlier chapters sword damage was simply the material's tier. From the desert on, every step above the base tier works like a multiplier: in the desert the gold sword is 4, the diamond sword 8. At the base tier and below, the old rule applies. The forest, the jungle, and the test rooms were not affected.
Numbers
- Eight maps, each 640x40 tiles (the fourth is 320x72, vertical).
- An average of 60 placed enemies per map, 12 of them in ambush waves.
- ~120 gems per map, 2-3 diamonds.
- New sound events: scorpion dive/boil/sting/ring, bat burn, flamethrower, press, cannon, cannonball, quicksand, and storm gust.
- The desert's music:
winds_roamfor the maps, separate tracks for 5-8, and its own track for each of the two bosses.
What's next?
The fourth chapter, the Frozen North. The owner started playing the game on his phone and the notes coming from there have piled up; they got in line too.
Credits
The same as the list in the fifth post — the desert chapter added no new packs, everything was picked from packs that are already credited. The full list: docs/CREDITS.md and, in the game, Settings → Credits.