Download

Using NavLink Proxy?

So I have an enemy AI that follows me (the white sphere in the video) and I’m trying to get him to follow me and jump off the ledge. Doing some research it seems the only way to do this is by using NavLink Proxies. So i played with it a little and can’t seem to make it work smoothly. As you can see in the video if I keep moving the AI will just stutter there trying to pick up my new location and when I stop it finally jumps down. How can I make this smooth enough that he just follows me off the ledge? I also saw some stuff on pathfinding and such but that seems a little difficult to implement.

Here is my video: https://youtu.be/bEhm8Xk4ho8

Here is what I want it to do at 6:10: https://youtu.be/-KDazrBx6IY?t=369 This may have been the normal way in an older version of the engine but I want to recreate that smooth effect. I am using 4.8 by the way.

There doesn’t seem to be enough info on NavLink proxies but if anyone knows how to implement this I’d be very grateful!

Same here. Stuck for a day now, with the search for a BP only solution to cross gaps. Or jump between NavMeshVolumes.
I setup a trigger on node end NavLinkProxy and start, but the results are bad.
NavLinkProxy has all i need, so far i could see, howto use it.
The Documentation is not very well for that too. https://docs.unrealengine.com/latest/INT/Resources/ContentExamples/NavMesh/1_2/index.html
NavLinkProxy still have own cyl volumes.
Nav areas /obstacle / modes / fly are not to understand/replicate from my point.
Its a silly thing, when every navVolume has to be connected with ramps.
My Ai uses only one animation and no behavior tree, basic move to, but many states.
:slight_smile:

It’s not well-explained because there’s certain limitations on it which are arbitrary.

In Epic’s defense, the NavLink is literally an old element from Recast itself, and it’s busted as heck (you can read the Recast bug tracker and feature request list to see the complaints), all Epic did was plug it in.

The only solution is going to be for Epic to branch Recast and change it, probably, but I’m not sure they’re gonna.

It’s not well-explained because there’s certain limitations on it which are arbitrary.

In Epic’s defense, the NavLink is literally an old element from Recast itself, and it’s busted as heck (you can read the Recast bug tracker and feature request list to see the complaints), all Epic did was plug it in.

The only solution is going to be for Epic to branch Recast and change it, probably, (this is what Unity had to do), but I’m not sure they’re gonna.

Failing that, become a voice in the chorus asking for Rama to release his jumping AI so you don’t have to place navlinks ever again.

In terms of working with them now, my best advice is:

  1. press P (show navigation)
  2. when placing a navlink, it will draw a smooth, curved arrow by default. If a navigation link is successfully created, a more jagged, straight-line-based arrow will appear as well, which is drawn on the navmesh topology (goes away when you hit P again).

If you don’t see the jagged, boxy arrow, the navlink is not properly placed. Try fidgeting the start and end points around somewhat to see if you can get it to grab onto the navmesh (the trick here is that navlinks can only connect adjacent nav octree nodes, which means they will sometimes fail for seemingly no reason if the gap is JUUUUST too far apart).

Oh thank you very much @RhythmScript
, but now the char enters the NMP StartLoc and jiggles around a bit on z axis and stands there.
These NavArea stuff (create BP Actor) - NavArea - cost i do not understand too.
When i want to change the Character to fly/jump to the next point, howto set that behavior, or create a NavMeshArea thing for it?
These Area classes under Broadcast are confusing for me and i would klike to understand that stuff.
So far i understand them they are causing different behavior, but that “cost” input inside the class BP, is all to configure?
:slight_smile:

Character cannot be told HOW to cross the Navlink, only TO cross it. Since UE4 moves AI only by walking, Navlinks can only work across gaps in the navmesh that can be walked across.

So if you set up a Navlink up a ledge or something, the AI will attempt to walk up the ledge, and it will not be able to, so it will just sort of jiggle around as it tries to do so over and over again.

Yes, it’s an annoying limitation. I currently work around it by placing trigger volumes with some very complex logic that just launch the enemy to the end of the navlink he’s supposed to “jump” to.

It’s not ideal, but the issue is there’s no exposed way of determining that an AI is currently crossing a navlink path (if there was, you could latch onto that and change is movement mode accordingly), so you basically have to treat it as a walkable path and use triggers in the environment to fake it so that walking it leads to jumping.
@Rama has a solution
https://youtube.com/watch?v=sMMSQdnyt6o
But he’s not ready to release it yet. Believe me, I’ve asked. A bunch.

Aaah ^^.
But i can see, that the ai interacts with the endpoint, is it creating an event/notify i could “grab” inside my AI blueprint?

The same stuff with triggers i tried too, but the result is not so well, and setup is complicated in my case.
That’s a really weird limitation for me with Blueprints only.
That NLP looks exactly what i thought i would need.
Triggersolution is not practicable for me.

Edit: More testing. I made a BP with Two adjustable portlocations/settings to teleport the ai. Cheapest solution for me now, to get back on track.
I was thinking about some visible Teleporter mechanism, at the spot, where the NPL start/endpoints are.
Teleporter/pad/catapult, whatever. Perhaps some overblending effects to “overpaint” small errors.
Weekend freetime used up for that, nothing new learned, aside NPL are dumbos…

I can not change leveldesign to get a workaround.
I spent so muche time now, figuring it out and can not really understand, why it is complicated to setup a thing like that for epic.
When i setup an own Blueprint /tunnel/teleport movement and the enemy moves there accidentally, things get worst, even when i force the ai there it works.
I use some states for my AI and it would be easy to integrate someting search startnode - noding - leave endnode, but only when the NLP gives some feedback.
The AI from Rama is cool, but so far i tried to understand anything i do inside UE4, with c++ that “understanding” would have an end for me.
:slight_smile:
Is UAIS (marketplace) solving that problem? so many “I”'s ^^

Edit #3425: @RhythmScript Are you using teleport, or influencing character controller/impulse/force?

I tested that basic teleportsetup and it works, but for any NPL i would have to place an additional “MyPortThing”, with many gaps that would be painful.
Can i manual get the same function like the NPL has, into “MyPortThing”?
A check if the target outside actual navmeshvolume and when search the shortest passage with a modified NPL+MPT?
The teleporting is ok, not really what i wanted, but with some effects it could look nice and i would have to rethink only small map portions <4x4 grid.
portnpl.jpg
:slight_smile:

Hey guys thanks for the input. I guess this really is just something we have to wait for. Either Rama(ive been following his work as well) publishes his system or Epic fixes it, we just gotta wait. In your case Luft It doesnt look like you are using the NLPs correctly. Unfortunately I think (with ledges anyway) they can only go one way. In the details panel when you have the NLP selected there is a drop down that says “Both” by default, you need to change that to “left to right”. Try this and also maybe try adding 2 more going the opposite way if you need to go backwards and see if it works. But if your AI is following you like mine is it will do that jitter I had in my video if you are moving and then it will jump when you stop. It is able to jump but it is not able to smoothly jump while navigating to a constant new location, that is what Im trying to get fixed.

Oh cool, working nice. Additional work completely ok. I stay for now with teleport.
And again i would be lost, without this cool forum.
Sometimes posting helps me, to rethink stuff.
NLP_working.jpg
:slight_smile:
Edit#374785:

@Deathcheater Wee i use for sure some stuff in a nonprogrammer way, more creative ^^
It works nice for me now.
I created a variable bool to check which port is taken a/b and reset the bool, after end overlap and or .5 sec delay.

That is a pretty hacky work around and I’d rather not do it that way. The NLP works as intended broken as it may be (note i have only tried jumping down and not up lol) and I still wonder if it is even using the nav smart link setting when ticked to relevant because it doesnt change anything. I just want to see if the AI can smoothly jump off using the NLP while it is constantly moving to a new location (basically when i keep moving in the video i posted). There probably isnt a way to do this and I’ll probably be stuck waiting for Rama’s method or until Epic fixes it.

Glad you got a system that works for you. Teleporting is a awkward way to do it but in your tron sci-fi like environment it would probably fit. Also wouldnt hurt to try out what I just told you.

I know and it’s far away from my first plan.
But i need progress and could extend it later always.
Sure the standard follow mechanism would be nice to have and i try for sure your suggested (one-way) method.

@Deathcheater
I have to create a basic AI foe spawnvolume - perimeter - area and there i check the different detecting - attacking - pathfinding stuff, but i like how it looks for now.
Nothing has to be perfect for me, nothing is.
:slight_smile:

Another issue I am having trouble with is having the AI follow me into a Physics Volume. Trying to make it swim with the character but it just waits at the top of the “pool” because the navmesh continues at the bottom of the pool. How can I get it to ignore navigation entirely and just follow the character while in the Physics Volume?

Found a sort of work around for the ai swimming thankfully. Kind of wonky but it works.

what did you do? im curious, would you just have a bool that once hes in water to switch movement to swim or does he fly and just play swim anim?