, 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.
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?
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.
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 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
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
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!
[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
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!
I swear i remember you talking about coherent AI behaviour? Any work on that?. Also id like to ask how well your pathing system fits to procedural created AI tasks mixed with user interaction and AI Response interactions.
Ive been working on using an AIML chatbot (started even before UE4) with AI direct verbal communication and response between user and assigned AI (voice recognition from user, verbal AI response which also dictates AI state). The nature of AIML chat bot AI is driven to select and execute specific behaviour tree’s for any given character state (happy, ****** off, fear, aggression) to direct response.
Idea being the AIML chatbot can act as interactive help system for the user (e.g ask where the base is from your current location, ask where the most active fighting area is on the map,) but also be as an AIML based XML AI engine set specific in engine AI behaviours based on the AIML chat bots responses.
I would love to hear how you think the best way would be to have an interactive AI communication system within the engine, for example being able to talk to AI in everyday human speech and get responses in the same manner but also controlling AI behaviours.
I have found my way through the low level UE4 AI Navigation code so that I can retrieve all the individual nav mesh pieces at runtime, in C++, and figure out which one the character is in, and which one its goal is in!
I can use analysis of all of the nav mesh pieces to handle dynamic calculation of paths that involve jumping or falling, ie, paths that regular AI navigation cannot complete.
In video I demonstrate that I have all the data in my C++ code, retrieved at runtime, and can now analyze it to find additional paths that involve true 3D / Z values!
I do not have any nav links or other custom structures helping the AI!
All of what you are seeing is my C++ AI code at work!
I am calculating the correct jump angles and also intercepting the nav system whenever the AI would normally stop because there is no complete path to the goal location, and look at these test results!!!
/0GX-1x-wACI
**So Excited**
I was so excited about these test results that I made a gif out of it!
http://share.gifyoutube.com/ZGQn5M.gif