Voici une astuce Love2D pour le limiter / caper le delta-time, en seulement 1 ligne de code :
 
    dt = math.min(dt, 1/60)
A ajouter en toute première ligne dans love.update …
 
Cela limite le delta-time à 1/60e de seconde maximum.
 
Ca va éviter 2 comportements :
 
1 – Que votre jeu reçoive un delta-time basé sur 100 FPS si vous avez un écran 100 Hz (ce qui normalement ça ne vous concerne pas trop si vous gérez correctement le delta time comme expliqué ici https://www.gamecodeur.fr/a-propos-du-delta-time/)
 
2 – Plus important, cela élimine un bug hyper lourd, celui d’avoir un delta-time délirant quand le joueur déplace la fenêtre à la souris (drag) !
 
En effet, pendant le drag de la fenêtre, la gameloop de Love est interrompue, du coup le delta-time, au moment du relâchement du bouton de la souris, va contenir une valeur très élevée (genre 3 secondes si le joueur met 3 secondes à bouger la fenêtre). Résultat, si vous appliquez le dt à vos valeurs : vos animations déconnent, vos personnages traversent les murs, etc.
 
C’est une rustine, mais elle marche bien :).
Cet article a été posté dans la catégorie and tagged . Voici le permalink : .

Comments (2)

Merci pour l’astuce David 😉 .
J’utilise une autre astuce du même
Genre.
if dt > 0.035 then
return
end

Mais attention, cela va geler l’update
De love 2d quand on déplace la fenêtre
Avec la souris.
On peut aussi l’utiliser pour geler
La vélocité du joueur quand on est
Dans le menu du jeu ou sur pose.
Genre ; si le jeu est sur pose,
Alors return.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.