Vitesse de rafraîchissement du jeu Flashcards
Qu’est-ce que la synchronisation verticale (VSync) et à quoi sert-elle?
La synchronisation verticale (VSync) synchronise la fréquence d’images du jeu avec la fréquence d’actualisation du moniteur. Elle contribue à créer de la stabilité et évite les déchirures d’écran, qui sont des effets détériorant l’image ou la dupliquant horizontalement.
Quel problème peut survenir si la synchronisation verticale n’est pas activée?
Sans synchronisation verticale, on peut obtenir un nombre quasiment illimité d’images par seconde, mais cela peut provoquer une déchirure d’écran, des sautillements ou des saccades selon la configuration de l’écran.
Comment active-t-on la synchronisation verticale dans SFML?
On utilise l’instruction window.setVerticalSyncEnabled(true) après avoir créé la fenêtre.
À quelle fréquence une application SFML est-elle rafraîchie lorsque la synchronisation verticale est activée?
L’application sera rafraîchie à la même fréquence que l’écran, généralement environ 60 fois par seconde.
Comment peut-on limiter la cadence de rendu (framerate) dans SFML?
On utilise l’instruction window.setFrameRateLimit(60); pour limiter la cadence à 60 images par seconde.
Quels sont les avantages de contrôler la cadence de rendu avec setFrameRateLimit?
Cette approche permet que l’application soit rafraîchie au rythme souhaité et offre un contrôle flexible tout en étant simple d’utilisation.
Pour une cadence de 60 trames par seconde, combien de temps dure chaque trame?
Chaque trame utilise environ 1/60e de seconde, soit 16,67 millisecondes.
Comment SFML implémente-t-il la limitation de la cadence de rendu?
La fonctionnalité est implémentée par SFML avec une combinaison de sf::Clock et de sf::sleep.
Quelle est une limitation importante de la méthode setFrameRateLimit dans SFML?
Cette fonctionnalité n’est pas fiable à 100%, en particulier pour des valeurs élevées. La précision de sf::sleep dépend du système d’exploitation et peut être aussi faible que 10 ou 15 millisecondes, notamment sur Windows.
Pourquoi ne devrait-on pas compter sur setFrameRateLimit pour des timings ultra-précis?
Parce que la précision de sf::sleep dépend du système d’exploitation et n’est pas suffisamment fiable pour des timings ultra-précis.
Quelle méthode alternative permet de contrôler la mise à jour du jeu de manière plus précise?
Utiliser le temps écoulé depuis la dernière trame pour calculer les déplacements des acteurs.
Comment obtient-on le temps précis écoulé depuis la dernière trame dans SFML?
On utilise l’instruction float deltaTime = frameClock.restart().asSeconds();
Quel est l’avantage d’utiliser le temps écoulé (deltaTime) pour la mise à jour des acteurs?
Cette façon de faire permet d’assurer une mise à jour très précise des acteurs, notamment si le temps écoulé entre deux trames varie en cours de partie.
Quelle est la différence principale entre setVerticalSyncEnabled et setFrameRateLimit?
setVerticalSyncEnabled synchronise le jeu avec la fréquence du moniteur, tandis que setFrameRateLimit permet de définir une limite personnalisée de la cadence de rendu, indépendamment de l’écran.
Pourquoi pourrait-on vouloir limiter la cadence de rendu plutôt que d’utiliser la synchronisation verticale?
On pourrait vouloir limiter la cadence de rendu pour économiser des ressources système, réduire la consommation d’énergie, ou pour avoir une cadence stable qui ne dépend pas de l’écran utilisé.
Comment le contrôle de la vitesse du jeu à l’aide du temps écoulé (deltaTime) affecte-t-il la fluidité?
Cette méthode permet de maintenir une animation fluide et constante même si la cadence de rafraîchissement varie, car les mouvements sont calculés proportionnellement au temps réellement écoulé.
Dans quel cas l’utilisation de deltaTime est-elle particulièrement importante?
L’utilisation de deltaTime est particulièrement importante lorsque la performance du jeu peut varier (sections plus exigeantes qui ralentissent le FPS) ou sur différents systèmes avec des performances variées, car elle permet de maintenir une vitesse de jeu constante indépendamment du framerate.
Quelle est la formule de base pour ajuster un mouvement en fonction du deltaTime?
position += vitesse * deltaTime - La distance parcourue est égale à la vitesse multipliée par le temps écoulé.
Comment peut-on utiliser conjointement la limitation de framerate et le deltaTime?
On peut limiter le framerate pour économiser des ressources système tout en utilisant deltaTime pour les calculs de mouvement, obtenant ainsi un bon équilibre entre performance et précision de la simulation.
Pourquoi est-il généralement déconseillé de lier la logique du jeu directement à la cadence de rendu?
Parce que les performances peuvent varier d’un système à l’autre ou même au sein d’un même système selon la charge. Lier la logique du jeu à la cadence de rendu peut entraîner un comportement incohérent: le jeu serait plus rapide sur un système performant et plus lent sur un système moins performant.