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 ?
Partager