FPS and Substeps

A common question is why simulations with a high FPS rate require less substeps? The answer is precision. The length of a single substep is calculated as

lengthsubstep = 1 / ( FPS rate * substeps )

In RealFlow, time is not a continuous stream, but subdivided into chunks. Between these chunks, a particle's or object's velocity is considered constant. This gives a very good approximation and the more substeps (= time chunks), the better the representation of the real behaviour.

An example:

  • Let's assume you have a FPS rate of 25 and 300 substeps.
  • According to the formula the length of a single substep is 0.0001333 s.
  • This is a very accurate subdivision and gives precise results.


Now, let's use a FPS rate of 400 and see what happens:

  • lengthsubstep = 1 / ( 400 * 300 )
  • lengthsubstep = 0.0000083 s
  • So we have a much higher precision: 0.0000083 s vs. 0.0001333 s


In order to get the same precision as before, substeps can be decreased:

  • In this example, the FPS rate has been increased by a factor of 400 fps / 25 fps = 16.
  • Therefore, the number of substeps can be calculated as 300 fps / 16 fps = 19
  • With 19 substeps and 400 fps we get the same level of precision as with 300 substeps and 24 fps.