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 :).
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.
on peut aussi, love.mouse.isGrabbed(true) la souris a la fenetre, et la liberer lorsque le jeu est en pause, affichage d’un menu ou pause ou autre…