IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

Gestion du temps dans une boucle de jeu


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Gestion du temps dans une boucle de jeu
    Bonjour,

    Je réalise un jeu en 2D (avec Allegro 4.2) et je rencontre un problème sur la gestion du "timer" pour ma boucle de jeu,
    actuellement j'utilise le fonction "clock();", mon code ressemble alors à quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int main{
        if (clock() %10 == 0)
         {
             // boucle du jeu
         }
    }
    Or avec cette façon de procéder mon application ne s’exécute pas à la même vitesse selon les pc, cela crée alors l'apparition d'ennemis de façon décalé, la vitesse de déplacement ralentit/accélérée ect ...
    Serait-il alors possible de modifier l'architecture du programme pour que la vitesse soit toujours la même quelle que soit les performances du pc ?
    (si possible sans devoirs refaire tout le code car le jeu est déjà bien avancé)

    Merci !

  2. #2
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Pour commencer, mets à jour l'état du jeu en fonction du temps écoulé depuis l'étape précédente de simulation : plutôt qu'update(), écris update(elapsed).

    Pour continuer, choisis une fréquence raisonnable de simulation (par exemple 120 Hz) et déduis-en un intervalle de temps invariable entre tous tes pas (ici 8 ms, donc). Fixe ces paramètres et utilise-les toujours : cela dotera ta simulation d'un comportement déterministe quelque soient les performances de la machine qui la fait tourner. Même si la fréquence réelle ne suit pas, le jeu tournera ainsi plus lentement mais pas de manière incohérente.

    Pour vraiment bien faire, isole totalement les rythmes de mise à jour des modules de rendu et de simulation. On simule à la fréquence la plus stable possible, alors qu'on ne dessine que lorsqu'on en a le loisir.

    Tout est là : https://gafferongames.com/post/fix_your_timestep/ .

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour votre réponse !
    Ce lien est parfaitement ce que je cherchais,
    je vais essayer ça en espérant réussir !

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 965
    Points
    32 965
    Billets dans le blog
    4
    Par défaut
    Et tu as des ressources disponibles ici-même. Mais l'article de gafferongames est une référence.
    https://alexandre-laurent.developpez...boucle-de-jeu/
    https://jeux.developpez.com/tutoriels/?page=prog-jeux
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. gestion des erreurs dans une boucle
    Par shimomura22 dans le forum C#
    Réponses: 4
    Dernier message: 17/04/2015, 09h51
  2. Gestion de variables dans une boucle
    Par DoumCSS dans le forum Langage
    Réponses: 4
    Dernier message: 25/04/2013, 12h26
  3. Gestion d'erreur dans une boucle
    Par frto0 dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/10/2010, 10h06
  4. [Debutant - Labview 8.6] Temps dans une boucle While
    Par jizzlobber dans le forum LabVIEW
    Réponses: 3
    Dernier message: 07/12/2009, 11h09
  5. Gestion des erreurs dans une boucle While
    Par Gregory.M dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/08/2008, 20h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo