Annonces Google
Serveur IRC
Serveur : irc.portlane.se
Canal : #AmigaNG
Activité du Site

Pages vues depuis 25/07/2007 : 25 133 653

  • Nb. de membres 187
  • Nb. d'articles 1 269
  • Nb. de forums 19
  • Nb. de sujets 20
  • Nb. de critiques 24

Top 10  Statistiques

Index du forum »»  Création-Développement »» Défilement et saccades

Défilement et saccades#1199

2Contributeur(s)
K-LAmiDARK
3 Modérateur(s)
K-LElwoodcorto
K-L K-Licon_post
Hop, je vais m'adresser directement aux développeurs :-)

Sur les Amiga Classic, grâce aux coprocesseurs dédiés, nous avions toujours des scrollings impeccables sans aucun accroc.

Aujourd'hui, sur AmigaOS 4.1, je ne vois quasiment plus aucun jeu pouvoir tenir un défilement sans saccades (plus ou moins prononcées), que ce soit en émulation (GnGeo, E-UAE) ou en jeux (OpenBOR, Diggy 3, même 1941 DX Dual à 90 FPS).

Les jeux qui sortent du lot sont ceux d'AmiBoing.de (Swamp Defense, Bubbelsche...) ainsi que la démo 2D de SOTB via l'AmiDarkEngine.

Quelle en est la raison ? Pour ma part, je pense ne voir qu'une seule cause : la fameuse vsync. AmiBoing.de en fait usage et leurs jeux tournent tous chez moi à 60 fps lorsqu'elle est activée, sans aucun accroc.

Je pense que l'intérêt n'est pas d'avoir un max de FPS mais bien d'avoir un scrolling exempt de toute saccade, non ?

Mon cher Huno pense que je suis sensible à ce phénomène (car même à plus de 100 FPS, je trouve que 1941 DX Dual n'est pas fluide dans son défilement).

La VSync est-elle si difficile à implémenter dans les jeux ?

Merci à nos talentueux développeurs d'éclairer ma petite lanterne ;-)
--
AmigaONE X1000/1,8 Ghz (A-Eon), Radeon RX560, 2 Go de Ram et OS4.1 FE
AmiDARK AmiDARKicon_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
K-L K-Licon_post
Merci et encore merci, une explication fort simple pour le néophyte que je suis. :=! :=!

J'attends avec grande impatience les créations futures de l'AmiDarkEngine :-)
--
AmigaONE X1000/1,8 Ghz (A-Eon), Radeon RX560, 2 Go de Ram et OS4.1 FE
Petites Annonces

0 annonce(s) publiée(s)

Consulter

AmigaOS 4.1

Laissez-vous tenter par
AmigaOS 4.1
AmiTheme

AmiTheme