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

C++ Discussion :

description d'un graphe de tâches


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    screetch
    Invité(e)
    Par défaut description d'un graphe de tâches
    Bonjour,
    j'ai depuis un petit moment commencé ce projet de moteur de jeu qui ne comporte pas une boucle principale au sens usuel du terme. La façon dont le code "progresse" est par l'éxécution d'une tâche qui, lorsqu'elle est terminée, declenche l'éxécution de la tâche suivante (ou des tâches suivantes). certaines de ces tâches peuvent être divisées en plus petites tâches (la majorité des tâches sont minuscules et indivisibles, comme par exemple "lire le clavier", "verifier les messages sur la fenêtre Windows" etc etc. Lorsque ces petites tâches sont terminées alors l'update du jeu devrait se déclencher, puis lorsque c'est fini retour à la case départ.
    certaines tâches peuvent très bien etre bloquantes (attendre un message windows avant de continuer) ou même deux tâches bloquantes peuvent être éxécutées en parallèle.

    Pour faire une pause dans le jeu, on peut insérer une tâche sur laquelle la boucle principale dépend. Cette tâche va alors empecher la boucle principale de redémarrer tant qu'elle est bloquante.

    Ce ne sont que quelques exemples, l'éditeur lui-même est fait de la même facon
    tout le framework d'éxécution des tâches, de division, etc marche déjà.

    mais je suis confronté a un problème de design: comment décrire ce graphe de tâches de manière lisible? je ne souhaite pas vraiment que chaque composant rende publique ses tâches (ce sont des membres privés et personne ne devrait y accéder), de plus le code devient un peu spaghetti et difficile a suivre lors de la création de ce graphe. Qui plus est le graphe doit pouvoir être généré différemment pour le jeu et pour l'éditeur, donc il pourrait être de préférence decrit sous forme de "données" et pas en code.
    J'ai pensé déjà que lorsque le graphe est créé il pourrait s'auto-ecrire dans un fichier a parser avec l'outil de Doxygen pour générer des graphes; il pourrait alors y avoir une bonne doc du graphe des tâches.


    le graphe est plutôt statique, les tâches elles_mêmes ne s'insèrent pas au milieu du déroulement comme ca. Ce sont plutôt les tâches qui sont paramètrables.

    Comment pensez vous que je devrais décrire ce graphe ?

  2. #2
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Pour décrire un graphe, en général, on utilise une liste des arcs (c'est d'ailleurs ce que fait dot).

    Et effectivement, perso, je recommanderai de l'externaliser par rapport à ton application.

  3. #3
    screetch
    Invité(e)
    Par défaut
    en fait, les noeuds sont des tâches et les arcs sont les dépendances entre les taches
    je m'oriente vers une description un peu pyramidale, a savoir qu'un composant va publier un Job (qui est une forme de tache). ce job est vu comme une tache simple, on peut lui attacher des dependances etc etc
    mais pas besoin de connaitre la bouillie interne

    donc le composant "physique" va publier un job, le composant "graphique" va publier un job (composé de plusieurs taches qui dependent les unes des autres)
    et l'application se chargera de creer un job de plus haut niveau qui utilise ces deux jobs.

  4. #4
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Ca ressemble à un moteur de workflows décrit comme ça. Ce que tu appelles job est un workflow, et tu as plusieurs workflows dans ton application, en fonction du choix initial tu choisis le workflow qui s'exécute.

  5. #5
    screetch
    Invité(e)
    Par défaut
    pour moi c'est plus une affaire de design que de choix, en gros qui est responsable du flow?
    si on a un objet responsable a lui tout seul du flow alors on se retrouve avec une classe qui connait toute les autres

  6. #6
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Ça ressemble à la même problèmatique que factory, et on doit pouvoir y appliquer la même solution.

    Tu as un "task manager" qui est connu de tous, agit comme une factory, et auprès duquel s'enregistre toute tâche prête à être utilisée dans un workflow. Le flot est lu depuis un fichier, et la factory sait à partir du fichier (grâce à une sérialisation ad-hoc, et une map identifiant <-> fonction de création) quel type d'objet créer, comment le créer, et ensuite les lier entre eux.

    Personne n'a besoin de connaître l'ensemble des classes, le lien est effectué au runtime (toutes les classes de tâches s'enregistrent à l'exécution auprès du task manager).

Discussions similaires

  1. Classe pour la création d'un graphe xy
    Par Bob dans le forum MFC
    Réponses: 24
    Dernier message: 03/12/2009, 17h20
  2. ordonnancement, graphes, tâches
    Par AP dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 12/09/2006, 10h13
  3. [] [Excel] Exporter un graphe MSChart vers Excel
    Par Gonzo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 17h49
  4. HAUTEUR de la barre des tâches de Windows ?
    Par Lung dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 13/12/2002, 11h43
  5. Concerne les graphes
    Par mcr dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 12/11/2002, 11h02

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