SimplePath - Pathfinding Module

Roblox’s pathfinding service isn’t really effective for constant routing, which is why people try and find ways around it, which is one of the reasons SimplePath exists, until roblox has a better way to make a NavigationMesh which also takes into account CollisionFidelities it will be inefficient and buggy.

It’s not technically the modules fault as to why bugs keep happening, as all this does is find ways to utilise the service roblox provided.

The best way we can do is debugging the map sadly… As There’s no way we can fix pathfinding bugs.

But anyways, Do you have any idea how to make pathfinding modifiers work with SimplePath? For me, It dosen’t work, But With the normal Pathfinding service it works.

You can use Polaris-Nav to generate, edit, and use custom navigation meshes. You can also use different meshes for different NPCs (car vs pedestrian).

It’s in public testing now and only allows for small maps without jumps. Should be fully released in a month or two.

1 Like

Really nice! Great job on this.

looks like my npc characters using this pathfinding module refuse to pass through collidable walls set to non-collidable by a collision group… any workarounds available?

try adding a PathfindingModifier object in the part(s) and set the PassThrough property to true

1 Like

I really appreciate this module, because it’s more efficient than the actual PathfindingService.

  • Game doesn’t turn into a nuclear reactor when you have +20 NPCs using this pathfinding method.
  • Less calculation, thanks to the events!

I honestly had problems with a climbing AI, but few script tweaks and agent settings have helped me.

2 Likes

Super promising resource at first glance, but in practice pathfinding agents will commonly decide that they will forever be an extension of any solid objects they come near that are over hip-height but not tall enough to be an actual wall. No errors are thrown by the plugin or ROBLOX itself, and I modified the character’s parameters numerous times to hopefully get around the issue but with no success.

Here’s a quick gif of what I mean. Otherwise, I haven’t encountered other issues, but this problem itself is sadly a deal breaker for me.

1 Like

couldnt this be fixed using AgentHeight and set it to a higher/lower number?

No sir. Already messed around with such parameters to no avail.

Does the “Normal” Pathfindingservice make a difference?

i mean set it to low numbers such as 1 or higher numbers such as 6
i use this for one of my AI’s

Kinda disappointed with how it doesn’t support CollectionService, i would’ve expect to clone the tagged character and make it follow the goals but it doesn’t even try to run unless setting parent to individual character which is what I hate to do

is it because I need to parent them all from workspace?

Is it possible for an NPC to at the same time use pathfinding service and always have it’s HRP face the player? For example if it’s target is to the left of the player it would move right while facing the player.

Tried forcing HRP to face the player but it ended up breaking the pathfinding. Anyone got solutions?

what i have done in my in-prog ai sys is in my main ai code set the autorotate property to false for humanoid

calculate dot product to conditional bounds or always rotate to look at a player

rotate npc either by tweening or set cframe to look at player

tried this but they’re still just standing in place and jumping, i used
character:SetPrimaryPartCFrame(CFrame.lookAt(HRP.Position, nearest.HumanoidRootPart.Position * Vector3.new(1, 0, 1) + HRP.Position * Vector3.new(0, 1, 0)))
to make them look at the player

additionally, if i put it outside of the code block including the path:Run() and inside a heartbeat event it will move the npc but at a very slow pace

idk about that code but all I did was CFrame.new(npc.primarypart.pos, player.primarypart.pos)

it will move the npc at a very slow pace because you are constantly changing the cframe of the npc,

which is why using the dot product is crucial, you only want the npc to rotate if he goes outside of your fov (dot product condition statements), doing it only when the player is outside of the bounds will negate the slow pace effect

what do you mean thats all you did? i’ve never heard of dot products before so if you have an api link explaining it that would be great.