Try making your own delta time using by using the UNIX epoch time. Either use os.time(), tick() or DateTime.now() (all but DateTime are deprecated but you can still use it to test). If that is the actual amount of time that has passed since the actual frame you will need to find another solution.
The game itself doesn’t have any major lag spike issues - I’m here looking for a fix for this issue because I heard complaints from people who play on low end machines
If that is the actual amount of time that has passed since the last frame then you need to find an alternative to using DeltaTime.
If you’re trying to optimize for low end devices I would at minimum optimize for 30fps because anything lower than will be difficult for players no matter what.
Also within the post you provided the error is with RunService.Stepped. Try experimenting with other events such as RenderStepped or Heartbeat.
the reason why delta time is used is to make the changes the same on any fps
for example,
120fps will move a part by 1 stud 120 times per second
60 fps will move a part by 2 stud 60 times per second
30 fps will move a part by 4 stud 30 times per second
all of these examples are moving the same studs
if 30 fps moved the part 1 or 2 studs per frame then the change of the part position will not be constant across all fps
the only thing to stop the weird movement is to not use delta time but then the amount of change will not be constant across all fps
Little unrelated I guess, but for context:
My viewmodel script pushes the camera up every frame to simulate recoil based on a cframe value, which is lerped to zero each frame using delta time
What would be the proper way to do this, if not delta time?
your way is already correct and not using delta for this will cause the recoil for low fps players to be very low and will cause the recoil for high fps players to be very high delta is used to keep the recoil the same across any fps