Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Logitux

Pages: [1]
1
Python / Re : Thread très lent
« le: Août 26, 2013, 04:51:52 pm »
Je déteste devoir me renseigner sur les forums et faire perdre du temps, mais là je bloque... Vraiment.

Je suis toujours sur cette histoire de thread/multiprocessing.
Globalement, mon multiprocessing fonctionne. Mais c'est juste que ça n'a pas l'air compatible avec les vertexArray. C'est plus que certains que je ne sais pas utiliser correctement ces multiprocess.
J'ai essayé avec les queues, les pipes, etc... (sans mauvais jeu de mot  ;D ) mais je fini toujours avec un crash.

En gros, le multiprocessing gère les vertex. C'est juste qu'il n'arrive pas à les retourner correctement.

Un petit exemple que j'ai testé avec avec le pool async


import sfml as sf
from multiprocessing import Pool

def process():
        mp_vertexArray = sf.VertexArray(sf.PrimitiveType.QUADS)
        # imaginons un remplissage de mp_vertexArray
        return mp_vertexArray



if __name__ == '__main__' :

        # juste un test pour s'assurer ce qu'on connait deja
        test_vertexArray = sf.VertexArray(sf.PrimitiveType.QUADS)
        print test_vertexArray, "position, c'est bon!"
        print type(test_vertexArray), "type, c'est bon!"
        print len(test_vertexArray), "taille, c'est bon!"

        print "-------------------------------"

        # multiprocessing
        pool = Pool()
        res = pool.apply_async(process)
        vertexArray = res.get()

        # sortie du mutiprocessing
        print vertexArray, "position, c'est bon!"
        print type(vertexArray), "type, c'est bon"
        print len(vertexArray) # devrait retourner 0! Au lieu de ca, c'est un joli crash! Ouch...
   

La sortie :

Citer
<sfml.graphics.VertexArray object at 0x0051F1D0> position, c'est bon!
<type 'sfml.graphics.VertexArray'> type, c'est bon!
0 taille, c'est bon!
-------------------------------
<sfml.graphics.VertexArray object at 0x0051F330> position, c'est bon!
<type 'sfml.graphics.VertexArray'> type, c'est bon
[Finished in 2.9s with exit code -1073741819]


Est-ce qu'il y a une méthode particulière à utiliser? J'ai pensé au ctypes, mais ça m'a eu l'air assez complexe. Alors avant que je perde encore 1 semaine sur mon projet, je me demandais si c'est réalisable avec ça. Ou sinon avec quoi?
Merci (again)

2
Python / Re : Thread très lent
« le: Août 22, 2013, 07:03:11 pm »
On m'a orienté vers le multiprocessing.
J'ai fais un petit test et il me ressort un résultat en 0.06secondes au lieu d'1 minute.
Je pense être sur la bonne voie.

Merci quand même :)

3
Python / Thread très lent
« le: Août 19, 2013, 03:25:22 pm »
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.

4
Python / Re : Débutant avec pySFML
« le: Août 14, 2013, 08:47:57 am »
Ah oui, je vous remercie! Il me manquait juste cette propriété.
Le pire c'est que je l'ai vu dans la doc mais j'ai pas tilté... Je ferais plus attention la prochaine fois. Promis :D

5
Python / Re : Débutant avec pySFML
« le: Août 13, 2013, 04:33:26 pm »
Re bonjour,

De passage, j'ai encore une petite question. Après moult essais, j'ai fini par réussir mon tilemap  8)

Toutefois, l'heure des FPS a sonné. Déjà, la bonne nouvelle c'est que self.clock.restart() me renvoie 16 millisecondes. Après un bref calcul je peux m'apercevoir que je tourne donc aux alentours de 62fps.
Maintenant, je voudrais faire le calcul afin de l'afficher dans la fenêtre. Comme ça je n'aurai pas à réfléchir et pire encore, devoir expliquer aux amis que non, ce n'est pas la valeur réelle du fps. Bref, vous voyez le topo :)

Malheureusement je ne vois pas comment convertir un time en integer, ou directement faire le calcul du genre
sf.seconds(1) / self.time
Éventuellement je pourrais faire une routine pour convertir self.time en string et récupérer la valeur entière... Mais je présume qu'il existe un moyen plus simple que j'ai du rater... Et même surement tout bête!

Bref... Tout ça pour vous demander comment diviser un time.
Merci (encore) d'avance!

(self.time correspond à la valeur retournée de self.clock.restart())

6
Python / Re : Débutant avec pySFML
« le: Août 10, 2013, 01:08:23 am »
Bonjour Sonkun,
Je te remercie pour ta réponse autant complète que rapide.

C'est vrai que je n'ai pas vraiment regardé la doc coté C++ vu que je ne connais que la base. Du moins si je farfouille ma mémoire.  ;D
Mais je pense en effet que cette doc me permettra de beaucoup mieux comprendre. De plus elle est très bien faite et très bien expliquée donc je n'ai plus d'excuse!
En tout cas ça me sera très utile, je te remercie encore.


7
Python / [Solved] Débutant avec pySFML (python-sfml)
« le: Août 09, 2013, 09:24:37 pm »
Bonjour,
J'ai entrepris un petit projet de jeu 2D. J'ai d'abord commencé avec pygame mais je me suis assez vite aperçu que j'allais atteindre ses limites. Puis j'ai découvert par hasard SFML qui m'a plutôt convaincu.

Toutefois, avant de me lancer dedans tête baissée j'aurais bien voulu trouver des petits projets (voir sample) pour pySFML, qui utilisent principalement des tileset et de l'alpha blending. J'ai regardé un peu la doc, mais pour cette partie, j'avoue que c'est un peu confus dans ma petite tête.
J'ai également fait plusieurs recherches sur google mais je n'ai pas trouvé grand chose.

Si vous auriez ce genre de ressources, je vous en serais très reconnaissant!
Merci d'avance!


Pages: [1]
anything