Skip to content

Commit a132021

Browse files
committed
Update FAQs
1 parent 40c1bef commit a132021

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

FAQ.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ To compile it yourself, refer to the official Godot documentation for further in
2222
Alternatively, you can download prebuilt export templates from another trusted source.
2323
For example, the [LimboAI addon](https://github.com/limbonaut/limboai) provides web export templates with GDExtension support.
2424

25+
2526
## Ropes lag one frame behind
2627

2728
This is a known issue and related to execution order.
@@ -34,3 +35,39 @@ See [Execution Order Documentation](docs/execution_order.md) for a more detailed
3435
## Collisions tunnel through objects / stretch along corners
3536

3637
See [Collisions Documentation](docs/collisions.md).
38+
39+
40+
## Collisions are not working with Rapier2D
41+
42+
Rapier2D is not supported.
43+
44+
- It does not report relevant collision information in editor, only at runtime. That means collisions don't work in the editor at all.
45+
- It reports different results, e.g. collision normals, than Godot's physics implementation, yielding broken collision behavior for various shapes besides polygons.
46+
47+
See also [#41](https://github.com/mphe/GDNative-Ropesim/issues/41).
48+
49+
50+
## Verlet Integration is FPS dependant -> Only 60 FPS are supported
51+
52+
This warning appears when running a different physics tick rate than 60.
53+
54+
The code is only partially frame rate independent.
55+
Increasing FPS makes the simulation run more often, decreasing FPS makes it run less often.
56+
The overall behavior might be mostly identical, but it will be sped up or slowed down respectively.
57+
For example, if the rope swings one time back and forth in one second at 60 FPS, it will do the same in only 0.5 seconds at 120 FPS.
58+
Some parts of the simulation are FPS independent, like gravity or damping which lessens the effect, but this is not the case in general.
59+
60+
In contrast to common Euler based physics engines, this plugin does not continuously integrate forces to handle velocities. It recomputes velocities every frame from the current state.
61+
This has the advantage of a very simple and efficient implementation.
62+
63+
Velocities are determined using the position difference from the current to last frame for each rope point.
64+
That means, the farther rope points are moved in one frame, the higher their velocities will be in the next frame and the stronger the reaction.
65+
Since the output position is used directly for the next frame's input, a frame rate independent simulation is impossible.
66+
67+
Imagine multiplying velocities with `delta` when computing new point positions.
68+
On higher frame rates, the rope points would move less because of smaller deltas, on lower frame rates they would move more.
69+
Instead of making the simulation frame rate independent, `delta` would only act as a kind of damping factor because it only slows the movement down which subsequently affects the velocity computed in the next frame.
70+
71+
It's perfectly fine to use this plugin on other frame rates than 60, but you will get different behavior.
72+
If it works for your use-case, feel free to remove the line producing the warning,
73+
But be aware that you can't just switch frame rates and expect the same outcome.

0 commit comments

Comments
 (0)