Heuuu... non...
Lorsque tu écris mon_objet_python.ma_var = 42, c'est une propriété de mon_objet_python. Le globalDict est un dictionnaire (un mapping) référencé comme bge.logic.globalDict.
On l'utilise donc comme ça:
bge.logic.globalDict[ma_var] = 42
print(bge.logic.globalDict[ma_var])
Bien sûr, on pourrait avoir bidouillé un truc pour que les attributs ajoutés à bge.logic (un objet de type module) soient intégrés dans le globalDict. Mais ce n'est pas le cas.
Précisons encore que le globalDict:
1) peut être sauvegardé en tant que fichier séparé (format pickle, si je me souviens bien, et ça justifierait le point suivant) - c'est tout son intérêt
2) n'accepte que des objets de type natifs, typiquement:
obj = bge.logic.getCurrentController().owner
bge.logic.mon_obj = obj #ok
bge.logic.globalDict["mon_obj"] = obj #erreur
Le globalDict fournit donc une possibilité de faire des sauvegardes de paramètres, etc., et il a des correspondances directement avec les briques logiques. Mais si tout ce que l'on souhaite c'est garder un objet entre deux exécutions d'un script, on préfère en général assigner directement à un module (bge.logic. ... = ...) ou - plus pythonique - d'utiliser les scripts dans le BGE en mode Module - et donc d'y déclarer des variables globales.
Cette contribution était de : http://blenderclan.tuxfamily.org/html/newbb/viewtopic.php?forum=3&topic_id=44320&post_id=534932