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

Nice to hear from you!

You can always PM me about my programming services :slight_smile:

( I am not trying to turn thread into an ad, I do share what I share here just for fun!)

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.

Cheers KB

Can you be more specific about what functionality you need that you are not yet sure how to implement?

:slight_smile:

AI Navigation Data Analysis

AI Navigation Data Analysis

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!

Enjoy!

https://youtube.com/JzShLW67G00

Nice video your pathing is looking great. :cool:

**New Video!

AI Jumping To Reach Specific Goal Across Nav Mesh Gaps**

In video I am showing how my C++ AI code is helping my AI units to get across gaps in nav mesh / different nav mesh sections to reach a specific goal!

My C++ code is enabling the AI to reach places they could never reach without some carefully calculated jumps!

In all of my videos all jumps are dynamically calculated, I am not using navlinks of any kind!

The only setup I did was to place the navigation mesh volume, the rest is done by me in C++ !

I use Navigation Mesh Point Projection to keep the cost of all my AI analysis very low :slight_smile:

AI Jumping To Reach Goals

/8tu-XFTX6SQ

's Victory Jumping AI

When I saw my AI do I was so happy!

All is dynamically calculated by me via C++!

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

AI Jumping Advanced ~ Edge Detection

In video I am using Nav Mesh ray tracing to find the edge nav polys that are near the current chosen goal!

enables me to give each AI unit better instructions about the best way to jump to reach their current goal, if gaps are detected!

I’ve already got my gap detection system working :slight_smile:


**Nav Mesh Ray Tracing**

Nav Mesh ray tracing is very efficient! It is much less expensive than 3D world tracing :)

It's the same concept as regular traces but only operates within the nav mesh polys.

AI Performance

Notice how in my video my AI reaches me everywhere I go, including sequential isolated platforms!


**No Extra Helpers in Level**

The only thing in level is the basic nav mesh volume! 

I have not provided any assistance to the AI in the level itself! No nav links! 

The idea is that in my games I need support for runtime generated platforms and gaps, so the AI must figure everything out dynamically each time they wish to path, without any extra helpers.

C++ Core, BP Accessibility and Control

Everything you see in the video is me doing C++ calculations to find the best jumping paths :slight_smile:

I have exposed all the key variables of my algorithms to blueprints though, so that anyone can tweak the AI jumping, per creature!

That’s right! Anyone using my system can adjust my algorithms per individual creature!

is unit-level AI !


**Video**

https://youtube.com/VgAbYMcDjms

Enjoy!

!

is simply Amazing!

I am new to UE4 but have a lot of experience coding AI in Neverwinter Nights 1 so the AI behaves more intelligently and huge performance increases. What you are doing with is incredible!

would be a great AI system base for both Enemy and Companions. Give players a few hundred things to think about. :slight_smile:

I want/need something like ! haha!!

Krixa!

Hee hee thanks Krixa!

(sorry I read your reply earlier but forgot to respond!)

Great to hear from you!

Quick Update Video

Just a quick update video, showing how I am gathering all nav mesh areas that are non-contiguous / not directly pathable to from the goal location.

I am using test to determine which nav areas are valid to be pathed to via jumping!

Again the whole focus is nav areas which are non contiguous / jumping is required.

I am now going to use data to develop a jump-pathing system, an additional layer of pathing on top of UE4 pathing.

Enjoy!

https://youtube.com/2RWiD_epPiI

**New Video!

Branching Jump Paths Search**

Hi there!

In video I am demoing the progress of my Jump Path algorithm where I am finding jump pathways for the AI unit to follow, which necessarily involve switching between different sections of nav mesh that are not contiguous.


**Comparison**

Regular AI pathing requires navlinks to do , but I am writing my own system so I can have runtime generated geometry that the AI unit can still do jump pathing over, and there is no extra work for the level designers, I am doing it all in C++!

Efficiency?

In video you see the radial line checks I am doing.

These are not traces!

is very low level simple math calculations!

The line is being checked against a box using UE4’s related math functions, and it is very efficient!


**Tick Speed**

I am slowing down the algorithm in the video so you can see it better, and also so I can debug it as I am making it, visually seeing each phase of what it is doing.

Algorithm Overview

  1. First I am getting all of the Edge nav areas, as seen in prior videos, then I am doing radial traces from each edge to find nearby nav areas that are facing away from the start point of where I am testing.

These found nav areas are highlighted in green!

Again no traces or even nav mesh raycasts are involved, just simple box/line math calculations!


**Next step:**

Next step will be to make check run itself over each successive step in the path, find the best points for the AI unit to path to and then jump from to get to the next point

Enjoy!


https://youtube.com/WMnGyMSfbIk

That is looking very good with low perf. Great work :slight_smile:

Please tell me that you’re planning to finish whole system and either get it into a future version of Unreal Engine 4 or turn it into a plugin and upload it to the marketplace!?!?! I would die of excitement if either of those two were to happen! Good work ! :smiley:

Hee hee thanks Devero!

I can’t wait till you make all your cutting edge animation research public! * hint hint*

Hey there !

Sorry I will check out that large map you sent me at some point soon, been rather busy lately :slight_smile:

Making my AI system into a plugin would not be too hard, given that I am developing around a single class, the character class, and it is just a series of AI components + all of my C++ code :slight_smile:

But Epic is changing the whole AI component system in the very near future, so I need to see what changes in 4.5 and also wait for Marketplace plugins to be allowed by Epic!

But thank you for the feedback, hee hee!

:heart:

It’s alright lol, and oh, ok! Haha, thanks for the reply! Keep up the good work! :smiley:

**Jump Pathing System

Major Progress Update**

Major progress!

I’ve now succeeded in recursively generating paths from the ultimate goal to the unit’s current location!

As you can see in the video different paths are generated each time, and only successful ones are recorded!

Again what you are seeing are paths that involve a series of consecutive jumps, where there is no direct path to the goal!

is my Jump Pathing system!


**The Next Hop**

My next hop will be to actually make the unit follow one of the paths that gets found, once it gets found!

Performance

I slowed down the tick rate for the video so you could see what was happening, it is normally much faster :slight_smile:

https://youtube.com/v9dfxGUIdJk

Wow @…@
Fantastic Updates!

Hee hee! Thanks !


**Update**

I am putting the jump pathing on hold at the moment to work on other aspects of Abatron, which Devero has just publicly announced here on the forums!

https://forums.unrealengine.com/showthread.php?45059-Abatron-the-making-of-a-UE4-Hybrid-game-)&p=151952&viewfull=1#post151952

He's done some amazing work with UE4 curves driven by C++ and Anim Blueprints!

Here I am reposting my favorite video from thread so far, for anyone new to the thread.

What you’re seeing in video is my dynamic AI jump pathing system, finding a correct path across a very irregular surface requiring multiple jumps!

All done in C++!

The AI did not get any help in the editor, was strictly my C++ AI analysis of the world environment!

Again just sharing again because it was a such a moment for me in my AI development :slight_smile:

/0GX-1x-wACI

First and so far only gif I’ve ever made, cause it was such a incredible moment for me :slight_smile:

[/QUOTE]

:heart: