HyperDrive
Messages postés2Date d'inscriptionmardi 19 août 2003StatutMembreDernière intervention 6 avril 2007
-
5 avril 2007 à 18:32
HyperDrive
Messages postés2Date d'inscriptionmardi 19 août 2003StatutMembreDernière intervention 6 avril 2007
-
6 avril 2007 à 16:58
Bonjour à tous,
Je voudrais créer un jeu de strategie ou l'on gère plusieurs vaisseaux
spatiaux que l'on peut déplacer en même temps etc. Sachant qu'il peut
avoir beaucoup de vaisseaux, je voudrais si c'est la bonne solution de
faire un thread par vaisseau qui gere l'affichage, les deplacement etc.
Si non, quelqu'un a t il une solution plus optimisée en terme de
ressource et de fluidité d'affichage?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 5 avril 2007 à 19:17
un seul thread pour l'affichage devrait amplement suffire : le thread tourne en permanence (boucle d'attente passive avec un sleep) qui ne fait que raffraichir l'affichage selon les positions des vaisseaux, thread séparé de celui de gestion du jeu en lui même bien évidement !
L'utilisation de threads ne permettent d'accèlérer un programme que si le nombre de threads est inférieur ou égal au nombre d'unité de calcul du PC (CPU ou cores) => ca ne sert à rien de faire 1000 threads, ca va ralentir énormément ton PC (synchronisation des threads par le système, changement de contextes sans arrêts, etc.) au lieu de rendre les choses plus fluides !
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 5 avril 2007 à 19:26
Salut:
Pas besoin de faire les choses comme tu l'avais décrit, car de cette façon on complique les choses tantqu'on peut la faire autrement mais avec la moindre de complexité.
Dans les jeux en général, il y a ce qu'on appelle [game loop] c'est le coeur du jeu dont laquelle :
1. On affiche les acteurs du jeu
2. On met à jour les positions des acteurs
3. On fait le rafraîchissement de l'écran et on revient au point 1.
Pour les vaisseaux, il suffit d'utiliser un peut d'intelligence artificielle pour leurs donner un comportement bien determiné.
bool gameOver = false;
while (!gameOver) {
// dessiner les actors
// mettre à jour la scène (Intelligence artificielle,
// détection des collisions, gérer clavier, joystick, souris, ...)
// effacer le fond
HyperDrive
Messages postés2Date d'inscriptionmardi 19 août 2003StatutMembreDernière intervention 6 avril 2007 6 avril 2007 à 16:58
Merci pour vos réponses (extrêmement rapides qui plus est), c'est
exactement ce dont j'avais besoin pour avancer. Je vais effectuer
quelques test et je vous tiens au courant si quelque chose de nouveau
se présente.