Bonjour à tous, je programme actuellement un petit jeu multijoueurs online qui marche assez bien. Néanmoins, selon les machines, je suis obligé d'augmenter ou de descendre la vitesse d'animation... je ne pense pas que cela soit normal.
Il y a un système de gestion de temps implanté dans le programme, mais j'aimerai savoir, si c'est la bonne technique pour avoir une vitesse d'exécution indépendante de la machine en question :
La boucle incrémente une variable de la valeur tempsAnim qui peut varier de 0.25 à 0.65 selon la vitesse d'exécution. En effet lorsque tempsAnim > 1, alors on passe à la frame suivante lors de l'animation, et on remet tempsAnim = 0.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 tempsActuel = SDL_GetTicks(); if (tempsActuel - tempsPrecedent > FPS) { hero->ApplyForces(ecran); viseur->Draw(ecran); hud->Draw(ecran, script->objec[0]); script->Apply(hero); SDL_Flip(ecran); tempsPrecedent = tempsActuel; } else // Si ça fait moins de 30ms depuis le dernier tour de boucle, on endort le programme le temps qu'il faut { SDL_Delay(FPS - (tempsActuel - tempsPrecedent)); }
Est-ce la bonne technique ? Si non avez vous des idées ?
Merci d'avance pour vos réponses.
Partager