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 :

Boucle de jeu principale


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 23
    Points : 13
    Points
    13
    Par défaut Boucle de jeu principale
    Bonjour, j'ai quelques questions à propos de la boucle de jeu principale.
    Voilà comment je présente la mienne pour l'instant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while (game->Run())
    {
        game->GetPlayerInput();   //check les boutons appuyés par le joueur et               
                                            //change les variables adéquates en conséquence
        game->Update();  //Update le jeu par exemple, calcule les nouvelles
                                 // coordonnées après un déplacement, ...
        game->Render();  // Affiche tous les objets en fonction de leur nouvelles
                                 //  coordonées
    }
    Je pense qu'elle est assez conventionnelle jusque là.
    Mais j'aimerais ajouter plusieurs choses :

    1°) La lecture d'un fichier xml indiquant la position des objets et des ennemis ainsi que leurs caractéristiques (bref tout ce que contiendra le jeu)

    2°) La gestion de plusieurs stages.

    3°) La gestion d'un menu de démarrage, d'un écran "option", ...


    Auriez-vous des avis sur comment insérer cela dans ma boucle ?
    (Si vous voulez des précisions sur la boucles n'hésitez pas à demander).

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Salut

    Je pense qu'elle est assez conventionnelle jusque là.
    Effectivement.

    1°) La lecture d'un fichier xml indiquant la position des objets et des ennemis ainsi que leurs caractéristiques (bref tout ce que contiendra le jeu)
    Avant la boucle, lors de la phase d'initialisation.
    A noter que tu devrais peut-être séparer les éléments d'un niveau particulier (position des objets et ennemis) des éléments de gameplay globaux (caractéristiques des objets et ennemis). A moins que les caractéristiques ne soient propres à chaque niveau aussi.

    2°) La gestion de plusieurs stages.
    Tu veux dire plusieurs niveaux ? Si oui, il faut que tu aies une variable représentant le niveau courant, variable qui sera changée par exemple dans l'update si toutes les conditions de changement de niveau sont réunies.

  3. #3
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    juste un truc que je fait personnellement dans la boucle d'affichage : j'inverse le rendu et la mise a jours mais par contre, je met le swapping de buffer après la mise a jours des données. ca permet de profiter un peut du parallelisme de la carte graphique avec le CPU (en même temps je n'ai pas fait de benchmarck réel pour savoir si je gagne en perf avec ca )
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Citation Envoyé par bafman
    juste un truc que je fait personnellement dans la boucle d'affichage : j'inverse le rendu et la mise a jours mais par contre, je met le swapping de buffer après la mise a jours des données. ca permet de profiter un peut du parallelisme de la carte graphique avec le CPU (en même temps je n'ai pas fait de benchmarck réel pour savoir si je gagne en perf avec ca )
    En théorie c'est mieux oui (on peux même aller à l'extrême : swapper les buffers juste avant le Draw), mais sous certaines conditions. Pour que ça soit réellement profitable il faut qu'après le draw le GPU ait un maximum de triangles à traiter, sans que le CPU ait cassé le parallélisme ; dans ce cas le CPU peut profiter de ce temps pour faire autre chose.
    Un test rapide qui permet de voir s'il y a un gain est de mesurer le temps T pris par le swap buffer : on sait alors qu'on a (grosso modo) un temps T à allouer au CPU gratuitement.

    Enfin je n'ai jamais fait de benchmark non plus

Discussions similaires

  1. Boucle de jeu
    Par spiner900 dans le forum Débuter
    Réponses: 10
    Dernier message: 04/03/2011, 11h12
  2. Réponses: 6
    Dernier message: 11/11/2010, 21h24
  3. Création d'un jeu et boucles de jeu
    Par vnk600 dans le forum SDL
    Réponses: 9
    Dernier message: 25/02/2009, 17h50
  4. [SdlDotNet] Mais où est la boucle de jeu ?
    Par Invité dans le forum C#
    Réponses: 4
    Dernier message: 28/05/2008, 21h53
  5. Réponses: 4
    Dernier message: 11/05/2007, 19h45

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