Custom Character Movement Component: Can it be implemented with Steering Behavior?

Would this be a practice to allow some potential steering for AI driven characters like villagers. I know that Behavior Tree Move To Node uses a character’s character movement component to move to a destination point, but intuition tells me and with observance that this movement contains rigid movement and straightforward movement to the target point. What I’m asking here is would a custom CMC allow me to create some potential steering to have the AI move more fluid. Like turning, or avoiding meshes within a radius from the player without colliding into them?

Sure. Look at UCharacterMovementComponent::bUseRVOAvoidance usage and implementation.

Cheers,

–mieszko

Ok. So here is my current situation at the moment for testing. I’ve set up a Villager AI that already has the task of moving to one of 3 random waypoints. I’ve set the flag for RVOAvoidance in the character movement component under blueprint to true. However, it still attempts to go to the point in a straightforward manner instead of attempting to move around the barrier as shown, resulting in it moving at the barrier, which has a destructive property on it, to get destroyed allowing the AI villager to move through it. I want to move around it. Any way to properly use RVO Avoidance for this?

I’m inclined to think that RVO is meant for avoiding other moving actors, which does work if I had more villagers, but the main question for this overall post was if I can create behavior that guides the villager around the obstacle/wall actor in front of it instead of plowing right through.

I’m beginning to see the picture. My understanding is the Unreal’s built in NavMesh system doesn’t recognize Destructible Meshes. That wall and house, along with whatever building we want destructible in our game, will not be recognized and thus, giving a possible “path” for AI. Is there a workaround for this?

You’re correct, currently we don’t support destructibles in terms of navmesh generation. And you’re right, RVO is for moving obstacles avoidance (like other characters).

The workaround would be to have your destructibles annotate navmesh with navigation areas. They need to derive from INavRelevantInterface and implement required functions. Look at how ANavModifierVolume does that for more details.