Structure des threads pour un jeu
ghFrankfurt
Messages postés
207
Date d'inscription
Statut
Membre
Dernière intervention
-
davs63 -
davs63 -
Bonjour,
Je suis actuellement entrain de développé un jeu en 2D en utilisant py-sfml.
Pour ce jeu, j'utilise une méthode de chargement en temps réel de la map, avec comme source un fichier xml.
J'ai eu pas mal de problème concernant les threads.
Initialement, je faisais les updates graphique et les inputs dans la boucle principale et threader le chargement de la map. Une erreur. Le thread est trop lent et en multiprocessing je n'arrive pas à ressortir le tableau de vertexArray pour mettre à jour le les graphismes.
Je pense que je m'y prend de la mauvaise manière, je pense que je dois revoir ma logique concernant "qui fait quoi"
J'imagine globalement une autre manière de faire :
La boucle principale :
-Elle s'occupe de lire le xml
-Charge les vertexArray (map) -> transmet au thread 1
-Charge les entités (ennemis, objets, ...) -> transmet au thread 1
Thread 1 :
-Récupère les inputs
-Gère la caméra -> transmet à la boucle principale pour l'emplacement xml et au thread 2 pour les collisions
-Met à jour les graphismes
Thread 2 :
-Calculs de collision
J'ai juste peur que les threads soient trop lent pour gérer ça. C'est le premier projet auquel j'utilise des threads et je pense que ma compréhension de ceux ci n'est pas encore vraiment acquise.
Avant de me (re)lancer un peu tête baissée, j'aurais bien voulu avoir vos avis sur la structure à utiliser.
Je vous remercie d'avance :)
Je suis actuellement entrain de développé un jeu en 2D en utilisant py-sfml.
Pour ce jeu, j'utilise une méthode de chargement en temps réel de la map, avec comme source un fichier xml.
J'ai eu pas mal de problème concernant les threads.
Initialement, je faisais les updates graphique et les inputs dans la boucle principale et threader le chargement de la map. Une erreur. Le thread est trop lent et en multiprocessing je n'arrive pas à ressortir le tableau de vertexArray pour mettre à jour le les graphismes.
Je pense que je m'y prend de la mauvaise manière, je pense que je dois revoir ma logique concernant "qui fait quoi"
J'imagine globalement une autre manière de faire :
La boucle principale :
-Elle s'occupe de lire le xml
-Charge les vertexArray (map) -> transmet au thread 1
-Charge les entités (ennemis, objets, ...) -> transmet au thread 1
Thread 1 :
-Récupère les inputs
-Gère la caméra -> transmet à la boucle principale pour l'emplacement xml et au thread 2 pour les collisions
-Met à jour les graphismes
Thread 2 :
-Calculs de collision
J'ai juste peur que les threads soient trop lent pour gérer ça. C'est le premier projet auquel j'utilise des threads et je pense que ma compréhension de ceux ci n'est pas encore vraiment acquise.
Avant de me (re)lancer un peu tête baissée, j'aurais bien voulu avoir vos avis sur la structure à utiliser.
Je vous remercie d'avance :)
A voir également:
- Structure des threads pour un jeu
- 94 jeu - Télécharger - Puzzle & Réflexion
- 94 degrés jeu - Télécharger - Divers Jeux
- Logiciel calcul structure bois gratuit - Télécharger - Architecture & Déco
- Jeu des logos - Télécharger - Jeux vidéo
- Jeu zuma - Télécharger - Jeux vidéo
2 réponses
Salut !
J'essai moi aussi de faire un jeu a base de tileset/tilemap en utilisant PySFML. J'ai du mal a comprendre ton probleme car en générale on utilise des Thread pour faire des chose qui doivent être exécuter en parallèle ce qui n'est pas forcement le cas de l'affichage d'une carte. A la limite pour les objets qui bougent avec une petite IA.
Enfin je suppose qu'au bout de 4 mois tu as du réussir sur les Thread, est ce que ça t'a vraiment apporté quelque chose ? et comment a tu organisé tout ca ?
Sinon j'aimerai savoir si tu sais utiliser les shaders ? je bloque total la dessus
J'essai moi aussi de faire un jeu a base de tileset/tilemap en utilisant PySFML. J'ai du mal a comprendre ton probleme car en générale on utilise des Thread pour faire des chose qui doivent être exécuter en parallèle ce qui n'est pas forcement le cas de l'affichage d'une carte. A la limite pour les objets qui bougent avec une petite IA.
Enfin je suppose qu'au bout de 4 mois tu as du réussir sur les Thread, est ce que ça t'a vraiment apporté quelque chose ? et comment a tu organisé tout ca ?
Sinon j'aimerai savoir si tu sais utiliser les shaders ? je bloque total la dessus
Salut, non malheureusement j'ai fait une pause car j'ai été embarqué dans divers projets web etc.. J'ai plus eu le temps de me pencher dessus.
Du coup je n'ai pas encore utilisé de shaders, je n'ai pas vraiment idée de la manière dont ils fonctionnent, mais je peux peut-être essayer de t'aider?
Autrement, le problème que j'avais sans thread, c'est que charger/décharger la map en temps réel dans la boucle principale me faisait un micro lag général à chaque fois que je changeais de zone.
Mon but étant de le faire en dynamique, permettant d'avoir une très grande map sans surcharger la mémoire et sans avoir de temps de chargement, excepté le premier qui est très rapide.
Du coup je n'ai pas encore utilisé de shaders, je n'ai pas vraiment idée de la manière dont ils fonctionnent, mais je peux peut-être essayer de t'aider?
Autrement, le problème que j'avais sans thread, c'est que charger/décharger la map en temps réel dans la boucle principale me faisait un micro lag général à chaque fois que je changeais de zone.
Mon but étant de le faire en dynamique, permettant d'avoir une très grande map sans surcharger la mémoire et sans avoir de temps de chargement, excepté le premier qui est très rapide.
Oui oui je comprend, effectivement tu n'a pas d'autre choix, j'essaierai surement de faire la même chose pour tester. Et aussi tester les Threads de Sfml pour voir si ils apportent quelque chose par rapport au Thread de python.
La seul fois ou j'ai eu besoin de "Threader" c'est pour un serveur de socket xml ou chaque client est un Thread, mais j'ai pas encore bien saisie le concept de "concurrence" et donc de verrouillage des Thread. Surtout que je vais en avoir besoin car avant de faire mon moteur de Rpg online/coop je fais un petit Bomberman online histoire de bien me familiariser avec py sfml
Pour les Shader j'arrive à les utiliser quand ils sont pas trop complexe, par contre les créer, la c'est une autre histoire :) je verrai ça quand j'aurai un peu plus d'expérience.
Je compte partager mon expérience et mes recherches python / sfml sur un site perso dans peu de temps, une fois mon bomberman sur pied
La seul fois ou j'ai eu besoin de "Threader" c'est pour un serveur de socket xml ou chaque client est un Thread, mais j'ai pas encore bien saisie le concept de "concurrence" et donc de verrouillage des Thread. Surtout que je vais en avoir besoin car avant de faire mon moteur de Rpg online/coop je fais un petit Bomberman online histoire de bien me familiariser avec py sfml
Pour les Shader j'arrive à les utiliser quand ils sont pas trop complexe, par contre les créer, la c'est une autre histoire :) je verrai ça quand j'aurai un peu plus d'expérience.
Je compte partager mon expérience et mes recherches python / sfml sur un site perso dans peu de temps, une fois mon bomberman sur pied