Correction des jitter et des stutter

Qu'est-ce que les jitter et les stutter ?

Les jitter et stutter sont deux altérations différentes du mouvement des objets visibles à l'écran qui peuvent affecter un jeu, même lors de l'exécution à pleine vitesse. Ces effets sont surtout visibles dans les jeux où l'environnement se déplace à une vitesse constante dans une direction fixe, comme les runners ou les jeux de plateformes.

Les distinguer entre eux

Un jeu s'exécutant à une fréquence d'images normale n'affichant aucun effet apparaîtra fluide :

../../_images/motion_normal.gif

Un jeu présentant des jitter tremblera constamment d'une manière très subtile :

../../_images/motion_jitter.gif

Enfin, un jeu présentant des stutter apparaîtra fluide, mais semblera s'arrêter ou revenir une image en arrière sur plusieurs secondes :

../../_images/motion_stutter.gif

Jitter

Il peut y avoir de nombreuses causes de jitter, la plus typique se produit lorsque la fréquence physique du jeu (généralement 60 Hz) fonctionne à une résolution différente de la fréquence de rafraîchissement de l'écran. Vérifiez si la fréquence de rafraîchissement de votre écran est différente de 60 Hz.

Ce n'est généralement pas un problème, étant donné que la plupart des moniteurs sont à 60 Hz, et à partir de Godot 3.1, une horloge d'image(frame) a été introduit qui essaie de se synchroniser au mieux avec le rafraîchissement.

Parfois, seuls certains objets semblent trembler (personnage ou arrière-plan). Cela se produit lorsqu'ils sont traités dans différentes sources de temps (l'un est traité à l'étape physique tandis qu'un autre est traité à l'étape inactive). Godot 3.1 y apporte quelques améliorations, allant de la possibilité d'animer des corps cinématiques dans la boucle régulière _process, à d'autres corrections dans l'horloge d'image.

Note

Vous pouvez utiliser l'interpolation physique pour atténuer le jittering liée à la physique. Voir add-on de lissage de lawnjelly pour un add-on qui peut être déposé dans n'importe quel projet pour permettre l'interpolation physique.

Stutter

Des stutter peuvent se produire pour deux raisons différentes. Le premier, et le plus évident, est que le jeu ne peut pas maintenir complètement le taux de rafraîchissement des images. La résolution de ce problème est spécifique au jeu et nécessitera de l'optimisation.

La seconde est plus compliquée, car elle n'est souvent pas associée au moteur ou au jeu mais au système d'exploitation sous-jacent. Voici quelques informations concernant les stutter sur différents systèmes d'exploitation.

Windows

Windows est connu pour provoquer des stutter dans les jeux en fenêtrés. Cela dépend principalement du hardware installé, de la version des pilotes et des processus fonctionnant en parallèle (par exemple, le fait d'avoir de nombreux onglets de navigateur ouverts peut provoquer des stutter dans un jeu en cours d'exécution). Pour éviter cela, à partir de la version 3.1, Godot augmente la priorité du jeu à "Above Normal". Cela aide considérablement, mais n'élimine pas complètement les stutter.

L'éliminer complètement nécessite de donner à votre jeu tous les privilèges pour devenir "time critical", ce qui n'est pas conseillé. Certains jeux peurraient le faire, mais il est conseillé d'apprendre à vivre avec ce problème, comme c'est courant pour les jeux Windows et la plupart des utilisateurs ne joueront pas aux jeux en fenêtrés (les jeux qui sont joués dans une fenêtre, par exemple les jeux de puzzle, ne présenteront généralement pas ce problème de toute façon).

Pour le plein écran, Windows accorde une priorité spéciale au jeu, de sorte que les stutter ne sont plus visibles et très rares. C'est ainsi que la plupart des jeux sont joués.

Linux (X11)

Les stutter peuvent être visibles sur Linux, mais cela est généralement associé à différents pilotes vidéo et compositeurs. Les pilotes Nouveau présentent souvent cela, contrairement aux pilotes propriétaires AMD ou NVidia. Certains compositeurs peuvent également déclencher ce problème (par exemple KWin), il est donc conseillé d'essayer d'en utiliser un autre pour l'exclure comme cause.

Il n'existe aucune solution de contournement pour les stutter dû au pilote ou au compositeur autre que de le signaler comme un problème aux développeurs du pilote ou du compositeur.

macOS

Généralement, macOS est sans stutter, bien que récemment quelques problèmes aient été signalés lors de l'exécution en plein écran (il s'agit d'un problème macOS). Si vous avez une machine présentant ce comportement, veuillez nous en informer.

Android

En règle générale, Android est sans stutter et sans jitter, car l'activité en cours d'exécution obtient toute la priorité. Cela dit, il peut y avoir des appareils problématiques (l'ancien Kindle Fire est connu pour en être un). Si vous voyez ce problème sur Android, faites-le nous savoir.

iOS

Les appareils iOS sont généralement sans stutter, mais les appareils plus anciens exécutant des versions plus récentes du système d'exploitation peuvent présenter des problèmes. Ceci est généralement inévitable.

Signaler des problèmes de stutter ou de jitter

Si vous signalez un problème de stutter ou de jitter (ouverture d'une issue) non causé par l'une des raisons ci-dessus, veuillez spécifier très clairement toutes les informations possibles sur l'appareil, le système d'exploitation, les versions de pilote, etc. Cela peut aider à mieux le dépanner.

Assurez-vous également d'utiliser le terme correct (jitter ou stutter) en fonction du comportement affiché. Cela vous aidera à comprendre votre problème beaucoup plus rapidement. Fournissez un projet qui peut être utilisé pour reproduire le problème et, si possible, une capture d'écran illustrant le problème.