Skip to content

Conversation

@manuq
Copy link
Collaborator

@manuq manuq commented Feb 4, 2026

Refactor the guards to use walk behaviors.

To maintain the existing implementation as much as possible, add a new PointsWalkBehavior. In a PointsWalkBehavior, the character moves in straight lines between the points of a Path2D.

Use a PointsWalkBehavior for the patrolling state.

Use another PointsWalkBehavior for the returning state. This one is created dynamically from the breadcrumbs dropped while investigating.

Use a FollowWalkBehavior for the investigating state. And add a helper Node2D that is repositioned to the player's last seen position. The Node2D is used as target for the FollowWalkBehavior.

Use a Timer node for the waiting state.

Note: The detecting state is a bit confusing because it uses the patrolling walk behavior until the player is out of sight for the first time, and the investigating walk behavior for the rest. In the future this "detecting" state could be merged into both patrolling and investigating.

Fix #1265

@github-actions
Copy link

github-actions bot commented Feb 4, 2026

Play this branch at https://play.threadbare.game/branches/endlessm/guard-behavior.

(This launches the game from the start, not directly at the change(s) in this pull request.)

@manuq manuq force-pushed the guard-behavior branch 2 times, most recently from 4f66e1d to fdb64a1 Compare February 5, 2026 19:53
@manuq
Copy link
Collaborator Author

manuq commented Feb 6, 2026

Day 3: I finally extracted a walk behavior for the patrolling, although some things were left broken in the process and I need to bring them back again. My test scene works fine but not the lore stealth game. The guard is walking while in the editor always, not just when the debug option "move while in editor" is enabled.

The cost of doing these kinds of refactors is too high!

@manuq
Copy link
Collaborator Author

manuq commented Feb 9, 2026

In the last commits I was able to use reusable behaviors for all guard states. I used:

  • Another PointsWalkBehavior with a dynamic path for returning through all the breadcrumbs.
  • A FollowWalkBehavior when investigating, with a helper Node2D that is repositioned to the player's last seen position.

Next, I need to test this further in existing levels and bring back the "walk while in editor" debugging.

recording.webm

@manuq manuq changed the title Guards: Use a walk behavior Guards: Use walk behaviors Feb 10, 2026
manuq added 16 commits February 10, 2026 08:30
Add a timer node, and remove the custom time handling from the guard movement.
Move the change (stopping the movement) from the process
function to the state setter.
The destination point was being set on every process loop.
This walk behavior is based on the original guard's patrolling implementation.
To see the guard walking in the editor canvas when the "move while
in editor" debug option is enabled.
Remove the now uneeded methods or properties.
The timer node might not be ready. This fixes the current stealth
level.
Use a PointsWalkBehavior and dynamically create the path
from the breadcrumbs.

Go back to patrolling after walking through all the breadcrumbs.
That is, when the path end is met.
Use a FollowWalkBehavior for it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Guard: Integrate with character behavior

1 participant