's Multi-Threaded Dynamic Pathing System, Full Physics Support

Hee heeeeeee!

Haha, Looks really good. If I might ask. How are you applying the damage? Is it animation based? Or just a set timer that you use? Or is it when weapon collides with the enemy? I’m using an animation based one and once the animation is set off even if the target is 10000 range away he’ll still get hit :stuck_out_tongue:

I am using an anim notify that calls a C++ function, you could just as easily call a function in your character (cast from Try Get Pawn in Anim BP)

You can then do a distance check to your current target to make sure they are still in range when the anim notify wants to apply damage!

:slight_smile:

Sexy thanks mate! I was missing the distance check then haha

Looking good! Navigation implementation looks great - what was so limiting on the built-in navmeshes that you felt you required your own? (Since they can be recomputed on the fly)

I sense an Avatar reference in your video… the borrowed energy of the body being returned to the earth upon death. :wink:

When recomputing a built-in navmesh on the fly, I experience performance problems. I have a huge forest and navmeshes just take too long to build for me as well. It would be great if 's system was integrated into the engine as an optional alternative to the built-in navmeshes. I would love . :smiley:

That’s interesting, I’ve never seen Avatar, I just wanted to do something cute, and show people how forests are really formed = higher dimensional dwarves battling it out :slight_smile:

Hee hee!

What was limiting was that I could not figure out how to get into their core navigation code to override or re-write parts of it to suit my needs for individual characters and expressing personality / not all going in a straight path to the target.

Just yesterday I finally figured out how to make my own custom versions of Epic’s core navigation components so I can write customized AI using their pathing system! Will be posting video soon :slight_smile:

ooh nice! Glad you got it working!

, can you pm me with link to a level that is the same size and has the same complicated collision geometry / meshs with collision as the level you are having performance problems with?

I’d like to run some tests and compare various UE4 navigation settings as well as using my own custom nav meshing system.

I dont know what size is required to start noticing navigation problems so your test case sounds quite useful.

:slight_smile:

Sure! I’ll setup a quick project and upload it to mediafire. :smiley:

's Physics Character Pathing System

I just had a major AI Victory!

I overrode and rewrote large portions of Epic’s Character AI Pathing system to work with physics simulating characters!

There’s no native support for , but using some of my own functions that I’ve been writing for my physics multiplayer game, I was able to do it!

Epic very nicely exposed as virtual all the functions I needed to override, thank you Epic!

Here is the result!

https://youtube.com/osC5GI_t7Ic

:heart:

What sorcery is ?! :eek:

Get your work integrated into 4.5 now. :smiley:

Great job with the navigation system.

So you are using spheres to mark free space in the map. Are those spheres interconnectd somehow (like a graph)? Also does support 6DOF movement. ie Is it aware of 3 axes? X Y and Z. I have been trying to make something like taht for a while. I want a flying (more like hovering) drone to follow a player. Since he is hovering, he can actually move up or down to avoid obstacles. Sadly nav meshe do not supprot it and is limted to 2D movment. Does your system support such movment? Currently what I have gone with is to make the drone remeber where it saw the player and try to navigate to taht point in a straight line (It does not use the navmesh though). The system works most of the time. But sometimes he get stuck if the world geomerty is tricky. Lucky for me, that was exactly what was expected (The player is allowed to eavde the drone).

I initially tried a solution like yours, to divide the elevel into inter-connected volumes. But it could not handle dynamic geomtry.

What do you think is the best approach here?

EDIT: One more question, did you need to modify any engine code? Or is it possible to compile it without the engine source?

I made my own flying AI system which can move up and down to reach its target!

Sounds like it would be perfect for your drone!

Video here!

's Flying AI System, 6DOF Target Pursuit

I did not use a nav mesh for full 6 DOF cause that proved to be very intensive on the CPU :slight_smile:

Best approach?

For 6DOF drone I recommend traces and check unit gets stuck and move up or down on a timer or until direct trace to target is revealed.

With 6DOF chances of finding an open space are much higher :slight_smile:

Awesome!

Thats almost how I finally implemented it. However in my case, after losing sight of the Target, the dron will travel to the last location where it saw the target and and try tracing radillay in radmom angles with random intervals for 10 ro 15 times. It then moves to another point and does it again until it finally gives up and goes to wndering mode.

But the problem with my approach is I need a traget for it to work. So I cannot tell the drone to move to a particular position in the world. If the path to the lcoation is not very complex, it manages to reach there (although its movement is zig-zag). But there is no gaurantee that it will ever reach there. is becuase my drone works just like we navigate an actual maze. It can only see what is immeditaley infront of it. What I would like is to make the drone aware of the topology of the area so it can work-out a proper path. I think is what a nav-mesh is doing for UE4 navigatiobn (it is a connected graph), so the path solver knows everythign about the path. I really hoped that 6DOF path finding will be in the engine itself.

Hee hee, Glad you like!

Alls I can say is that while the math was simple for me the computational intensity of full on nav meshing in 3D / 6DOF was too much for single game thread :slight_smile: I was even using multi-threading for the second part, but the first part which had to be on game thread was too intense.

I would recommend you consider placing waypoints that are level specific, unless your levels are completely randomly generated :slight_smile:

Drone would rely on these if knowing it has a target, and then you can use the waypoints to find the player, is the grid/connected graph you keep talking about in a very simple form.

You know, find the way point closest to player, then find a path from drone thru waypoints to player :slight_smile:

For new comers to the thread here is my latest video I am all excited about!

's Physics Simulating AI Pathing Extension of UE4 Navigation Code

I reworked the UE4 Pathing code to support physics simulating meshes, no Engine code had to be changed thanks to the awesome way Epic set up the code to be so easily extended/modified!

https://youtube.com/osC5GI_t7Ic

Finally…I see a video from without colors. Good job …Good job.

Just wait till you see my own personal project that is a multplayer game involving physics simulating objects as characters!

:wink: :wink: :wink:

[FONT=Comic Sans MS]Dynamic AI Jumping For Shortcuts

In video I am demonstrating the use of Navigation Mesh Point Projection to identify shortcuts for the navigation path that require jumping!

When you see my AI jump to take shortcuts to their goal in video, it is not pre-determined!

I am dynamically calculating whether the AI should take a shortcut by jumping, and then overriding their normal pathing system so that they pursue the shortcut instead.

Toward the end of the video you will see them jumping pretty high to reach their goal that is on higher ground!

I did all the coding for in C++ in my custom navigation component classes and the character class :slight_smile:

When the AI unit is following the jumping shortcut I do the code in the character class, and turn normal pathing off.

While in normal pathing, I am running my own custom navigation point project line tests to check for shortcuts, which is what those lines of dots are!

I stop as soon as higher ground is found that has pathing on it, and redirect the AI to use shortcut!


**Navigation Point Projection**

involves taking a 3D world space point, and using a volume extent to check if there are any nearby points in the navigation mesh that are within the z value of the extent.

In way I can check if higher or lower ground has pathing, and is thus viable to path to via a jump!

Finding the best shortcuts and telling the AI to use them involved a loooot of C++ coding on my part hee hee!

Thank you to Epic for USTRUCTS so I could expose all of to Blueprints and keep the data organized in code without creating additional classes!

Video

https://youtube.com/JZKjkWQes8I

Another great post I’ve been looking for AI pathing similar to for my project.