Navigation can be interrupted by hitting an unexpected surface. |
I added support for forcing navigation state to ignore unexpected interruptions. |
tl;dr: I added more-robust options for resolving navigation interruptions, I finished adding support for oddly-shaped surfaces, and I participated in the Ludum Dare 49 game jam!
What happened last week?
Highlights
- I added more-robust options for resolving navigation interruptions.
- In particular, I added support for forcing the character position and surface-attachment-state to match what is expected for the current edge playback.
- I finished adding support for oddly-shaped surfaces!
- I participated in the Ludum Dare 49 game jam over the weekend!
- I'll talk about that in a separate post later this week.
Laundry list
- Better support for handling navigation interruptions:
- Add support for forcing surface-state to match the expected next frame when a navigation interruption occurs.
- Add support for treating stuck-navigations as an interruption.
- Add support for configuring how SurfaceNavigator should handle interruptions.
- These are the different resolution modes:
- Cancel navigation.
- Retry navigation.
- Skip the current edge.
- Force the character position and surface-attachment-state to match what is expected for the current playback of the current edge.
- Fix an issue with edge-interruption false positives.
- Add support for forcing surface-state to match what is expected, when the previous edge ends successfully because the character was grabbing the next-neighbor instead of the destination surface.
- More support for oddly-shaped surfaces:
- Add a check that intra-surface edges don't collide too early with concave neighbors.
- Add support for detecting when the character-rounding-corner surface-state is interrupted by a collision with an unexpected surface.
- Fix climb-to-adjacent-surface start/end position calculations for concave connected surfaces of opposite sides.
- Abandon climb-to-adjacent-neighbor edges when either end can't actually overlap the required surface.
- Add general support for abandoning calculations with surfaces that the character shape could not be projected onto (due to concave neighbors).
- Fix climb-to-adjacent-edge interruption and completion logic to correctly allow touching the next-neighbor and to ensure no-longer touching the origin.
- Update climb-to-adjacent-surface edges for concave corners to use different start and end positions, which can better ensure that following collisions will be with the destination surface rather than the origin surface.
- Miscellaneous:
- Fix a regression with character-surface-state logic that could indicate that multiple surfaces were being grabbed simultaneously.
- Fix a small mixup between surface_type and edge_type for intra-surface-edges and climb-to-adjacent-surface-edges.
- Update player-navigation-behavior to only cancel nav on keypresses that correspond to explicit movement.
- Fix a nav log statement to show edge state instead of path state.
- Fix a bug involving a position-along-surface shared-reference and mutation.
- Add some improvements to logging info.
- Add some asserts to ensure the expected surface is being used.
- Update surface-state logic to disable attachment when pressing the jump button.
- Update initial-surface-attachment to record the last_position_along_surface value.
- Fix various PositionAlongSurface usages to mutate rather than reassign, which prevents unexpected bugs due to mutations from another reference.
- Add a temporary work-around for a stale character.reachable_basis_surface value.
- Update debug flags to skip deeply-validating surfaces, in order to speed-up level-load times.
- Assert collidable_tilemap spacing matches what's expected from manifest and ruler annotation
- Fix initial camera zoom.
- Various small code cleanups.
- Tested current builds on HTML.
- Verified that things run well, and that framerates aren’t too low.
- At least, framerates are ok once logging and extra annotations are disabled...
- Cut new releases for the Surfacer and Scaffolder frameworks.
- On both GitHub and the Godot Asset Library.
- Highlights for this release:
- Add support for oddly-shaped and single-vertex surfaces.
- Add more-robust navigation-interruption resolution.
- Add navigation is-stuck detection.
- Improve annotation renderings.
- Improve documentation.
What's next?
- I'll spend some time making some follow-up improvements to my game-jam game that I didn't have time for over the weekend.
- I'll try-out and vote-on other game-jam submissions.
- I'll make some improvements to my surface-parsing logic, which I've been planning since adding support for oddly-shaped surfaces.
- I'll write the last post in my AI movement series.
- I was supposed to publish that last week!
- But I figured preparing for the game jam was more important.
🎉 Cheers!
Comments
Post a Comment