Week 51: Polish and bug-fixing for slippery surfaces

    An animated GIF of a recording from Squirrel Away showing the character overshooting their destination on a slippery surface and coming back around to it, and now they end with a nice deceleration to zero speed.
    After: The character decelerates smoothly to hit the destination with zero speed.
    An animated GIF of a recording from Squirrel Away showing the character overshooting their destination on a slippery surface and coming back around to it. But they end with too much speed.
    Before: The character still has too much speed when they stop.

tl;dr: Polish and bug-fixing for slippery-surface backtracking calculations.

What happened last week?


  • Polish and bug-fixing for slippery-surface backtracking calculations.

Laundry list

  • Finish intra-surface-edge slippery-surface backtracking calculations:
    • Fix intra-surface-edge trajectory min/max clamping when backtracking.
    • Fix intra-surface-edge stopping-distance calculation when backtracking.
    • Fix intra-surface-edge is-pressing-left calculation when backtracking.
    • Fix intra-surface-edge velocity-end calculation when backtracking.
    • Rename is_backtracking_edge_to_end_at_destination to is_backtracking.
    • Update IntraSurfaceEdge calculation logic to consider that the edge is backtracking under more circumstances.
    • Update the intra-surface-edge distance calculation to include the distance to and from a turn-around point when the edge backtracks on itself.
    • Fix an issue with deceleration sometimes being applied in the wrong direction during intra-surface-edge trajectory calculation.
    • Fix an issue with velocity values exceeding the expected max in calculate_velocity_end_for_displacement.
    • Fix calculate_duration_for_displacement reaches_destination_before_max_speed to support backtracking in the same manner as calculate_velocity_end_for_displacement.
    • Apply velocity one-frame earlier when calculating intra-surface-edge trajectories.
    • Fix issue with checking previous_velocity instead of next velocity.
    • Remove min/max x-coordinate clamping in intra-surface-edge trajectory calculations for non-floor surfaces.
      • This fixes a bug I was seeing with teleporting on ceiling surfaces.
    • I spent most of Tuesday trying to debug a very frustrating issue.
      • When overshooting the target on a slippering surface and then backtracking to it, the character ends navigation while having too much speed.
      • They should instead decelerate smoothly to end with zero speed.
      • I thought the issue was in my stopping-distance logic.
      • But the issue ended up being a tiny bug in my button-press-release-time logic.
        • And I swear I had already fixed that specific logic before...
  • Miscellaneous:
    • Update the correct surface-state parameters in sync_state_for_surface_release.
    • Fix sync_state_for_surface_grab and sync_state_for_surface_release to update additional properties.
    • Update sync_state_for_surface_grab to also update the character's reachable surfaces.
    • Update the player-nav and default behavior classes to not cancel themselves on nav interruptions.
    • Update the character to replace the default-behavior when a player-nav-behavior is used.
    • Fix a issue with referencing the wrong type of type (edge_type instead of surface_type).
    • Downgrade an error to a warning when PlayerNavigationBehavior._on_finished is called, since it is reasonable for it to be called.
    • Fix an issue with calculate_duration_for_displacement and calculate_velocity_end_for_displacement using displacement instead of duration when trying to determine whether max-speed is reached before the destination is reached (displacement is ambiguous and can represent movement in either direction).
      • Hopefully this will be the final fix for these two recently-problematic functions...
    • Update ScaffolderSpawnPosition nodes to instead be SurfacerSpawnPosition nodes.
    • Re-calculate platform graphs.

What's next?

  • πŸŽ„πŸŽπŸͺ❄️🎊🍾πŸ₯³ Holidays next week!
  • If I have time, I'll create some new Squirrel Away tile art.

πŸŽ‰ Cheers!

This is a simple icon representing my sabbatical.