Я работаю над своей первой игрой:)
Это игра на базе Android, использующая libgdx и использующая модифицированный пример одного цикла DeWiTTERS
Кажется, что игровой цикл отлично работает на настольном компьютере (59 - 60 кадров в секунду), однако, когда я бегу по телефону, он обычно находится где-то в районе 75 - 90 кадров в секунду
nextGameTick всегда должен ссылаться на 16 мс вбудущее, так что игровой цикл работает на скорости 60 FPS или меньше, почему это не так
Вот основная часть игрового цикла для справки:
public void render() {
nextGameTick = System.nanoTime() + skipTicks;
loopTimeFull = System.nanoTime();
Application app = Gdx.app;
screen.update(app); // Update the screen
screen.render(app); // Render the screen
// when the screen is done we change to the
// next screen
if (screen.isDone()) {
// dispose the current screen
screen.dispose();
<snip>
// Removed unneded part of code for this example
</snip>
}
}
// Make the thread sleep
General.renderTime = System.nanoTime() - loopTimeFull;
while (System.nanoTime() <= nextGameTick - General.renderTime) {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
General.loopTime = System.nanoTime() - loopTimeFull;
if (General.loopTime > 0)
General.curFps = 1000000000 / General.loopTime;
else
Gdx.app.log("Air Offense", "General.loopTime == 0");