Je ne sais pas si vous connaissez le BGE (Blender Game Engine) qui est, comme son nom l'indique un moteur de jeu inclus dans le logiciel de 3D Blender.
Au cours de différentes réalisations, j'ai appris à coder des script en Python, mais seulement pour les intégrer dans Blender, c'est-à-dire que le script est exécuté à un moment précis (détection entre deux objets, temps ou n'importe quoi) ou alors en permanence, comme le boucle principale d'un programme, sauf qu'on ne fait pas apparaître cette boucle, c'est tout le script qui est sans cesse exécuter.
Bref, j'espère que l'un d'entre vous connais un peu le BGE parce que sinon ça va pas être simple...d'autant plus que sinon, je vais devoir me mettre à l'Anglais et aller poser la question sur un forum encore plus spécialisé...
Pour revenir à mon problème, il est assez curieux. Je m'explique : j'ai un programme qui exécute différents threads (4 pour être précis, mais pas en même temps...à la suite. Vous allez me dire que c'est inutile de les utiliser pour les faire tourner à la suite ! Mais pas du tout, je veux simplement faire réfléchir le programme à un problème (connexion à un serveur en l'occurrence, mais on s'en fou, c'est pas là qu'est le problème) en même temps que l'on joue. Il y a en fait toujours un de mes 4 threads en même temps que le programme principal que je ne fais pas, puisque, utilisant le BGE, c'est lui qui s'en occupe. Mais voilà, ça marche à merveille pour le 1er thread...mais dès le 2e, et ce pour tous les suivants, le programme principal se bloque pendant l'exécution de mon thread ! Résultat, le jeu se bloque jusqu'à la fin de mon thread...ce qui pose problème parce que le but même de ces threads (comme de tous les autres d'ailleurs ) est de faire plusieurs actions en même temps...
Voici un petit blend simplifié, mais qui n'en fonctionne pas mieux et qui montre bien mon problème. Tout est dans la console. Le programme démarre, et le 1er thread avec. Tout se passe bien, 'clientLance' est toujours affichée, même pendant que le thread 'chercheServeur' fonctionne.
Mais dès qu'on arrive au thread suivant (5s après), ça se corse ! 'clientLance ne s'affiche plus qu'entre les threads... Sauriez-vous trouver la solution à mon problème ?
http://www.mediafire.com/?lmdwmxj40zn
Petite aide pour ceux qui ont Blender mais qui ne connaissent pas bien le BGE : Dans mon cas, il y a 2 script : init et Text (j'ai laissé le nom par défaut...). Init est exécuté une fois au tout début du programme, puis c'est Text qui s'exécute en boucle. Les variables précédées de 'g.' sont globales, c'est-à-dire qu'elles sont utilisables dans tous les scripts du programme.
Voilà voilà
J'espère ne pas avoir à ressortir l'Assimil...