======Python: Scripts python dans le Blender Game Engine====== =====Ressources===== * [[https://docs.blender.org/manual/en/dev/game_engine/python_api/index.html|API Python du Blender Game Engine]] * [[http://reso-nance.org/wiki/logiciels/blender/bge-python/accueil|L’accueil sur les pages Blender chez reso-nance.org]] =====Généralités===== ====Particularité d'un script python dans le Blender Game Engine==== Un script python est appelé par le controller Python dans la fenêtre Logic Editor.\\ Pour commencer, laisser le menu déroulant sur Script.\\ Le script est lancé à chaque fois que le sensor Pulse True (voir le § suivant). Le script est alors interprété puis exécuté entièrement, il faut que le script se finisse pour que le jeu continue. Le temps de l'interpréter est très court. Le jeu tourne à 60 fps, soit 15 ms par frame, le temps d'interprétation est < 1 ms. Ce script ne peut pas être exécuté en console. Pour accéder à la bibliothèque du moteur de jeu (Blender Game Engine ou bge), le script doit être lancé dans Blender avec P. L'import se fait avec import bge Le module le plus utilisé est: bge.logic # gl come game logic, 2 lettres c'est court, donc pratique from bge import logic as gl ====Le script python est lancé par une brique logique sensor==== Le script est lancé puis excécuté entièrement. Par exemple, un sensor Always lance le script en seulement toutes les 7 frames. {{media_06:blender_python_01.png?900|}} ====Comment conserver une variable toutes les frames==== A la fin du script, toutes les variables de ce script sont perdues ! Seuls les attributs de bge.logic sont conservés en mémoire. Le principe from bge import logic logic.variable = "quelque chose" Mais ceci n'est intéressant que si logic.variable varie ! from bge import logic logic.variable = logic.variable + 1 # soit logic.variable += 1 Ceci va provoquer une erreur à la première frame: logic.variable non défini ===Il faut 2 scripts=== 1er script: initialisation.py qui ne sera lancé qu'une seule fois au début du jeu, et avant le 2ème script logic.variable = 100 2ème script: le script avec logic.variable += 1 =====La base de départ bgb.blend===== [[https://github.com/sergeLabo/bgb|Blender Game Base]] {{tag> atelier_blender bge python sb }}