Est-il possible de faire tourner une appli de façon fluide et à la même vitesse sur n'importe quel ordinateur?
Cela semble facilement faisable maintenant que Clickteam à implémenté les mouvements/animations basés sur le timer (depuis le build 248).
Cet exemple basique tente d'en faire la démontration:
- En utilisant un framerate très élevé...
- Qui est automatiquement ajusté sur le taux de rafraîchissement de l'écran de l'utilisateur grâce à l'option "V-Sync"
- En utilisant l'option "Mouvements basés sur le timer"
- En basant les événements sur le timer au lieu d'utiliser "Always"
Certes l'exemple n'est qu'en 800*600 et n'utilise que très peu d'événements. Il n'y a pas de sons ni de musiques. Mais l'appli est en 16M de couleurs, il y a du parallax scrolling et des graphismes avec alpha channel.
Voici comment interagir avec l'appli:
- Flèches haut/bas pour augmenter/diminuer le framerate
- V pour activer/désactiver V-Sync
- Espace pour activer/désactiver le mouvement
- Alt + Enter pour passer en plein écran/fenêtré
Si vous désactivez V-Sync et que vous modifiez le framerate, l'appli doit normalement toujours tourner à la même vitesse. La vitesse de mouvement et d'animation de l'actif reste inchangée. Les compteurs augmentent de la même façon.
Voici ce que j'ai pu observer en faisant mes tests. C'est plutôt satisfaisant partout, même sur de faibles machines. Je tourne à 30 FPS avec des fluctuations jusqu'à 50 sur la plus ancienne de mes machines qui est un P3 730 MHz avec 384 Mo de RAM et une carte graphique de 32 Mo de RAM. L'écran étant réglé en 75 Hz. Sur cette machine le plein écran est tout de même plus fluide.
Sur une machine plus récente, quand je stoppe le mouvement de l'actif je peux augmenter le framerate jusqu'à environ 500 (sans V-Sync donc). En faisant ça l'animation de l'actif devient très très lente. Si l'actif est en mouvement je ne peux pas augmenter le framerate de beaucoup, on dirait que MMF le réajuste.
Concernant les deux compteurs, celui du haut est géré par le timer de MMF (every 00"-02) et l'autre par l'extension Time X (every 20 millisecond). Je remarque que celui du haut est systématiquement en avance. Lequel des deux est le plus précis? De plus j'observe avec un framerate très bas (en dessous de 30) que les compteurs ralentissent. Est-ce normal?
J'ai également remarqué que sur une machine très récente, le FPS avec V-Sync monte à 120 en plein écran. Et reste à 60 en fenêtré, avec un écran TFT qui ne devrait pas dépasser 60 Hz me semble-t-il.
Quelles sont vos observations après avoir testé l'exemple? Est-ce que ça tourne de façon fluide, sans saccades ni bavures sur votre machine? Est-ce mieux en fenêtré ou en plein écran, avec ou sans V-Sync?
Questions pour tous les experts:
1. Cette façon de faire présente-t-elle un inconvénient majeur?
2. Y a-t-il une meilleure façon de répondre à ce problème?
3. La version HWA va-t-elle apporter quelque chose de nouveau par rapport à ce problème?
Désolé pour le message à rallonge! Merci pour votre aide. [img]/epicentre/images/%%GRAEMLIN_URL%%/smile.gif[/img]




Reply With Quote






