Discrepanza di temporizzazione del loop di gioco Android
Domanda
Sto lavorando al mio primo gioco in assoluto :)
È un gioco basato su Android che utilizza libgdx e utilizza un esempio modificato di uno dei DeWiTTERS loop
Il loop di gioco sembra funzionare perfettamente in esecuzione sul desktop (59-60 fps), tuttavia quando corro sul mio telefono tende a stare da qualche parte intorno ai 75-90 FPS
nextGameTick dovrebbe sempre fare riferimento a 16 ms nel futuro in modo che il ciclo di gioco funzioni a 60 FPS o meno, perché non è così
Ecco la parte principale del ciclo di gioco come riferimento:
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");
Soluzione
L'utilizzo di esempi di codice da HERE ha risoltoil mio problema
grazie a Mister Smith per la risposta.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow