Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Gestion du temps [ Divers / Débutant(e) ] (Darksheep)

jeudi 18 octobre 2007 à 09:14:51 | Gestion du temps

Darksheep

Bonjour,
Apres avoir lu de très intéréssant articles et  tutoriaux comme celui de gros pixel (http://www.grospixels.com/site/animation1.php)
ou encore celui du site du zéro sur la gestion du temps, je reste quand même perplexe...

 D'apres ce que j'ai compris dans ces tutos , Le FPS est le nombre d'image par seconde qu'effectue le programme, mais aussi
 le nombrede boucles par seconde qu'effectue le programme.
 Apres avoir cherché un peu je suis tombé sur la SDL_gfx lib qui me permet de limiter mon FPS, afin que mon programme tourne
 de la même fasson sur n'importe quelle machine  . En plus de cela, avec un SDL_Delay(); bien placé qui permet de réduire la consommation de cpu...

  -Je cherche le meilleur moyen de gerer le temps pour un jeu video, qui serait selon moi (arretez moi si je me trompe)
    * Une boucle d'évenement et d'action se déroulant à fréquence constante (50 ~75hz)
    *Puis un affichage ne dépendant que du hardware de la machine sur laquelle le prog est executé pour atteindre un FPS    maximum.

En Bref :
J'aimerai que si la machine ramme, ce soit  Le FPS qui soit pénalisé (le nombre d'image affichée par seconde) ET NON
 La fréquence de la boucle d'évent ;
 Donc un FPS séparé de la fréquence de la boucle !

Voila pour le théorique maintenant je bloque pour la pratique :'(

jeudi 18 octobre 2007 à 21:21:37 | Re : Gestion du temps

juju12

Ben si tu veux que gestion des messages et affichage des images ne soient pas synchronisés, t'as pas beaucoup d'autre choix que de les mettre dans deux threads séparés...

vendredi 19 octobre 2007 à 09:41:36 | Re : Gestion du temps

Darksheep

J'aimerais si possible éviter le multithread,
J'avais lu un tuto avec allegro et les timers, et il me semblent qu'ils avaient réussi a bloquer les calculs à 60 hz et le fps était déterminé par la machine( BPS_TO_TIMER(60);)
Il avaient fait en sorte que si la machine manque de puissance, priorité absolue a la boucle de calcul 60hz, et ya que le Fps Qui morphle. C'est cela que je recherche
 Je suis tombé SDL_gfx mais bon bloquer Calculs + Déssin à 50hz ne me semble pas satisfaisant , même si ça permet une consommation modérée du temps cpu.
  J'ai trouvé ça aussi
bool done = false
while(!done)
Uint32 temps = SDL_GetTicks();
if(SDL_GetTicks() > (temps + 20) )
{
/* Code... */
}

Affichage();
Mais bon est-ce qu'en cas de retard la boucle de calculs sera prioritaire sur celle d'affichage ? si l'affichage dure trop longtemps,
metttons allez soyons fou 40 ms comment faire pour rattrapper ce retard ? Jai bien une petite idée je vais sérieusement y réffléchir XD

vendredi 19 octobre 2007 à 10:04:02 | Re : Gestion du temps

Darksheep

Donc de fasson plus claire voila où j'en suis :

while(!done)
   {

     long ElapsedTicks = SDL_GetTicks() - LastTick;
     int rattrapage = ElapsedTicks/(1000/75);
    while (rattrapage >0 )
    {
     HandleInput();
     DoThink();
     rattrapage--;
    }
     DoRender();
    //SDL_framerateDelay(&FPS_man);
   }

de fasson à ce que si on pren du retard, on repasse par la boucle de calcul autant de fois qu'il faut :
Imaginons qu'il s'est passé pile poil 1000/75 ms depuis la derniere frame; rattrapage vaut   1;
et  puis on execute une fois la boucle évent et on affiche.
Maintenant on a pris 2* 13ms de retard, rattrapage vaut 2;  on execute 2 fois la boucle d'évent...
Ceci devrais "Théoriquement " fonctionner mais bon    .... mon fps diminue progressivement sans s'arretter mais de fasson de plus en plus lente.... :'(    Help !
 

vendredi 19 octobre 2007 à 12:40:35 | Re : Gestion du temps

Darksheep

Réponse acceptée !
Bon apres m'être un peu creusé la tête :


LastTick = SDL_GetTicks();
FPS_Calculator.Start();
 while(!done)
   {

 long delta = SDL_GetTicks() - LastTick;
 long rattrape = delta/(1000/75);
     while(rattrape>0)
     {
      HandleInput();
      DoThink();
      LastTick = SDL_GetTicks();
      rattrape--;
     }

     DoRender();

    //SDL_framerateDelay(&FPS_man);
   }

ça m'a lair de marcher XD
dsl la prochaine fois je réfléchirais plus avant de poster
En espérant que ça puisse un jour aider un débutant :)



Cette discussion est classé dans : temps, gestion, seconde, apres, fps


Répondre à ce message

Sujets en rapport avec ce message

gestion du temps en fraction de seconde dans C [ par mouloudh ] Bonjour la communauté,j'essaie de faire un programme qui simule le dértoulement d'un tapis roulant, avec vitesse et detecteurs de début et de fin. J'a mini projet: gestion d'emploi du temps en langage c [ par dedective ] Bonjour tt le monde voila je ss charger de réaliser un mini projet qui fait la gestion d'un emploi du temps il fait ajouter/supprimer des élèves ou bi Temps d'execution d'un programme [ par abdoulax ] Bonjour,J'ai besoin de mesurer le temps d'éxecution d'un bou de code pour comparer les performances d'execution en fonction de la plateforme: windows, Reglement , le respect par la connaissance [ par CCJ ] Bonjour. Au fur et a mesure que le temps passe je me rend compte que les infractions au reglement de codessources augmentent , en effet avec la popula Timer - gestion du temps [ par aurelien2723 ] Salut!Je fais une application graphique qui va appeler différents programmes à intervalles différents, et réglables.J'aimerais savoir comment décompté Vous codez quoi ? 2 [ par SAKingdom ] Vous vous souvenez peut-être du sondage que j'avais fais il y a quelque temps ? (juste ici)Eh ben voila, je renouvelle ce sondage.Vous codez quoi ces arreter une fonction apres n seconde? (langage c sous linux) [ par tileroy ] Je dois creer un jeu de dame humain contre ordinateur.Pour cela je fais une analyse dynamique des coups possibles grace a une fonction; "prolongerSolu gestion de fichier et du temps de la machine [ par rasta_raf ] Salut tout le monde !-Comment gérer a partir de Visual C++ l'écriture et le copiage de fichiers d'un dossier à un autre.-Comment pouvoir faire une act Problème incompréhensible [ par JosueClement ] Regardez plutot...Ce programme est une sorte d'horloge!Il n'y a aucune erreur de compilation, mais les heures n'augmentent jamais!!A la ligne 54, j'ai Gestion des collisions pour un FPS [ par dd1840x ] Salut tt le monde , j'aimerais faire un FPS, mais je ne sais pas gérer les collisions...Merci de me dire comment faire ! (pas de site en anglais SVP)


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,140 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.