AlignMover Responsiveness not properly explained

Roblox has alignmovers like AlignPosition and AlignOrientation. These have a property called Responsiveness, it affects how the mover fundamentally acts

image


Developer page just said the values range 5-200. I cant do much math without knowing its function (force and velocity obey classical mechanics) and I couldnt find anything online.

Anyone know how this works? every response appreciated

Hey, I don’t know the mechanics behind these but I guess you could perform some tests for yourself to know how they work a bit closer. Probably add up by 5 and just see the difference, measure the time difference, velocity difference etc…

1 Like

MaxJolt (I think)

I am guessing MaxAcceleration however because there is MaxForce (which is technically MaxAcceleration) I am guessing the Responsiveness works as a multiplier for the change in velocity over time.

I think it might be more than MaxAcceleration because of this too.
https://gyazo.com/335b2a004cc6399bb5df9c6afbbaebcf

Basically I did a series of controlled tests with differing MaxForces and Responsiveness and I think it also applies to the rate of change of the acceleration too. As you can see the last two at the end were limited by their max force and overshot the target.

I also tried looking at the Max Acceleration and Max Jolt for these parts too.

local abs = math.abs
for iter = 1, 5 do
	local AlignPosition: AlignPosition = Instance.new("AlignPosition")
	local Part: BasePart = workspace[iter]	
	AlignPosition.Attachment0 = Part:FindFirstChildWhichIsA("Attachment")
	AlignPosition.Mode = Enum.PositionAlignmentMode.OneAttachment
	AlignPosition.Position = Part.Position + Vector3.new(0,20,0)
	AlignPosition.MaxForce = Part:GetMass() * workspace.Gravity * 2
	AlignPosition.Responsiveness = 5^iter
    AlignPosition.MaxVelocity = 100	
    AlignPosition.Parent = Part
	
	local AvgVel = 0
	local AvgAcc = 0
	
	local Vel0 = 0
	local Vel1 = 0
	
	local Acc0 = 0
	local Acc1 = 0
	
	local MaxVel = 0
	local MaxAcc = 0
	
	local AccTable = {}
	local VelTable = {}
	local JoltTable = {}
	
	game:GetService("RunService").Stepped:Connect(function()
		Vel1 = Part.AssemblyLinearVelocity.Y
		Acc1 = Vel1 - Vel0
		local Jolt = (Acc1 - Acc0)
		table.insert(AccTable,Acc1)
		table.insert(VelTable,Vel1)
		table.insert(JoltTable,Jolt)
		Vel0 = Vel1
		Acc0 = Acc1
	end)
	task.delay(10,function()
		table.sort(AccTable)
		table.sort(VelTable)
		table.sort(JoltTable)
		print("Max Jolt Part"..iter.." :",JoltTable[#JoltTable])
		print("Max Acceleration Part "..iter.." :",AccTable[#AccTable])
		print("Max Velocity Part "..iter.." :",VelTable[#VelTable])
	end)
end



– Result with MaxForce as limiting factor (Responsiveness is different.)

Results are a little hard to see but Jolt and Acceleration both max out on the last two.

But when I change the MaxForce to something that isn’t limiting.

Jolt has maxed out at Acceleration (Basically the Responsiveness I think controls the rate of change of the acceleration and max force caps acceleration)

Part Mass: 1 
Responsiveness: 5^x (x is part number)
Gravity = 196.2
MaxForce = Gravity * 2 

I only took maths not physics so correct me if I made a mistake. But that is what I think it is.
Also, I took the Jolt from here.

It seems that you can derive Acceleration to get Jolt(Basically Jolt is rate of change for acceleration similar to how acceleration is rate of change for velocity)

Hope this helps :smiley:

image I am doubting the reliability of wikipedia

1 Like

My guess is that it’s similar to P value in bodymovers

If my guess is true, responsiveness is the relationship between force and the distance from the goal (limited by maxforce of course)

So put in a very simple pseudo equation it’d be like

force = distanceFromGoal * responsiveness

So that the force is directly related to the distance through the responsiveness value
There’s also be some more code for the max force and velocity but you get the point

I’m not able to test right now but if the force applied changes based on distance, you could test if this guess is true

1 Like

Seems close…

@koziahss proved that Force changes over time, and from the Gyazo file I can see that the force decreases over time for parts 1 and 2 (the others had too much speed for it to show up i bet)

This can be deduced from the results

  1. Force (seems) to start at a high point
  2. Force has a negative slope (if deduction 1 is true, otherwise force rises and lowers)

So its either that acceleration has Jolt (meaning change over time) or it has some sort of distance-jolt… Having more points from both would allow us to solve the equation… think Ill call it a day though, my thought capacity for this year is used

PS. If anyone wants to later solve this, all you gotta do is copy @koziahss code and print all Jolt values instead of MaxJolt, then graph it over time, then distance… If that value isnt constant, god does not exist
– Thank you guys!

1 Like