NPC Pathfinding stutters

I’ve got an npc connected to a trailer in which a player can ride in. it is programmed to go to nodes in a certain order. but when i sit in the trailer, the npc stutters for a second when it arrives at a node. Why does this happen and how can i fix it? When no one sits in it it’s fine, is it the player mass maybe?

give code ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎ ‏‏‎ ‎‎‎

here


it’s around 50 of those P1 bricks, big course
and the end
image

What can I do to improve this??

i’m gonna guess it has something to do with network ownership.

So how do i fix it?
I’m new to scripting so i’m not really sure what it means

can you send me the full script? not as a screenshot

do you want me to copy paste it? it’s very long

local NPC = game.Workspace.Noob1 -- (Change "Test" to your NPC name)

task.wait(11)
while true do -- (Change the number to how long you want your npc to stop)
	NPC.Humanoid:MoveTo(game.Workspace.P1_1.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_2.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_3.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.Tunnel2.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_4.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_5.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_6.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_7.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_8.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_9.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_10.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_11.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_12.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_13.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_14.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_15.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_16.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_17.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_18.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_19.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_20.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_21.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_22.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_23.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_24.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_25.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_26.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_27.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_28.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_29.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.Bridge1_1.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.Bridge1_2.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_30.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_31.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_32.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_33.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.Bridge2_1.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.Bridge2_2.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_34.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_35.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_36.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_37.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_38.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_39.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_40.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_41.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_42.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_43.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_44.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_45.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_46.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_47.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_48.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_49.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_50.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_51.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_52.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_53.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_54.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
	NPC.Humanoid:MoveTo(game.Workspace.P1_55.Position)
	NPC.Humanoid.MoveToFinished:Wait()
	task.wait(0.005)
end


The P1 in the node means Player 1, and then the number after the underscore is the order it goes in

first of all, definitely make use of a loop instead of that huge mess!
and the stuttering could possibly be caused by the task.wait(0.005).
i removed the wait in this version, does it yield better results when tested?

local NPC = workspace.Noob1 -- (Change "Test" to your NPC name)

task.wait(11)
while true do -- (Change the number to how long you want your npc to stop)
    for i=1, 55 do
	NPC.Humanoid:MoveTo(workspace["P1_" .. tostring(i)].Position)
	NPC.Humanoid.MoveToFinished:Wait()
	--task.wait(0.005)
    end
end

yep, it still stutters with your code

could you send a video so i could see what you mean exactly by “stuttering”?

Am i allowed to post youtube links? thats the only way i thinkican send it without it taking 10 mins to upload

here is the video of the stuttering, whenever it hits the box it’s stopping for a second
You can sorta see the other one speeding away because no one is on it

ahhh, i see. give me a second i’m gonna look into it

it might just be MoveToFinished:Wait() taking too long but try this:

local NPC = workspace.Noob1 -- (Change "Test" to your NPC name)

for _, part in pairs(NPC:GetDescendants()) do
	if part:IsA("BasePart") and part:CanSetNetworkOwnership() then
		part:SetNetworkOwner(nil)
	end
end

task.wait(11)
while true do -- (Change the number to how long you want your npc to stop)
	for i=1, 55 do
		NPC.Humanoid:MoveTo(workspace["P1_" .. tostring(i)].Position)
		NPC.Humanoid.MoveToFinished:Wait()
		--task.wait(0.005)
	end
end
3 Likes

Wow, that fixed it! Thank you so much!
I thought the Finished thing was important

good to hear! glad to help you out

I tried adding that setnetworkOwner part but it does not work for me.