DoN's 3D-Pathfinding / Flying-AI system (with full source!)

:cool::cool::cool:

What improvements are you adding to the plugin if I may ask?

Performance and robustness are the two areas. Will share more details when it goes out :slight_smile:

Major Update & 4.17 release

Whatā€™s New:

Full Multi-threading support!

  • Multi-threading code has been rewritten from scratch and is now robust and ready for use. It is now enabled by default.
  • Significant performance boosts - both for your frame rates and for your botā€™s reactivity.
  • This means Infinite map size (via Unbound manager) + Large number of A.I is now finally a very viable option!


Major bugfixes to navigation solver

  • Bots no longer get stuck while lying flush with a wall or obstacle (initial overlap usecase)
  • This was an issue reproducible in the sample project and reported by a user. As always, issues reported via the sample project are easiest to reproduce and investigate.
  • Improved nav request scheduling (redundant aborts eliminated and more)

Community Contributions

Thanks to Vladimir Ivanov for:

  • Multiple manager support via actor based manager selection (very common request!)
  • Path recalculation support for Flight Location key
  • EQS tasks that expose the CanNavgate and RandomNavigableLocation functions and fix for FlyTo node usage with SimpleParallel node.

Thanks to Brune for:

  • 4.17 migration code to get me started quickly :slight_smile:
  • Blueprint Nativization friendly code changes (n.b. more changes may be needed in this space, either in the nativizer itself or in code)

[hr][/hr]

Downloads

Check out my new plugin!
A significant amount of effort was needed to get this update out, not just in building the features but in merging four different code bases together and testing some very time-consuming edge cases.

I request that if you found this plugin useful, please also check out my new DoN plugin - Mesh Painting & Gameplay solution for UE4, a very feature-rich plugin catering to many different usecases for both FX and gameplay.
Chances are you may find something you need for your project in there! :smiley:

See the new pluginā€™s Marketplace Link, Video Trailer and Forum thread for more.

ā€“

Enjoy this update!

Hi Venugopalan,

Thank you for making this plug in and giving it away for free. Its very generous support of this community. Iā€™m working with the new version. (1.8) in UE4 4.17. It worked right out of the box in my own project. I did want to report bit of a problem. I have notices some lag hitches when using multi-threading. They went away when I switched to single thread. They happen even when the single unit was not flying. I have an i7-4770K. The hitches were small maybe an extra 10ms. Anyway, just wanted to see if this was known behavior and if there was anything that could be done.

Thanks,

Hey, Are you able to reproduce this in the sample project and/or in a packaged game (i.e. w/o the editor)?

Yes, you can see it in the demo project although on a smaller scale. If you use Stat Unit Graph on a clean demo project. It hitches from 8.3 ms to about 13 ms. If you unchecked multi-thread the hitching goes away.

I wasnā€™t able to reproduce this issue; tried a variety of different combinations (with visual studio v/s without, editor v/s standalone, idle v/s multiple examples running, etc).

Could you share your profiler dump? (stat startfile + stat stopfile)

For those wondering about the hitch report, I did receive a profiler dump from @**GameMaster79 **last week. Just havenā€™t had the opportunity to check it out yet. If I spot something here Iā€™ll get back!

Will you share this plugin for 4.18? And thank you for your greatest plugin.

Hey, based on my current bandwidth, I will need 3-4 weeks before I get a to look at the 4.18 migration for all my plugins.

Will post an update on this thread when itā€™s available for this one.

PS: Itā€™s quite possible that the plugin migrates without any issues when compiled too, so do try that if you havenā€™t already.

Hey, ! First of all thanks you for such awesome plugin! It saved me a lot of time!
But, it looks like Iā€™m run into issue with using plugin in c++. It looks like I cant include ā€œDonNavigationManager.hā€ anywhere, because itā€™s have ā€œDonNavigationCommon.hā€ in include list and that include have ā€œAllowWindowsPlatformTypes.hā€ include, which doesā€™t not allow you to include it more than one time. Am I right or Iā€™m doing something very wrong? I can make a example project.

For a live example of how to use the plugin from C++ check out the ā€œFly Toā€ node class (BTTask_FlyTo.h/.cpp) which includes the manager via DonNavigationHelper.h and uses the API directly. For your particular issue I suggest methodically comparing your setup with UBTTask_FlyTo. Make sure youā€™ve added the pluginā€™s module (ā€œDonAINavigationā€) as a dependency in own your projectā€™s MyProject.build.cs file too. Finally, if you run into any common linkage errors try searching online as well.

@Emrehan @ FWIW, Iā€™ve verified that DonAINavigation does work without modification in 4.18.
The EngineVersion needed to be updated to 4.18.0 in DonAINavigation.uplugin, but it does compile and run without evident issues.
Thereā€™s a Clear Timer by Handle node in the DemoMap event graph that needs to be replaced by a ClearAndInvalidateTimerByHandle node, but those are the only required changes Iā€™ve run across so far.

@ I love this plugin - thank you so much for sharing it with us!

Hello and thanks for this plugin. I canā€™t seem to get the GetRandomPointInNavigableRadius node to work with this plugin. I want to get a random vector location around the AI character. Iā€™ve used this node before in tasks for my behavior tree but I canā€™t seem to get it to work with this plugin. It just keeps going to the center of the map. Anyone have a suggestion or workaround?

Anyway I appreciate this plugin. It is fun to play with.

@ is there a way to get a github link or something ? i donā€™t have the launcher for some good reasons to download the plugin

That function only works with Unrealā€™s native navigation system (whose navmesh cannot be used for 3D pathfinding); the plugin uses its own navigation structures and API.

The plugin does offer the function **FindRandomPointAroundOriginInNavWorld **(on the manager actor)with somewhat similar functionality. In a recent version this was exposed as an EQS query by a community user although I havenā€™t tested EQS usage myself.

Thank you, glad to hear :slight_smile:

This post has a direct download link for the 4.18 version of the plugin.

In any case, hereā€™s the github repo as well: GitHub - VSZue/DonAINavigation: This plugin provides a 3D dynamic pathfinding system for use with Unreal Engine 4. It's primarly designed for Flying AI creatures based in dynamic or procedural worlds that need to solve complex pathfinding tasks.

Yes! Iā€™d encourage users to always try migrating the plugin as-is if the official build for a new engine release is not yet available; oftentimes it just works, or will need only minor modifications for API compatibility.

For 4.18, the latest version was released last week (Link) and also carries a major bugfix for dynamic obstacles in single-threaded mode (most users should be unaffected fwiw).

Thanks once again :slight_smile:

@ : thanks a lot, really appreciate <3
good luck for your game even if i hate insects :stuck_out_tongue:

Thank you :slight_smile:

Insects are only one aspect of DoN btw! Plant-life/ecology is a big part of the game too.
Other members of the animal kingdom will eventually make their way into the game, so there will be something in there for one day :wink:

Hello!

Thankā€™s for this plugin! It was very easy to use, my big problem was with plugin activation, because this is my first one in engine. But after installation I had my drone flying in minutes and I love it.

Question:
I have nice and smooth drone rotation in Yaw, but I canā€™t set up rotating in Pitch. I tried all settings for controller/drone movement etc but it not works. I can code it myself depending on nav points locations and angle, but before I will invent wheel again, maybe is here simplest solution, just I miss something?

This Yaw problem is gone. I started it from new in other project and now drone rotating in any angle, no problem.

How to destroy path after actor destroy? I have respawn system and I see, path still exists and new drone canā€™t fly.

Thankā€™s again, great job!