Bonjour,
je reviens encore vers vous, cette fois-ci pour un problème de thread.
Lorsque je charge la map en "live", celle ci fait 0.12 secondes pour se charger. Par contre ça me fait un mini lag bien évidemment. Donc je me suis penché sur les threads. (C'est du nouveau pour moi.)
Je fais donc quelques tests et j'ai fini par le faire fonctionner. Malheureusement, mon thread fait plus d'une minute à s'exécuter! Je ne l'exécute qu'une fois et une boucle while s'occupe de charger la map quand il le faut.
Je vous met le projet en fichier joint.
Sur game.py à la ligne 37
Il suffit de changer self.loop en True pour activer le chargement avec thread. Avec le False, c'est le draw qui s'en charge.
Après une investigation, j'ai vu que c'était dans le fichier "tileset.py" à la méthode "generate_map()" qu'il perdait tout ce temps.
Cette méthode est appelée (maximum) 9 fois. 1x pour la région où se trouve le centre de la caméra et 8x pour les régions contiguë. (1 région = la résolution de la fenêtre)
Dans cette méthode je remplis un vertexArray temporaire avec la position des tiles/texture
Et que j'assigne ensuite à l'aide d'un mutex (si j'ai bien compris l'utilisation), au vertexArray qui est affiché.
(Les tableaux sont, a priori, vidé donc ça ne devrait pas être une surcharge à ce niveau là ni le fait d'utiliser un tableau temporaire plutôt que d'assigner directement.)
Étant encore étudiant dans la domaine de la prog, je prend toutes les critiques/remarques/suggestions à bon compte.
Encore une fois ce sera un grand merci si quelqu'un aurait une idée de ce qui fait ralentir cette partie. (Peut être le nombre de boucle, mais ça me surprendrait un peu.)
Et désolé de vous importuner avec mes questions
Edit:
J'ai oublié, j'utilise un clavier qwertz, donc c'est w, a, s, d pour se déplacer.
Également, il faut partir en bas à droite. Dans l'autre sens il n'y aura rien.