Dans ma quête pour une application stable et fluide sur (presque) chaque ordinateur je m'efforce de développer une application à framerate variable. Pour un résultat optimum le framerate de l'application est réglé sur le taux de rafraîchissement de l'écran. Ceci est fait en entrant une valeur élevée pour le framerate et en activant V-Sync.
L'exemple fourni comprend un mouvement plateforme custom utilisant l'extension Move Safely 2. Ce mouvement est basé sur l'article Bullet-Time écrit par Dines sur le forum anglais, donc un grand merci à lui.
Chaque changement de valeur appliqué aux variables utilisées par le mouvement est multiplié par TimeDelta. Cette Valeur Globale est le résultat du calcul du temps passé depuis la dernière boucle. Ainsi le mouvement devrait tourner à la même vitesse quelquesoit le framerate de l'application. C'est secondaire, mais le tout est également multiplié par une Valeur Globale appellée TimeScale qui produit l'effet Bullet-Time.
Mon problème est que ce mouvement ne fonctionne pas correctement avec un framerate très bas/élevé. Ça déconne de façon subtile mais visible. Par exemple plus le framerate est bas, moins l'objet saute haut. Et avec un framerate élevé l'objet reste collé au plafond pendant un court instant avant de retomber. Même chose pour un mur situé à gauche de l'objet, mais pas avec un mur situé à droite de l'objet! Étrange.
L'exemple est brièvement commenté, mais si vous avez lu l'article de Dines vous devriez tout comprendre. Toutes les commandes sont expliquées à l'écran:
http://www.clickteam.com/epicenter/ubbthreads.php?ubb=download&Number=3170
Donc si vous lancez l'application telle quelle, tout devrait bien fonctionner. Vous pouvez courrir et sauter sans problème car le framerate de l'application devrait osciller entre 60 et 85 fps (le taux de rafraîchissement de votre moniteur en Hz).
Maintenant si vous désactivez V-Sync l'application tournera aussi vite que votre ordinateur le permet. Si vous obtenez un framerate supérieur à 200 vous devriez rencontrer les problèmes que j'ai décrit plus haut. Pas de panique ceci ne va pas endommager votre ordinateur! [img]/epicentre/images/%%GRAEMLIN_URL%%/smile.gif[/img]
Si vous avez une idée de ce qui peut bien se passer merci de m'en faire part. Je suis à peu près certain d'avoir fait des erreurs de codage car rester collé à droite d'un mur et pas à gauche c'est vraiment (pas) marrant.
Mais la chose la plus important est pourquoi rester collé avec un framerate élevé? Cela a-t-il quelquechose à voir avec les événements qui sont eux parcourus plus vite? (les événements ne sont pas basés sur le timer)
Même si vous ne pouvez pas m'aider, l'exemple est peut-être intéressant si vous pratiquez les mouvements custom. [img]/epicentre/images/%%GRAEMLIN_URL%%/wink.gif[/img]




Reply With Quote


