I've noticed there's a couple of things that appear to be framerate dependent and there doesn't seem to be a way to actually solve this. Take this setup for example:
wackytoaster.at/parachute/framerateindep.c3p
It's as simple as it gets. Sprite1 collides with sprite2 and sprite2 vectorY is logged in the console. (then layout restarts and does it again)
While the results are consistent over and over again for the same framerate (ignoring minute differences), it gets ugly once I switch it. My screen supports up to 240 fps, so I can easily test it.
And there we have it. A difference in vectorY of 20! I knew beforehand that deltatime has some imprecision, but this is too large to build around.
60fps -> 875
240fps -> 894
4500fps -> 897 (unlimited mode)
Based on that it seems that the error gets exponentially smaller at higher fps, but the important ranges of 60-240hz (which I think 99.99% of screens fall into) have quite large differences.
My project (or part of it) relies on this specific interaction actually, and the compounding error over multiple of these interactions is very noticable. I only see two options. Either I figure out some kind of formula that accounts for the differences somehow or I ship it with unlimited mode, simply assuming most computers will manage to run it at 240+ fps.
The third option is to use a fixed tickrate for the engine which is not possible in Construct from my understanding. Though maybe it is considering there's an unlimited (ticks only) mode?
So... what can I do? Any ideas?