Vector3Curve no longer functions!

Vector3Curve does not work correctly after update.

Here is a video describing the issue:
What it looks after you guys broke something:


What it should look like:

The code which i never modified:

--returns a cframe for each frame (60 fps default), until the last Time argument, which is inside the positions.
orders.createBezierCurve = function(positions: table, TweenProperties: {EasingStyle: Enum.EasingStyle, EasingDirection: Enum.EasingDirection}, FRAME_RATE): {CFrame}
    local curve = Instance.new("Vector3Curve")

	local curveX, curveY, curveZ = curve:X(), curve:Y(), curve:Z()
	for _, FloatCurveKeyProperties: {Time: number, Position: Vector3 | () -> any, Interpolation: Enum.KeyInterpolationMode?} in pairs(positions) do
        local position = type(FloatCurveKeyProperties.Position) == "function" and FloatCurveKeyProperties.Position() or FloatCurveKeyProperties.Position
		curveX:InsertKey(FloatCurveKey.new(FloatCurveKeyProperties.Time, position.X, FloatCurveKeyProperties.Interpolation or Enum.KeyInterpolationMode.Cubic))
		curveY:InsertKey(FloatCurveKey.new(FloatCurveKeyProperties.Time, position.Y, FloatCurveKeyProperties.Interpolation or Enum.KeyInterpolationMode.Cubic))
		curveZ:InsertKey(FloatCurveKey.new(FloatCurveKeyProperties.Time, position.Z, FloatCurveKeyProperties.Interpolation or Enum.KeyInterpolationMode.Cubic))
	end

	local BezierCFrames = {}

	local PathTime = positions[#positions].Time

    --bullets must contain atleast 2 positions, in this case it is BezierCFrames[0], BezierCFrames[1]
    local lastFrame = math.max(math.floor(PathTime * FRAME_RATE), 1)

	for frame = 1, lastFrame do
		local TimeWithTween = TweenService:GetValue(frame / lastFrame, TweenProperties.EasingStyle, TweenProperties.EasingDirection)
		BezierCFrames[frame] = CFrame.new(Vector3.new(table.unpack(curve:GetValueAtTime(TimeWithTween * PathTime))))
	end

    --does not equal to BezierCFrames[1]! 0 is beginning, 1 is 1 / lastFrame!
    BezierCFrames[0] = CFrame.new(positions[1].Position)

	return BezierCFrames
end
	skillPath[#skillPath + 1] = {Time = (skillPath[#skillPath].Time or 0) + lastToCheckpointTime, Position = Vector3.new(0, 1000, 0)}
	skillPath[#skillPath + 1] = {Time = skillPath[#skillPath].Time + checkpointToSpawnTime, Position = spawnpoint.Position}

    bindableFolder.OrderHandler:Fire("Bezier", "new", {Name = player.Name, Parent = workspace},
		{StartedAt = workspace:GetServerTimeNow(), BulletFps = information.CurrentFrameRate < 60 and 60 or nil, OverrideBulletFps = true, UID = HttpService:GenerateGUID(false), SkillPath = skillPath, EasingStyle = Enum.EasingStyle.Sine, EasingDirection = Enum.EasingDirection.In},
		{HasSlope = true}
	)

My skill path does not include any Interpolation index, so it is Cubic. I also never modified it. After near update, Vector3Curve fails to create bezier curves. It was working fine yesterday. It seems previous positions have no effect on the path between anymore.


this is not a cubic bezier path… And it is totally different than what it was. Paths got incredibly sharp after you guys updated roblox (08.15.2025). My players also reported this.

1 Like

Do you get Any errors in the output?

If there are no errors, test ur system in a new experience (Copy and paste it in a new experience), if ur system is working in the new experience, then there are a few things u can do:
1- Move ur game to the new experience
2- Disable all scripts in the game exept for the one that runs ur system and test ur system again (maybe it’s the other scripts that are affecting ur system)

If none of the above works, maybe the internet or lag are causing this problem.

Nice game btw

1 Like

do they even look at bug reports, where is a response? Anywhere else that i can report this?

Idk, I’m not an admin, but did u try to implement ur system in a new experience?

Your bug is filed in the internal system, see the Open label under your topic title.

1 Like

Hi there, thanks for your report!

We have reverted a flag that might be responsible for the issue you’re saying. Please allow one hour for the configuration change to affect all players.

However we believe the change we made goes in the right direction, as it fixed other issues we’ve seen with the animation system. So we’d like to discuss this more with you in private. In particular, we would like to get a copy of the data you pass to that function and the result you expect to receive.

Cheers!

Thank you so much. Like you said the issue is fixed. I would love to obtain the math functions for the path and implement it myself. So that my systems stay intact and you guys can change it without any damage.

OP and I discussed their original implementation and a solution was found.

Since it’s required for another feature, the flag has been turned on again.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.