J'ouvre donc ce blog comme un petit carnet de route pour traduire mon expérience et vous tenir informé des avancées de ma petite application.
Small Town Generator: qu est-ce que c'est ?
C'est un script python permettant au Blender Game Engine de générer aléatoirement une petite map constituée d'un ensemble de bâtiments et d'espaces verts.
Pour réaliser ce script, il m'a fallut assez peu de choses: quelques objets 3D très simples à modéliser que j'utiliserai par la suite comme des briques de "Lego" (voir ci-dessous)
Et c'est presque tout ! Le reste étant du code.
L'avantage de ce procédé, est qu'en changeant l'aspect visuel (la modélisation) de mes briques de base, c'est l'ensemble du visuel final qui changera. Dès le départ, en envisageant plusieurs types de briques pour le même élément (plusieurs formes de fenêtres et de portes par exemple) mon script pourra "choisir" (aléatoirement ou pas) laquelle utiliser en fonction du contexte.
la particularité commune de ces briques est l'échelle, elles ont toutes une base de 2x2 unités blender ce qui facilite leur positionnement futur dans l'espace.
Pour parvenir au résultat suivant :
Mon script défini à la base 6 types de terrains: les routes, des zones d'habitations légères, moyennes, lourdes et des commerces. bien entendu il sera possible d'étendre encore ces types par la suite et d'ajouter de nouvelles caractéristiques de zones.
Pour chaque zone constituée d'une grille de 10x10, une fondation est générée aléatoirement.
Ci-dessus vous pouvez voir 3 étapes de l'élaboration de la carte par le script: certaine zone ne sont pas encore construites, mais vous pouvez distinguer au sol l'emplacement prévu pour les fondations. Puis une étape intermédiaire où les murs sont positionnés en repérant la forme 2D des fondations, et enfin des bâtiments aboutis où l'algorithme de mon script à remplacé certains murs par les portes et fenêtres et où les toits ont été positionnés.
Bien entendu certains aimeraient pouvoir avoir accès au code, mais dans l'état actuel des choses je préfère ne pas le "libérer" en l'état, cela dit je pense que le principe de base est assez simple à comprendre et donc reproductible. Je finirai par le libérer le code de ce projet, qui n'est qu'une petite partie de ce que j'ai en tête, maintenant que je me sens plus à l'aise avec Python.
Je tiens vraiment à renouveler mes remerciements à la communauté Blender du BlenderClan pour l'aide et les conseils apportés.
Enfin pour mon auto-apprentissage sur Python, voici les liens vers les sources d'informations et d'apprentissages qui m'ont été indispensables:
2 Vidéos absolument géniales pour s'initier:
Un chouette tuto sur la création de jeu avec le BGE.
et évidement, les petits aides-mémoire qui le font bien :
Avec tout ça vous devriez pouvoir vous initier au python vous aussi.
Aucun commentaire:
Enregistrer un commentaire