Thornveil

Thornveil Devlog #5: The Poison Jungle Is Done

The fourth devlog closed with the Thorn Forest finished. Three jobs were next in line: the second chapter, the Poison Jungle, the missing images, and sound. With this post, the second 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 sound as well.

Cangıl'ın Eşiği

The fourth devlog closed with the Thorn Forest finished. Three jobs were next in line: the second chapter, the Poison Jungle, the missing images, and sound. With this post, the second 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 sound as well.

This post covers the jungle's maps, the new enemies, the two bosses, Delia the archer who helps Arin at certain moments, the chapter scaling, the "more enemies" pass the owner asked for after playing, the sound, and the credits screen.

All 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. In these images, each pixel appears as a 5x5 block.


52 · The jungle is open

The Poison Jungle in map selection: the first three maps completed, the fourth unlocked, the last four locked; the selected Bandit Road map's time, gems, and death count are shown
The Poison Jungle in map selection

The "Map Selection" button on the Thorn Forest's chapter card now opens map selection straight on the jungle's first map. All eight maps that read "Coming soon" in the previous post are playable.

The story picks up where the forest left off. The Slime King fell, but the mist didn't lift, so he wasn't the source. The King was only someone the Veil had crowned. The black thorn that fell from his crown still beats in Arin's palm and works like a compass: the closer he gets to the next crowned one, the faster it beats. There is no separate interface for this; the dialogue lines carry it.

53 · The look of the jungle

Jungle's Edge: leaves hanging down from the top of the screen, bushes below, dark clumps of leaves behind the path, tufts of grass, flowers, and two jungle trees; Arin in copper gear runs along the path, with a brown mushroom and a turquoise lake ahead
Jungle's Edge

The jungle is drawn with the pack's own tiles: mossy grass over blue-gray rock, turquoise water, a sky lit green. A map's theme picks which biome's tiles get used. The forest maps weren't affected by this work; before and after were compared tile by tile.

When the first jungle map was drawn, the owner found the trees bare and pointed to the pack's own promotional images. Jungle maps are now built the way those images look:

  • Leaf frame: leaves hang down from the top of the screen, with bushes standing below them. Both scroll a little faster than the world.
  • Leaf clumps: dark, mound-shaped clumps of leaves sit behind the path.
  • Grass and flowers: the jungle's own tufts of grass and flowers on top of the ground.
  • Dressed-up trees: knots on the trunks, short mossy branches, and vines hanging from the branches. These decorative branches only appear high up and far from anything walkable. That way a branch you can't stand on never looks like a path.
  • Branches: a branch joined to the trunk starts with a thick bark knot and grows mossier as it goes outward.

54 · Jungle's Edge

The first map begins on the shore where the Slime King's swamp turns into jungle. The first Poison Frog is met on its own, in an open space. Then come turquoise lakes one after another. Since the water drowns you, every crossing is a short, legible jump. There is a hidden hollow behind the first waterfall.

This time Faber has set up his forge on the branch of a big tree. He says there is no copper in the jungle and that iron is plentiful. Further along the path there are traces of the goblins who fled the swamp: broken spears, toppled crates, and black thorns bursting out of the ground. Without their leader, the goblins have scattered. The map ends with an ambush in a clearing, a cave beneath the roots, and a misty pass.

55 · Poison Lakes

Poison Lakes: three mossy logs floating on turquoise poison water between two grassy banks; Arin jumping across the lake
Poison Lakes

Here the jungle steps down level by level. There is a lake on each step, and each lake pours into the next as a waterfall. The Veil has poisoned the water too.

Waterfall Stairs: Arin jumping over the small lake between two waterfalls, gems in the air, a chest and a mushroom on the right
Waterfall Stairs

One lake is crossed on floating logs, another on loose patches of earth. Both sink a short moment after you step on them, so you have to keep jumping on top of them instead of standing still. The logs were drawn from the jungle tree's tiles, and their top faces sit level with the bank.

The chapter's first arrow arrives here as well. An arrow shot from far away buries itself in the ground a few steps ahead of Arin. It was loosed to warn, not to hit, and it harms no one. It only announces that the bandits hold the road and are watching Arin.

56 · Bandit Road and tree climbing

Bandit Road: Arin on a tree's low branch, a green-hooded archer drawing his bow at him from a higher branch of the next tree; two goblins on the road below
Bandit Road

The third map is an old road running through the jungle. The road is held by the bandits of a red-hooded chief. The first archer is perched on the branch of a tree above the road. The road then passes through a black thorn ditch crossed on branches, a lake crossed from tree to tree, Faber's forge in a bandit storehouse, and a rocky ridge. At the ambush, goblins block the road alongside the bandits: the bandits have taken in the ones who fled the swamp.

After the ambush, Silvan is found in the bandits' prisoner pen. The hunter from the first chapter was caught while tracking the goblins that fled the swamp. He broke the lock when the bandits ran to the ambush, but he couldn't get away on his own. He describes their chief: he used to be an ordinary bandit, and now there is a black crown on his head. Then he heads back to the village to bring word to Nestor Dede.

Tree climbing starts on this map. The branches come from the pack's jungle tree and work like one-way planks: you pass through them from below and stand on top of them. The rules were set together with the owner:

  • Sparse branches: branches are never stacked up a single trunk like a ladder.
  • Zigzag: the climb goes back and forth between two trees. Each step is two rows up, with a three-tile gap in between.
  • Tree to tree: a gap of three or four tiles. Every crossing is a single honest jump.
  • Only where it's planned: tree climbing only appears on the third and fourth maps.

The owner also wanted a dash in a few places, "without overdoing it." So two branch gaps on Bandit Road and two on the Giant Tree ask for a dash. All of them are on optional routes leading to a chest or a line of gems. Nowhere does the main path require a dash.

57 · The Giant Tree

The Giant Tree: Arin jumping between branches high up beside the broad giant trunk made of three trunks; an archer perched on a branch at the bottom right
The Giant Tree

The fourth map is different from the others: it isn't horizontal but largely vertical. After a short walk in the tree's shadow and over its roots, the map turns upward and you climb the giant tree. The giant trunk is made of three trunks standing side by side. Two jungle trees placed side by side are now drawn as a single thick trunk, with no shadow line left between them.

Faber waits on a branch halfway up the climb and says he got up there with his anvil on his back. On a branch off the path there is a Heart Crystal, which fills health completely. At the top, on a mossy ledge, sit the second campfire, the iron shield's chest, and a nest with gold hidden in it.

On one of the branches up top, a red-hooded girl appears for the first time. She holds her bow loosely, watching Arin. She says a single line and disappears with a rustle of leaves. The map climbs to a high plateau over a drowning lake, by way of rope bridges and branches.

58 · The Mossy Temple

The Mossy Temple: in a brick hall with stone columns, torches, and red banners, Arin jumps between two swinging pendulum axes
The Mossy Temple

The fifth map is a stone temple the jungle has swallowed. On this map the rocks are drawn as temple stone and the back walls as brick. The tiles come from the pack's dungeon set and follow the same layout as the jungle's. Brick left out in the open reads as a ruined wall. The halls have intact and broken stone columns, and trees and moss keep growing up between the stones.

The temple has three new traps:

  • Wooden spikes: they show their tips before they shoot up out of the ground. You cross the moment they lie flat.
  • Pendulum axe: it always swings at the same rhythm. You pass under it the moment it swings away from Arin.
  • Floor saw: it travels back and forth, half buried in its slot. The shield doesn't stop it; you jump over it.

Each trap comes on its own first, with flat ground in front of it where you can wait and watch. Then they come in pairs. At the very end, in the inner temple, there is a corridor set up as saw, axe, spike, axe, saw.

On the story side there are two traces. A second seal inscription has been carved into a door's stone by Morvena's hand: "may what sleeps deep not wake." A little further on, the black thorns have been opened up with fresh cuts. Each cut was made in a single stroke, with a sword held upright. Commander Aldric always used his sword that way.

59 · The Spore Pit

The Spore Pit: spores drifting through the air in an underground cave; Arin, poisoned and turned green, fights a goblin, with a pink slime beside him, a red mushroom behind him, and a purple mushroom on the ledge to the right
The Spore Pit

The sixth map is underground. The leaf frame is switched off here. Spores drift through the air, and the spore sacs on the walls pulse with a purple light.

The chapter's three new enemies are introduced here one at a time first: the purple mushroom, the pink slime, and the red mushroom. After that they come mixed together in the spore beds.

Halfway along the road there is a bandit trap: a spore pit that closes, which is to say an ambush arena. Coming out of the pit, you find the trap's thorn gate opened, with a red-fletched arrow quivering among the thorns. The girl from the Giant Tree is standing on the rocks. Her name is Delia. She was the chief's right hand. Ever since the chief put on the black crown, he listens to the crown and not to his bandits. The chief had this trap set for Arin. Delia says this and disappears.

After the pit there is a lake crossed on rock columns beneath a waterfall pouring from the ceiling, a grove full of red mushrooms, and a sunlit rift that climbs back up into the jungle.

60 · The Bandit Camp

The Bandit Camp: two goblins sitting on either side of the campfire, a lookout platform on wooden stilts next to it and an archer holding his bow on the platform; Arin in the middle of the camp
The Bandit Camp

The seventh map is the bandits' camp up on stilts. Wooden platforms sit on top of wooden posts. Over a mud lake, two watchtowers are linked by a rope bridge.

The camp gate is woven from the Veil's thorns and barred from the inside. Delia is behind the gate. Arin asks her whether the chief sent her. Delia says she came on her own, and that she won't take orders from a crown. She is the one who knows where the thorns should be cut, and she opens the gate from the inside.

Inside the camp, goblins sit by the fires. The bandits put them to work in the camp. A sitting goblin doesn't get up until it sees Arin or takes a hit. Then it stands up and fights. The path runs through the ambush in the camp square, past Faber on a platform growing out of a tree, across a lake crossed by a walkway on stilts, and through the frog pens. The map ends at Mother Frog's pit.

61 · Delia at your side

Delia in an ambush: red-hooded Delia shooting from the wooden ledge on the left at an archer on a perch, Arin fighting a goblin below, the closed thorn gate on the right
Delia in an ambush

When Delia's place in the game was being planned, there were three options: a story character only, support at certain moments, or a companion who fights beside you on every map. The second was chosen: Delia helps, but she doesn't do the player's job.

In the ambushes in the Bandit Camp's square and the Chief's Throne courtyard, Delia stands on a fixed wooden ledge. While the ambush is running, every 2.5 seconds she shoots at the nearest enemy that is in range and has a clear line of sight. Her arrows only hurt enemies and never touch Arin. She doesn't take part in boss fights; her arrows pass straight through bosses.

62 · Mother Frog

The Mother Frog fight: the boss bar across the top of the screen; the giant purple frog flicks its long tongue at Arin, the thorn gate on the left
The Mother Frog fight

The chapter's mini-boss lives in the pit behind the camp. According to Delia, the chief throws prisoners to her. Mother Frog is the purple poison frog at 2.5 times the size. Before the fight, Delia gives a warning: she always stops for a moment before she attacks, so back off then; after she attacks, she is left open.

The same "!" warning appears before each of her moves:

  • Crush: she leaps onto the player. The landing's shockwave hits both sides at once and knocks you back first. She stays open for a while afterward.
  • Tongue whip: she flicks her long tongue out at chest height. Rock stops the tongue. Afterwards she is left open again.
  • Calling the young: at every quarter of her health she calls in two green frogs. There are at most three young at a time.
  • Poison residue: on every second landing, she leaves a poison cloud where she took off. At most two clouds remain at a time, and they go when she does.

She doesn't stagger from ordinary hits. At half health she speeds up, her color turns red, and she leaves a cloud on every landing.

63 · The Chief's Throne and the Bandit Chief

The Bandit Chief fight: the boss bar across the top of the screen; the chief stands on a side ledge, arrows raining down on three marked spots on the ground, Arin outside the marks
The Bandit Chief fight

The last map is the bandit fort on the jungle's highest ridge. The path runs in this order:

  • a slope climbed on root and terrace steps;
  • a thorny valley crossed on three rope bridges strung between rock columns (fall off a bridge and you land in the thorns, lose a heart, and get placed back on the bridge);
  • the fort's outer watchtower, and Faber at the foot of the walls;
  • a thorn gate piercing the wall, and an ambush in the courtyard behind it;
  • a path walked along the top of the walls;
  • the throne courtyard between two thorn gates, with a wooden ledge at each end.

The Bandit Chief is a red-hooded archer at 1.7 times the size. He is armored: he doesn't stagger from ordinary hits, and only a shield parry opens him up. A "!" appears before each of his moves, and each one is followed by an open window:

  • Arrow shot: a straight arrow from a distance. It can be cut with the sword and blocked with the shield. Parried at exactly the right moment, the chief staggers.
  • Arrow rain: he leaps onto one of the side ledges and marks three spots on the ground in red. Arrows rain down there. The shield doesn't stop these arrows; you have to get out of the marks.
  • Slide: he comes sliding along the ground. You jump over him or get past with a dash. After the slide he stays open for a while, and hits deal double damage during it.
  • Bow strike: when you get right up close, he hits you with his bow and knocks you back.

At half health his crown lights up. His arrows become poisoned, the number of marks in the arrow rain goes up to five, and at half and a quarter health he calls archers onto the side ledges. There are at most two archers at a time.

When the chief collapses, a red-fletched arrow glides in through the trees and splits the crown in two. Delia says Arin won the fight and that she only broke the crown. The second black thorn falls out of the broken crown. The chief's last words are about a black knight in a horned helm who brought him the crown. Arin remembers the silhouette in the swamp and doesn't want to believe it.

64 · Black Thorn 2/6

End-of-chapter card: the "Poison Jungle" banner, "Chapter 2 Complete", the time, gem, and death totals, "Black Thorn 2/6", and the Play Again and Map Selection buttons
End-of-chapter card

At the exit of the Chief's Throne, the map card comes first and then the chapter card. The card shows the chapter's totals (the sum of the best times, gems found out of the total, and the number of deaths) and the "Black Thorn 2/6" line. The "Map Selection" button goes back to map selection. There the third chapter, the Scorching Desert, shows up as unlocked, but since its maps haven't been built yet, its first map reads "Coming soon."

The chapter ends with this question from Arin: "My commander is alive... But is he still my commander?"


65 · New enemies

The jungle's enemies follow the forest's rules too: the same "!" warning comes before every strike, and touching an enemy costs no health. Poison works by the same rules as the mushroom poison in the fourth post.

  • Poison Frog: it moves by hopping and never hops onto the edge of a ledge, a wall, thorns, or water. It shows a "!" and lashes out with its tongue. When it dies it swells for half a second and bursts, leaving a poison cloud where it stood. Standing inside the cloud poisons you; dashing through it doesn't. There is a green one and a purple one. The purple one's cloud is wider and lasts longer.
  • Bandit archer: green-hooded. Red hoods belong only to the chief and Delia. Once you are in range it shows a "!" and shoots a straight arrow at Arin's chest, but only with a clear line of sight. The arrow can be cut with the sword, blocked with the shield, and dashed through, and it sticks into rock and stays there. If Arin comes closer the archer backs away, but slower than Arin and never toward a ledge or a hazard. Get right up close and it swings its bow. The ones perched on branches don't walk; they only turn and shoot. There are male and female archers, and the female ones shoot more often.
  • Pink slime: faster than the green one, and its spit poisons.
  • Purple mushroom: it launches poison spores from a distance with its own animation.
  • Red mushroom: it bursts when it dies and leaves a poison cloud. You have to hit and back off, or dash away.
  • Sitting goblins: they sit by the campfires and stand up when they see the player.

66 · Chapter scaling

The owner's rule: each chapter treats the previous chapter's full upgrade as "normal." For the jungle, that means leaving the forest in full copper gear. This is never told to the player anywhere.

  • Enemy health: in the jungle every enemy, bosses included, spawns with double health. That way a copper sword cuts down a slime here in as many hits as a wooden sword needed for a slime in the forest.
  • Armor: only the part above copper protects you. In full copper gear, every one-heart blow takes a full heart, exactly as it did in the forest with wooden gear. In full iron, blows take one, half, one, half a heart in turn. For a player still in wood, blows go up to one and a half hearts.

Nothing changed in the forest or in the test rooms.

67 · Iron and gold

The Forge page at Faber's stall: the copper helmet, chest armor, and leg armor are each forged up to iron for 3 iron ingots and 50 gems
The Forge page at Faber's stall

There is no copper in the jungle; the chapter's metals are iron and gold. Iron is spread across the first five maps, and gold from the fourth map to the end. Ingots are in hidden chests and on certain enemies. Alongside the grey goblins, bandit archers can now carry ingots too. An enemy's ingot drops once per save. The ingot sitting on Faber's workbench also shows the chapter's metal: iron in the jungle.

On the Forge page, the helmet, chest armor, and leg armor are each forged up one material. Going up to iron costs 3 ingots and 50 gems, and going up to gold costs 4 ingots and 100 gems. Gold's first price was 5 ingots, and it came down to 4 to fit the jungle's economy. To forge a piece to gold, the piece has to be iron first. The Whetstone follows the same path: the new material's ingots and gems.

There was a problem: a player who hadn't brought a piece up to copper in the forest would never be able to forge that piece in the jungle. Iron required copper first, and copper no longer drops. Now a piece that is below the chapter's level is forged straight to iron, at iron's price. Faber says so himself on the first jungle map.

The shield isn't forged at the Forge. The jungle's iron shield is in the chest at the top of the Giant Tree.


68 · The owner played: more enemies

The owner played the maps. His clearest comment was this: "we definitely need more mobs, more monsters. The fights need to last longer." After that comment, every map in both the forest and the jungle was reworked:

  • More enemies: roughly 75-100% more enemies were placed on every map, in mixed groups of 2-5. The forest's enemy count went from 390 to 689, and the jungle's from 259 to 501. New maps will start out at this density.
  • Tighter ambush arenas: every wave arena was narrowed by about a quarter. The gates were brought inward and the spawn points were rearranged. The ground waves stayed the same, and the boss arenas weren't touched.
  • The path after the chief: so that the path after the chief in the Chief's Throne wouldn't be left empty, three groups of enemies were placed there.

Besides these, there are two more small changes. Waterfalls are now drawn three times bigger: instead of thin streams side by side, every drop is a single large waterfall. And a poisoned hero no longer only walks slowly; he swings his sword more slowly too.

The fairness rules stayed the same: there is a "!" before every strike, and the area around campfires is clear of enemies.

69 · Tree archers

An ambush arena in the jungle: an archer on the upper branch of each of two thick trees, Arin swinging his sword on the ground between two goblins and an archer, the closed thorn gate on the right
An ambush arena in the jungle

Another request from the owner: every ambush arena in the jungle should have two big trees, with archers standing on their upper branches. That's how it is now:

  • When the fight starts, every perch on the two trees' upper branches is filled.
  • With each new wave, only the perches whose archer died are refilled; the ones still alive stay where they are.
  • The archers don't hold up the end of a wave. When the last wave goes down, they go down with it.
  • If the player dies, the archers on the perches are removed too.

The ground waves stayed the same, and no archer stands on a low branch. All seven jungle maps with an ambush arena have these trees.

70 · Enemies are evolving

The owner has one more rule: a new color of a known enemy has to be either stronger or tougher. In its first version the pink slime was weaker than the green one, which was wrong. From the jungle onward, the enemies are a little smarter:

  • Slimes spit twice in a row.
  • Bats became orange fire bats, because the green bat got lost among the jungle's leaves. They dive to where a running hero is headed, dive once more after a missed dive, and die in two hits with the chapter's sword. The warning before a dive stayed the same, and they don't burn you.
  • The pink slime is both faster and tougher than the green one.
  • The purple mushroom launches two spores per shot and bursts twice when it dies.
  • The red mushroom no longer hides. It used to duck down as soon as Arin came close. Now it launches poison spores from the longest range, and it meets anyone who comes near with spores as well.
  • Archers also shoot straight down from branches. The owner had seen an archer perched on a branch fail to shoot at Arin standing directly beneath it.

71 · The game has sound now

The previous three posts all ended with the same line: the game has no sound at all. Now it does.

  • Effects: there are 81 sound events. The hero's three sword swings, hits, blocks, parries, jumps, dashes, and footsteps that change with the ground (grass, stone, wood); the sounds of enemies and bosses; chests, gems, ingots, bear traps, saws, gates, and campfires; menus. The same sound never plays twice in a row from the same recording.
  • Monster sounds: the goblins' voices, the frogs' croaking, the bosses' roars and deaths, and the Captain's and Mother Frog's sounds come from the Retro Game Monster Sounds pack the owner bought.
  • Where the sound sits: enemy sounds come from where they are on screen. They fade toward the edge of the screen and can't be heard at all far outside it. That way fights off screen don't crowd the sound. Bosses and gates can be heard from anywhere in the arena.
  • Music: 15 tracks, from xDeviruchi's 16-Bit Fantasy & Adventure pack. Each chapter has its own music, and on some maps (the caves, the temple, the chief's fort) separate tracks play. When an ambush starts it switches to combat music, at a boss to boss music, and at Faber's stall to shop music. When that's over it goes back to the map's music.
  • Short jingles: for the end of a map, the end of a chapter, and death.
  • Ducking during dialogue: while a dialogue is open, the music is turned down a little.

The sound balance was set by measurement, not by ear. The game plays the same scene through by itself three times: everything on, music only, and effects only. The recordings are measured. Combat sounds sit clearly above the music, while footsteps stay below it. Overall loudness is kept between -16 and -18 LUFS. The music and effects sliders in Settings now really do change something.

72 · The credits screen

The credits screen: the Thornveil logo, "Made by: Syoo Games", the Art heading below it with the credit for the Dagon packs, and two scroll arrows on the right edge
The credits screen

Some of the sound packs ask for attribution inside the game, so a credits screen was added. It isn't in the title menu; it sits on a "Credits" button at the bottom of the Settings panel. That is how the owner wanted it.

  • At the very top are the logo and "Made by: Syoo Games".
  • Then come the Art, UI, Font, Music, Sound Effects, and Engine sections. Names, work titles, licenses, and links stay exactly as their authors wrote them, untranslated. Works under a CC BY license have the license link next to them and a note that they were trimmed and edited for the game.
  • The Engine section has Godot's license and the license texts of the third-party components it uses. Godot's license requires them to be shipped with the game.
  • The list scrolls by dragging, with the mouse wheel, and with the keys. For touchscreens there are two arrows on the right edge: tap and it scrolls one page, hold and it keeps scrolling. Two seconds after the screen opens, the list starts drifting slowly on its own, and it keeps drifting until the player touches it.

Behind the scenes: the moment Mother Frog crashed the game

While the owner was fighting Mother Frog, the game stopped in the debugger. The cause was small but sneaky. The poison clouds Mother Frog leaves behind delete themselves when their time runs out. When a deleted cloud in the list that holds them is passed to a typed function, Godot 4.7 counts this as a script error and stops the game. The list is now kept untyped, and every cloud is checked to see whether it still exists before it is used. Mother Frog's test now also checks that a cloud going out quietly drops off the list. The rule was written into the project's notes as well: an object that can be deleted is never passed to a typed variable or function.

Every new system in the jungle came with its own test: the frog, the archer, the mushrooms and the pink slime, the temple traps, Mother Frog, the Bandit Chief, Delia, the tree archers, the chapter scaling, and the sound. The map tests changed too. Each map's test used to expect fixed numbers, and it broke every time the map was edited. Now a single shared test compares every map against its own file: enemies, gems, the two campfires, the dialogues, and the next map. The eight jungle maps also went through the decor and reachability checks. The only places that ask for a dash are the optional chest and gem routes.

The jungle's second through eighth maps were built in a single night, at the owner's request. That night the dialogues of all eight maps were also read through from start to finish in one piece, and 27 lines that didn't match up were fixed.

What's next?

  • Chapter 3, the Scorching Desert. The draft plan is ready and waiting on the owner's decisions. Nothing will start before it is approved. In map selection, the desert's first map reads "Coming soon" for now.
  • Images for the older posts. The images for the second, third, and fourth posts still have to be captured. Image 06 in the first post will be re-captured too, because it shows an old character name.

Credits

Back to devlogs

See what's new.

All updates