vendredi 13 mars 2015

Small City Generator (version alpha mars 2015)


Utilisateur de Blender depuis 2008, j'ai depuis découvert au travers de ce logiciel gratuit bien plus qu'un outil: un état d'esprit animé par une communauté de passionnés, et un ensemble de possibilités de créations quasiment illimités. Je savais depuis longtemps déjà que couplé à un langage de programmation les possibilités offertes pouvaient s'avérer très intéressantes. Mais voilà, apprendre un langage tel que python me semblait très rébarbatif en auto apprentissage. J'ai pourtant début février 2015 décidé de franchir le pas, et en m'appuyant sur les communautés actives du web, notamment celle du blenderClan, j'ai été le premier surpris de constater qu'en quelques jours, je commençais à aligner quelques bouts de codes, et un mois après mon initiation j'étais déjà capable de mettre sur pied mon premier vrai projet : Small City Generator.

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