Does SpriteKit physics have a maximum velocity?

I am making a game with spriteKit that involves applying very large impulses to certain nodes.

However throughout testing I have seen that some numbers seem to be too big. This lead me to dig around and I found that when I apply a very strong impulse, it will move the sprite forward at the correct velocity for one frame, before brining it down to a much smaller number. For example I would apply an impulse of one million and by the second frame the velocity is 300,000

For these tests I have turned off linear and angular dampening, made the SpriteNode indifferent to gravity and gave it a mass of zero. The line of code used to run the impulse is: ball.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 100000000)) where "ball" is an SKSpriteNode, and 100000000 is an arbitrary large number. Running this and printing the velocity.dy per frame, I see the first frame is 100000000.0, as expected, but the following frames the velocity changes and stays at 35999.99609375, a seemingly random number.

I am wondering how I can fix this, are there any hidden maximums to velocity I must change, or any further dampening settings I must change? All help is greatly appreciated! :)
Answered by Claude31 in 627660022
So that may well be a design limit on speed (not on impulse as this test shows).

That's large enough speed for any man made object (the fastest was New Horizon en route to Pluto at 21 000 m / s).

But if you are simulating for astronomy, that may be a bit limited.

You should ask the question to Apple Support if no Apple DTS is answering to this post.
Do you get the same issue if mass is for instance 1g or 1 kg ?

And what happens if mass is zero and impulse is small (let's say 100) ?
If I set the mass to something like 1 or 0, I still get the same invisible cap. As for applying a small impulse, I don't face this issue. After more testing I have noticed that applying any impulse under 36,000 works just as expected, however anything above 36,000 will glitch as I explained above. For example applying an impulse of 1,000,000, the velocity will be 1,000,000 for one frame and then immediately go back down to 36,000 where is reminds if there is no linear dampening.
So the value you observe is 36000 after float rounding error.

There is something I don't understand here.
If mas is for instance 100 kg, an impulse of 1000 000 kg*m/s should give a speed of 10 000 m/s
Could you check this ?

May be the limit is on impulse (even though I found no documentation on this) and not the velocity.

But in any case, a 36 000 impulse should give different velocities depending on object mass.
Is it what you get ?
Thank you so much for your help, I tested what you said, and it worked out to give me a velocity of 10,000, however when I then decrease the mass to something such as 1, which would produce a speed of 1 000 000 m/s, it only gives me a speed of 36 000 m/s. Similarly I have found no documentation highlighting a limit for velocity, and I have scanned my code for any obscure rounding errors, to which I found none.
Accepted Answer
So that may well be a design limit on speed (not on impulse as this test shows).

That's large enough speed for any man made object (the fastest was New Horizon en route to Pluto at 21 000 m / s).

But if you are simulating for astronomy, that may be a bit limited.

You should ask the question to Apple Support if no Apple DTS is answering to this post.
Thank you so much! I may want to rethink parts of my app, with this limitation in mind, thank you for your continued support :)
Does SpriteKit physics have a maximum velocity?
 
 
Q