Je travaille sur mon premier jeu :)calendrier boucle jeu Android différence
Il est un jeu basé sur Android à l'aide libgdx et utilise un exemple modifié d'un des DeWiTTERS loop
La boucle de jeu semble fonctionne parfaitement bien sur le bureau (59 - 60 fps) mais quand je cours sur mon téléphone, il a tendance à s'asseoir autour de 75 - 90 FPS
nextGameTick devrait toujours se référer à 16ms dans le futur de sorte que la boucle de jeu fonctionne à 60 FPS ou moins, pourquoi n'est-ce pas le cas
Voici la partie principale de la boucle de jeu pour référence:
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");
Pourriez-vous expliquer le but de 'General.curFps = 1000000000/General.loopTime;'? –
@MisterSmith thats ce qui calcule le FPS il divise le nombre de nanosecondes dans une seconde par le temps que la boucle a pris en nanosecondes –
Je ne sais pas si c'est la cause du problème, mais il me semble mauvaise conception à dormir pour cette petite quantité de temps. C'est à peu près une attente active. La méthode 'Thread.sleep' que vous utilisez a un paramètre en ms. Il y a une méthode surchargée acceptant ns aussi. Cependant, aucun d'entre eux ne sont garantis pour dormir exactement un certain temps. Pour avoir une plus grande précision, utilisez une minuterie pour dormir exactement les ns requis en une seule attente. –