VSync capping actual BulletStateApp.speed

Hello,

I’ve notices that no matter what speed I set (via this.bulletAppState.setSpeed(speed) in my extension of SimpleApplication) the actual ingame speed is capped at roughly 3.75 (+/- 0.05) if and only if I’m using Vsync.

I have tested this by letting a vehicle run at (what the engine thinks is) 5.0km/h and measring the distance covered at various BulletAppState.speed-values: (1,2,4,8 and 20) with actual speed (1,2,3.75,3.75,3.75). BulletStateApp.getSpeed() always returns the speed value as it was set, so the variable doesn’t get messed up before setting the speed.

I’m using a Thinkpad T540p ( Intel Core i7-4710MQ-Prozessor @2.5Ghz, 8GB Ram, nVidia GT 730M). CPU usage is between 5 and 8% (<=20 in total), RAM usage about 600-700MB (about 2-3 GB total), fps without vsynch at about 500, with vsynch 58-60 with the occasional 57 or 61.

Without vsync it scales fine till at least speed = 8 and then starts to slow down somewhat (speed=12 yielded about 10.6 actual speed for me) but at that point it’s most likely simply too taxing on my system without vsync.

Is this a known issue and are there any workarounds without forcing off vsync?

Thanks

Did you try to run bullet multithreaded?
That way it is nearly undependant to the update method

1 Like

Yes, tried that, same result (that is still capped with vsync).

Just to make sure, you ment this, right?
bulletAppState = new BulletAppState();
bulletAppState.setThreadingType(BulletAppState.ThreadingType.PARALLEL);
stateManager.attach(bulletAppState);

1 Like

Look at the javadoc of PhysicsSpace.setMaxSubSteps()

Great, thank you, I only checked the BulletAppState class which was a dead end.

So it didn’t get to 4.0 because vync keeps it in the high 50s.

This solved my issues, thanks for the hint !
PhysicsSpace.setMaxSubSteps(0);