Derniers sujets
Sujets les plus vus
Boucle de Jeu et gestion du temps
4 participants
Page 1 sur 1
Boucle de Jeu et gestion du temps
Salut à tous,
Je viens juste de commencer le développement d'un jeu d'aventure se passant dans les années 30 (influene Pulp)avec de gros morceau de Roguelike dedans. J'aimerai un peu discuter de la manière de gérer la boucle de jeu et le temps dans vos Jeux.
Concernant mon projet, j'utilise un système de gestion du temps qui est similaire à ADOM.
Chaque seconde qui s'écoule dans le jeux contient 10 tics. Chaque entité du jeu possède une vitesse et un compte de points d'action. A chaque tic, le compte de point d'action est incrémenté de la vitesse de l'entité. Lorsque ce compte atteint le coût de l'action, celle ci se déclenche.
Du coup, ma boucle de jeu ressemble à cela:
1)entrée sur une carte du joueur. Chaque entité est positionnée correctement sur celle ci suivant l'heure locale et l'emploi du temps qu'elle suit.
2)attente de la première action du joueur. Parcours de l'ensemble des entité de la carte et initialisation de leurs première action.
3) défilement du temps, exécution des actions arrivé à terme puis ajouts de nouvelles actions pour les entités qui n'en n'ont plus (IA pour les entité non joueur, input pour le joueur).
4) Si le joueur meurt ou sort de la carte, conservation des positions des entités mais suppressions des actions non effectuées. Si le joueur revient tout de suite sur la carte, il la retrouve comme il l'avait quitté (étape 2 direct), sinon, si trop de temps s'est écoulé, on reprend à partir de l'étape 1.
Quelques précision concernant l'architecture du code. Le joueur possède une pile d'actions. Cela permet de gérer le temps des actions "multiples" comme l'équipement de plusieurs objets d'un coup, ou le ramassage de plusieurs objets. Les actions des autres entités sont gérés avec une liste chainée commune à toute les entités non joueur de la carte. Il n'y a aucun besoin de piles d'actions pour chaque entité puisque l'IA s'occupera de ramasser les objets les uns après les autres ou de s'équiper petit a petit.
Concernant la résolution d'actions ayant lieu en même temps, elle se fait sur une simple comparaison de la vitesse, de la perception et de la dextérité des entités.
Voilà mon système, il est assez lourd puisqu'il nécessite souvent des tris, et met à jour l'ensemble des entités de la carte en même temps.
Qu'est ce que vous utilisez comme système de gestion de temps dans vos jeux? Qu'en est-il pour projet Graal ou pour Ruche? Aucun problèmes de performance lorsque la carte est grande et que le nombre d'entité à mettre a jours devient important (100? 1000? entités)?
Pour finir un screen de mon éditeur de jeu en cours d'écriture avec les widgets fait maison :
Je viens juste de commencer le développement d'un jeu d'aventure se passant dans les années 30 (influene Pulp)avec de gros morceau de Roguelike dedans. J'aimerai un peu discuter de la manière de gérer la boucle de jeu et le temps dans vos Jeux.
Concernant mon projet, j'utilise un système de gestion du temps qui est similaire à ADOM.
Chaque seconde qui s'écoule dans le jeux contient 10 tics. Chaque entité du jeu possède une vitesse et un compte de points d'action. A chaque tic, le compte de point d'action est incrémenté de la vitesse de l'entité. Lorsque ce compte atteint le coût de l'action, celle ci se déclenche.
Du coup, ma boucle de jeu ressemble à cela:
1)entrée sur une carte du joueur. Chaque entité est positionnée correctement sur celle ci suivant l'heure locale et l'emploi du temps qu'elle suit.
2)attente de la première action du joueur. Parcours de l'ensemble des entité de la carte et initialisation de leurs première action.
3) défilement du temps, exécution des actions arrivé à terme puis ajouts de nouvelles actions pour les entités qui n'en n'ont plus (IA pour les entité non joueur, input pour le joueur).
4) Si le joueur meurt ou sort de la carte, conservation des positions des entités mais suppressions des actions non effectuées. Si le joueur revient tout de suite sur la carte, il la retrouve comme il l'avait quitté (étape 2 direct), sinon, si trop de temps s'est écoulé, on reprend à partir de l'étape 1.
Quelques précision concernant l'architecture du code. Le joueur possède une pile d'actions. Cela permet de gérer le temps des actions "multiples" comme l'équipement de plusieurs objets d'un coup, ou le ramassage de plusieurs objets. Les actions des autres entités sont gérés avec une liste chainée commune à toute les entités non joueur de la carte. Il n'y a aucun besoin de piles d'actions pour chaque entité puisque l'IA s'occupera de ramasser les objets les uns après les autres ou de s'équiper petit a petit.
Concernant la résolution d'actions ayant lieu en même temps, elle se fait sur une simple comparaison de la vitesse, de la perception et de la dextérité des entités.
Voilà mon système, il est assez lourd puisqu'il nécessite souvent des tris, et met à jour l'ensemble des entités de la carte en même temps.
Qu'est ce que vous utilisez comme système de gestion de temps dans vos jeux? Qu'en est-il pour projet Graal ou pour Ruche? Aucun problèmes de performance lorsque la carte est grande et que le nombre d'entité à mettre a jours devient important (100? 1000? entités)?
Pour finir un screen de mon éditeur de jeu en cours d'écriture avec les widgets fait maison :
xboxut- Ranger Arbalester lvl 13
- Messages : 87
Points : 4132
Réputation : 3
Re: Boucle de Jeu et gestion du temps
Cool que tu programme un jeu Si j'ai bien compris, le jeu se déroule en temps réel c'est ça ? Pas bien compris toutes tes explications
Re: Boucle de Jeu et gestion du temps
Et Non perdu c'est du tour par tour ! même pour les système stour par tour la gestion du temps est des plus cruciale, regarde DCSS ou nethack; il y a toute une gestion de la durée des actions, de l'initiative etc. Finalement, la seule différence avec les jeux en temps réel, c'est que le temps ne passe pas lorsque l'on ne fait rien et que les pas de temps sont beaucoup plus grossiers et/ou pas gérés de la même manière dans la boucle de jeu.
xboxut- Ranger Arbalester lvl 13
- Messages : 87
Points : 4132
Réputation : 3
Re: Boucle de Jeu et gestion du temps
Ah je pige, c'est juste parce que tu as parlé de "secondes", ça m'a perdu^^
Re: Boucle de Jeu et gestion du temps
Pour Ruche, le système de gestion du temps est très basique :
- la boucle principale tourne en attendant qu'une touche soit pressée
- le joueur presse une touche
- si son action "coûte" une action (bouger, taper, ouvrir une porte...), on passe à l'étape suivante, sinon on reprend à la première étape (regarder dans l'inventaire par exemple)
- tous les monstres étant placés dans une liste, on décrit l'ensemble de la liste avec une boucle for, chaque monstre effectue son action, puis on passe au monstre suivant.
- retour à l'étape 1.
Au début, j'avais voulu implanter un système à base d'actions avec des coûts, exactement comme tu le décris. Après de quelques tentatives infructueuses, j'ai laissé tomber pour me tourner vers autre chose. Je retenterai peut être un de ses jours, parce que c'est quand même beaucoup plus réaliste qu'actuellement...
- la boucle principale tourne en attendant qu'une touche soit pressée
- le joueur presse une touche
- si son action "coûte" une action (bouger, taper, ouvrir une porte...), on passe à l'étape suivante, sinon on reprend à la première étape (regarder dans l'inventaire par exemple)
- tous les monstres étant placés dans une liste, on décrit l'ensemble de la liste avec une boucle for, chaque monstre effectue son action, puis on passe au monstre suivant.
- retour à l'étape 1.
Au début, j'avais voulu implanter un système à base d'actions avec des coûts, exactement comme tu le décris. Après de quelques tentatives infructueuses, j'ai laissé tomber pour me tourner vers autre chose. Je retenterai peut être un de ses jours, parce que c'est quand même beaucoup plus réaliste qu'actuellement...
Dernière édition par Ailoen le Mar 4 Mar - 16:14, édité 2 fois
Ailoen- Samurai Kokushu lvl 15
- Messages : 101
Points : 4204
Réputation : 7
Localisation : Pyrénées
Re: Boucle de Jeu et gestion du temps
Pour Graal, il y a plusieurs phases de jeu. Les 2 premières phases (exploration et résolution des évènements) sont dans l'attente de l'action du joueur afin de continuer. Il n'y a pas vraiment de gestion de temps de ce côté. Dans la phase de combat, c'est plus compliqué, d'autant plus que c'est encore expérimental à ce stade. C'est basé sur des cycles (qui, si j'ai bien compris pourraient correspondre à tes tics) et ceux-ci sont influencés par la vitesse des personnages. J'essaierai d'y revenir quand ça sera plus abouti
loudo- Samurai Kokushu lvl 15
- Messages : 107
Points : 4386
Réputation : 3
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Sam 20 Jan - 23:19 par Belphegor
» Souls Rescue
Ven 30 Juin - 21:43 par oldteen
» Les Challenges ou CFRL
Mar 4 Avr - 18:56 par Kasaris
» Le Roguelike Bundle
Lun 3 Avr - 0:18 par Kasaris
» Space Station 13
Sam 25 Mar - 21:39 par Fouin
» Souls Rescue Alpha 0.7
Lun 13 Mar - 15:09 par Aristoxène (jbbourgoin)