BallOrcs: the Pounder stones stop balls, the web floors stop glowing, and fire has a sprint cure
A week of level fixes and new places to roll: solid Pounder stones, a web colour fix, burning balls, a Fire Fount at every goal and a bouncy new form.
In plain words
The week's biggest bug was a sneaky one: in Pounder Keep the giant stones looked solid, but a ball could roll straight through them whenever they were not mid-slam. They are solid now, all the way through their up-and-down cycle. On the web version, the floors of Ember Crossing had turned almost white; they are back to their proper dark colours. Fire got more interesting too. Fire bolts now set your ball alight, and you can put the flames out by sprinting. Returned lanterns hang beside their owners and glow back to life. The Fire Fount has moved to the end of every level, the Orchard Halfpipe got its own shape, and a rubbery Bounce form was prototyped on a test pocket.
Under the hood
- Pounder Keep: the slab was a picture and its kill box an
Area3D, so the ball passed through it. The slab now has anAnimatableBody3Dthat follows it exactly; a new test fires a ball at the hovering, falling and rising stone from the side. - Web white-out (Compatibility renderer):
source_colorwas not convertingtextured_surface's colour textures to linear light, so surfaces came out 3x to 10x too bright. The shader now converts explicitly under#ifdef RENDERER_COMPATIBILITY, andtests/texture_colourfails any shader that breaks this. The Ember floor reads 0.30 on Compatibility, down from 0.96, against 0.24 on Forward+. - Burning (
scripts/burning.gd, #161): a fire bolt sets the ball alight for 4 s. Holding 15 m/s or more (only the sprint's 22 counts, not a run's 14) for 1.5 s in total puts it out. A put-out ball smoulders for 3 s and cannot be re-lit for 1 s. Flames and glow are built in_ready; cues live intools/audio/world_sounds.py. - Keepsakes (#169): a returned lantern comes up from a spark to full light over 3.5 s. The same pattern is the template for the other keepsake celebrations.
- Levels: the Fire Fount now sits at every goal in place of the five flag poles (#177); Fire Fount lanes were tightened to six 150 m lanes (#159, #180, #181, #182); Orchard Halfpipe (#187) and a rim lantern at every level entrance (#164) landed.
- Physics: a decision MR chose Jolt for #189, because curved surfaces made the ball hop on
GodotPhysics3Dtrimesh colliders. - Abilities: Bounce, the rubber form with charged rebounds, prototyped on a demo pocket (#87).
- Touch: the layout re-flows when the window turns, sizes are floored at fingertip size, and dragging looks around (#184, #185).
- Saves and builds: profiles are written atomically with a
.bakbackup, and slider drags no longer hit the disk on every step. The web demo excludes the Sentry add-on when no DSN is set (#183), and the Godot export cache is cleared before every export.
Play this build: ./infra/fetch-build.sh web