cs_GoldenEye
Messages postés527Date d'inscriptionvendredi 14 septembre 2001StatutMembreDernière intervention 6 octobre 20084 20 févr. 2003 à 00:18
Ce n'est pas suffisant de changer la rez, ton rafraichissement d'écran n'est pas optimal. Par ailleurs la vitesse de déplacement dépend de la machine hôte, il faudrait harmoniser
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 19 févr. 2003 à 22:37
Apparement le manque de FPS venait de la résolution: En 400 * 300 j'obtiens 800 FPS et en 320 * 240 1200 FPS. Mais a ce rythme là le déplacement est tellement trop rapide... C pas jouable, vais améliorer le tout et updater ma source.
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 19 févr. 2003 à 20:39
Merci!
cs_GoldenEye
Messages postés527Date d'inscriptionvendredi 14 septembre 2001StatutMembreDernière intervention 6 octobre 20084 19 févr. 2003 à 19:28
Et juste avant le blit(screen,....) tu colles : counter++;
Pour afficher ben tu fais un textprintf de %d,fps
}
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 19 févr. 2003 à 18:50
Hello. Je ne sais pas comment compter efficacement les secondes pour calculer le fps. Comment faire? Merci
cs_GoldenEye
Messages postés527Date d'inscriptionvendredi 14 septembre 2001StatutMembreDernière intervention 6 octobre 20084 19 févr. 2003 à 18:42
Ta question Galett est intéréssante. J'entends par fps le nombre de boucles d'affichage internes (les frames) par seconde. La confusion est souvent faite avec le taux de rafraichissement de l'écran, la fréquence en Hz dont tu parles (85,100 voire 120 Hz au grand maximum). Les fps internes du programmeur sont un bon moyen de mesurer la qualité du programme. En effet plus le nombre de boucles d'affichage est important, plus le programme sera fluide (au delà de la fréquence de rafraichissement de l'écran, on ne voit plus la différence entre 120 frames internes et 1200). Mais lorsque que la configuration du PC hôte baisse le nombre de fps interne risque de repasser en dessous de cette fréquence d'écran auqul cas des saccades apparaissent. Mieux vaut alors partir de 1200 fps que de 120. C'est à partir de là entre autres que l'on détermine la config minimale en dessous de laquelle l'anmation devient saccadée.
Pour le programme de coockiesch, le nombre de boucles internes est très faible ce qui laisse supposer une grosse config minimale.
Pour le Pacman voyez sur perso.wanadoo.fr/goldeneyerv
(en bas de la page)
Il n'y a pas de sons pour le moment mais l'affichage est ultra optimisé
Galett
Messages postés115Date d'inscriptionjeudi 7 février 2002StatutMembreDernière intervention21 mai 2005 19 févr. 2003 à 18:18
euh, je connais pas vraiement allegro, mais tu dis Golden, pouvoir atteindre des fps à 240 ???, euh, t'es sûr ? pasque moi G un écran rafraichit ea 85Hz, et les fps peuvent pas aller plus vite que la musique(le taux de rafraichissement de l'écran), ou alors tu considères des frames mais qui passent en interne, ce n'est donc pas un vrai fps ?
enfin, je ne te fais pas le reproche personnellement, sur tous les sites qui proposent des benchmarks, je vois des "quake 3 à 150fps", je trouve ça bizarre qd même. Vous avez p'tet tous des super écran, et vous complotez tous contre moi pour me faire croire que les meilleurs sont à 100Hz....oula, faut que j'arrêtes moi :-)
cs_kjus
Messages postés269Date d'inscriptionmercredi 24 avril 2002StatutMembreDernière intervention 9 juin 2003 19 févr. 2003 à 13:42
cs_kjus
Messages postés269Date d'inscriptionmercredi 24 avril 2002StatutMembreDernière intervention 9 juin 2003 19 févr. 2003 à 13:41
Salut,
Moi aussi j'ai fait un pong avec allegro (attention, je l'ai fait il y a longtemps c'est pas du tout programmé proprement, mais il est pas mal quand même)
J'ai repéré quelques petites erreurs au niveau des colision le long du mur gauche et du mur du haut :
Sinon, pour la gestion des touches, je te conseille de ne pas utiliser if(keypressed()) puis readkey(). En effet, il existe un tableau key[] qui est contient constamment l'état de chaque touche.
Tu peut faire par exemple :
if (key[KEY_ESC] )
// touche echap pressée
if (key[KEY_L])
// touche l pressée
Bon courage
cmarsc
Messages postés455Date d'inscriptionmercredi 6 mars 2002StatutMembreDernière intervention18 décembre 2003 19 févr. 2003 à 08:59
cs_GoldenEye
Messages postés527Date d'inscriptionvendredi 14 septembre 2001StatutMembreDernière intervention 6 octobre 20084 18 févr. 2003 à 23:14
Autre chose, 800*600 pour un Pong, je suis sceptique. Regarde mon Pacman, c'est du 320*240 et ça convient parfaitement. 800*600 est une rez à utiliser pour les monstres (RPG, jeux aboutis...), pas pour un pong. Ca augmente la config minimale pour rien.
cs_GoldenEye
Messages postés527Date d'inscriptionvendredi 14 septembre 2001StatutMembreDernière intervention 6 octobre 20084 18 févr. 2003 à 23:09
Pour un premier programme avec Allegro, c'est bien. Mais:
1/ J'ai rajouté un fps counter et le résultat est très décevant. J'ai un PC monstrueux et je n'atteins que 240 fps. En gros, il faut un Pentium 2 400Mhz pour faire tourner le prog... Pour un pong wof wof. Le programme n'est absolument pas optimisé, je te laisse trouver pourquoi. Pour info, une version optimisée permettrait d'atteindre des nombres à 4 voire 5 chiffres.
2/Attention le clavier est en qwerty (choix de l;m...)
3/Astuce blabla%2 est moins bien que blabla&1
4/ Idem pour blabla/2 moins bien que blabla>>1
5/Remplace le masked_blit par un draw_sprite, c'est 10% plus rapide
6/ Le changement de direction peut être factorisé
7/ Le source est un vrai bordel, découpe en plusieurs fichiers
8/ Dis moi, pourquoi rafraichis tu tout l'écran à chaque boucle d'affichage ? Alors que seule la zone de la balle ou la zone du plateau est modifiée. Réfléchis y
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 18 févr. 2003 à 22:21
Merci de déposer critiques, remarques, suggestions, améliorations.
20 févr. 2003 à 00:18
19 févr. 2003 à 22:37
19 févr. 2003 à 20:39
19 févr. 2003 à 19:28
volatile int fps,counter;
/*FONCTION FPS_COUNTER */
void fps_counter()
{
fps=counter;
counter=0;
}
après allegro_init(); tu mets
install_timer();
install_int_ex(fps_counter,BPS_TO_TIMER(1));
Et juste avant le blit(screen,....) tu colles : counter++;
Pour afficher ben tu fais un textprintf de %d,fps
}
19 févr. 2003 à 18:50
19 févr. 2003 à 18:42
Pour le programme de coockiesch, le nombre de boucles internes est très faible ce qui laisse supposer une grosse config minimale.
Pour le Pacman voyez sur perso.wanadoo.fr/goldeneyerv
(en bas de la page)
Il n'y a pas de sons pour le moment mais l'affichage est ultra optimisé
19 févr. 2003 à 18:18
enfin, je ne te fais pas le reproche personnellement, sur tous les sites qui proposent des benchmarks, je vois des "quake 3 à 150fps", je trouve ça bizarre qd même. Vous avez p'tet tous des super écran, et vous complotez tous contre moi pour me faire croire que les meilleurs sont à 100Hz....oula, faut que j'arrêtes moi :-)
19 févr. 2003 à 13:42
http://www.cppfrance.com/article.aspx?Val=841
19 févr. 2003 à 13:41
Moi aussi j'ai fait un pong avec allegro (attention, je l'ai fait il y a longtemps c'est pas du tout programmé proprement, mais il est pas mal quand même)
J'ai repéré quelques petites erreurs au niveau des colision le long du mur gauche et du mur du haut :
if(balle_y <= 0 + balle->h / 2)
// virer "+ balle->h/2" ^^^
// contre mur
if(balle_x <= 0 + balle->w / 2
// virer + balle->w/2 ^^^^
Sinon, pour la gestion des touches, je te conseille de ne pas utiliser if(keypressed()) puis readkey(). En effet, il existe un tableau key[] qui est contient constamment l'état de chaque touche.
Tu peut faire par exemple :
if (key[KEY_ESC] )
// touche echap pressée
if (key[KEY_L])
// touche l pressée
Bon courage
19 févr. 2003 à 08:59
18 févr. 2003 à 23:14
18 févr. 2003 à 23:09
1/ J'ai rajouté un fps counter et le résultat est très décevant. J'ai un PC monstrueux et je n'atteins que 240 fps. En gros, il faut un Pentium 2 400Mhz pour faire tourner le prog... Pour un pong wof wof. Le programme n'est absolument pas optimisé, je te laisse trouver pourquoi. Pour info, une version optimisée permettrait d'atteindre des nombres à 4 voire 5 chiffres.
2/Attention le clavier est en qwerty (choix de l;m...)
3/Astuce blabla%2 est moins bien que blabla&1
4/ Idem pour blabla/2 moins bien que blabla>>1
5/Remplace le masked_blit par un draw_sprite, c'est 10% plus rapide
6/ Le changement de direction peut être factorisé
7/ Le source est un vrai bordel, découpe en plusieurs fichiers
8/ Dis moi, pourquoi rafraichis tu tout l'écran à chaque boucle d'affichage ? Alors que seule la zone de la balle ou la zone du plateau est modifiée. Réfléchis y
18 févr. 2003 à 22:21
coockiesch