website logo
Auteur
avatar
AmiDARK

Forum » » Création-Développement » » Défilement et saccades


Posté : 11-12-2011 22:56 icone du post

Salut K-L :
En fait, tu es surtout sensible à l'instabilité du FPS (Frame Per Second = nombre d'images par secondes).

Il est effectivement plus difficile de nos jours d'avoir des jeux 2D fluides qui soient à 50 ou 60 fps FIXE dans le temps ...

Cela est bien souvent dû à la façon dont le programmeur procède pour créer son produit (sur PC, de toute façon, ils optimisent quasiment jamais je pense ... donc déjà ça aide pas) ... et surtout si il utilise ou pas la VSync de l'écran ...
(c'est bien souvent PAS LE CAS ... car on cherche toujours à avoir le frame rate le plus élevé et donc dès qu'on récupère la main sur le rendu, on enchaine sur la FRAME suivante) ... Résultat, pas de VSYNC = rendu à l'écran sensible à la quantité de données traitées dans le jeu complet.

Sur nos 'Miga ... On a un petit soucis, c'est que la plupart des API ( Advanced Programing Interface ) disponibles telles que SDL, sont des API très lourdes en ressources et en temps CPU car elles gèrent beaucoup de choses (bien souvent en interruption système en plus ...)
De plus, ces API sont génériques aux diverses machines pour lesquelles elles sont conçues compatibles donc, ça aide pas aux optimisations ...

C'est en grande partie la raison pour laquelle j'ai décidé d'élaborer l'AmiDARK Engine ;) Mettre en place une API spéciale Amiga NG qui soit performante et pas trop lourde ;)

Il ne faut pas oublier non plus que l'on bossait en 320x256 pixels à l'époque et en 32 couleurs, cela faisait 51ko de données à gérer pour un écran ... Maintenant c'est du 640x480 en 16 voire 32 bits soit 614k ou 1.23Mo de données ... Bien plus qu'avant ... Donc plus de temps CPU/GPU ...

Pour bien faire et obtenir un Frame Rate stable à 60 images/sec, il faut penser à plusieurs choses :
1. Utiliser une machine dans les moins bonnes performances pour les tests.
2. Se caler une limite niveau données à traiter pour l'affichage. De très gros sprites prennent plus de temps, plusieurs layers (plan de scrolling) aussi ... Savoir se caler un objectif qui puisse être fluide sur une petite machine
3. Fixer le frame rate avec la VSync, résultat, sur des machines plus puissantes, le jeu ne tournera pas plus vite et sera pas plus fluide car déjà à 60 frames per second.

Une autre technique, "l'interpolation" quand à elle favorise la vitesse d'exécution du jeu (éviter que le jeu ne ralentisse lorsque le traitement est plus lourd et nécessite plus que le temps d'1 synchro verticale pour être complété) ... Cette technique utilise un calcul de temps entre chaque image pour recalculer la vitesse nécessaire à la prochaine frame pour rattraper un éventuel retard et garder une vitesse constante ... Je n'aime pas trop cette technique car elle est assez chiadée à code pour éviter des bugs de collisions selon le principe de collisions que l'on utilise ...

Mais je te rassure, il est toujours possible de créer des jeux 2D à 60 Fps.
Lorsque la version 2D de l'AmiDARK Engine sera finie je ferais des petits exemples de scrollings verticaux/horizontaux/multi-directionnels pour montrer un peu les principes et comment les réaliser ;)

J'espère avoir un peu éclairé ta lanterne ...

@ +
AmiDARK

Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=1199&forum=14