-
Notifications
You must be signed in to change notification settings - Fork 260
Guards: Use walk behaviors #1880
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
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.) |
4f66e1d to
fdb64a1
Compare
|
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! |
|
In the last commits I was able to use reusable behaviors for all guard states. I used:
Next, I need to test this further in existing levels and bring back the "walk while in editor" debugging. recording.webm |
Add a timer node, and remove the custom time handling from the guard movement.
Unify it with _process
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.
6b088f4 to
a1b5c1c
Compare
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