Devlog: maze exit and sticky swamp
Added 2025-01-12 14:14:36 +0000 UTCQuick update because I have to grade 160+ tests please send help.
Having the exit tunnel of the Sheerk Prairie maze be a separate part of the level was causing a lot more problems than it should, so I made it a single monolithic structure. To stop players from entering the maze from the wrong end, I used Pythagorean triples to design a ramp that can be knocked down from below. The ramp is 4¼m long when horizontal and, once deployed, it goes down 2m and forward 3¾m (2² + 3¾² = 4¼²). Yes, I know they aren't integer numbers, just multiply them all by 4 and you get a similar triangle: 8² + 15² = 17².
To knock down the ramp, the player has to break a block that supports it, so breakable blocks are now also fully functional. However, when testing the underground tunnel that leads to the exit ramp, I noticed that the character believed that she could climb back up through the ceiling, so I adjusted the ledge detection method. Now a climbable ledge must:
be within reach of her hands or her hammer, when equipped;
be completely horizontal;
have solid edges she can grab;
have enough room on top for her to stand on;
not have a guardrail blocking the way; and
not require her to go through a ceiling to reach it.
For the latter three cases I had to tweak Godot's ray casting method, because it doesn't check for collisions in both directions: a wall collider behind a ledge would be pointing outwards, while a guardrail would be pointing inwards, and a ceiling would point downwards (although those are never needed because I disabled manual jumping), but floors at a higher lever than the player would point upwards. Now I can check for walls/guardrails and floors/ceilings at the same time.
With that, the maze was complete and I moved on to the swamp. It was going to include trees that could be knocked over to form bridges, but I decided that columns in a swamp would be more reminiscing of my favorite level of one of the first video games I had, back in the 90s. After programming those, the swamp is physically functional.
It has flooded sections that are safe to explore, but they are currently too hard to see, so I must tweak the water shader. To stop the player from player jumping over wet areas and skipping the whole puzzle, the swamp messes with the basic mechanics, which introduces a new issue: safely undoing such changes. I decided to add a method to all levels so they can revert any changes that they might have added, whenever the player exits them.
I think I'll do the slide puzzle next. It'll be fun.