vendredi 8 novembre 2013

Song of the Myrne: Un petit tour dans les coulisses

Hello tout le monde !

Billet technique aujourd'hui, donc si le processus de création de SotM ne vous intéresse pas du tout, et qu'en plus m'entendre parler d'Unity vous file des boutons, passez votre chemin^^

Pour ceux qui sont encore là, c'est partiiiiii !

Aujourd'hui je me suis codé un nouveau petit outil pour m'aider dans la création du jeu. Cet outil concerne un "problème" (plus une perte de temps qu'un vrai problème à vrai dire) bien particulier que j'ai parfois lorsque je crée des bâtiments, murs, etc...

En fait la plupart du temps, les murs, sols, façades, etc se "construisent" automatiquement au lancement du niveau. Par exemple, lorsque je crée un nouveau style de façade, je me contente de dessiner la texture complète du bâtiment dans un atlas de textures puis de poser les "plaques" qui constituent le bâtiment dans l'éditeur, sans trop me poser de questions.

Ce qui fait que dans l'éditeur, avant qu'on appuie sur "Play", la charmante petite ville que je vous ai montré il y a deux jours ressemble à ça:

Ah oui c'est sûr, c'est tout de suite moins sexy^^

Ce qu'il se passe au moment où le level est lancé ingame, c'est que chaque morceau de bâtiment va jeter un oeil à ses voisins ("Ah tiens, salut "Mur qui porte le même nom que moi !", "Hey, salut "Porte", t'es nouvelle dans le quartier ?"). Il va ensuite adopter une texture de l'atlas adéquate à son environnement, selon ce que lui-même est (un morceau de façade? De toit? De mur intérieur ?) et selon ses voisins. Genre si je suis une façade, que je n'ai pas de voisin en dessous de moi et qu'à droite, je vois une porte, je vais devenir un bas de bâtiment avec un pourtour de porte sur la droite, je vais aussi prendre en compte le fait que j'ai un voisin à gauche par exemple.

Tout ça fonctionne à merveille dans la plupart des cas.

Mais parfois, il arrive que j'ai besoin de spécifier moi-même la position d'un élément dans l'atlas de texture. Parce que cet élément appartient à un ensemble complexe (genre un phare qui possède une partie haute avec l'éclairage plutôt qu'un toit), ou pour apporter un peu de variation, comme ici par exemple:

En analysant ses voisins directs, un élément de cette bande ne saurait pas dire qu'il délimite un second étage, il sait juste qu'il ne touche ni le toit, ni le sol

Du coup je dois rentrer à la main les coordonnées de l'atlas que doit adopter un de ces blocs spéciaux (et dans l'exemple ci-dessus j'ai 3 coordonnées différentes puisqu'il y a les côtés du bâtiment). Faire attention de bien spécifier qu'il ne doit pas la choisir lui-même, ne pas me gourer en tapant les coordonnées, et bien entendu je dois souvent afficher une grille sur la texture dans Photoshop pour bien compter les colonnes et les lignes (pour les façades ça se voit à l'oeil nu, mais pour les murs intérieurs c'est une autre histoire^^).

Rien de compliqué, ça ne me prend que 20-30 secondes... plusieurs fois par jour...

Du coup, comme l'informatique c'est un domaine dans lequel la paresse est une qualité. Je me suis codé ce petit éditeur pour m'économiser ces centaines de secondes perdues chaque jour.

Cliquez sur l'image pour la voir en plus grand

J'ai juste a cliquer sur la partie que je veux que l'objet (ou les objets) affiche(nt), "et voilà" comme disent les anglais qui friment en parlant français.

Il va aussi me permettre d'ajouter un peu plus de variations sur les bâtiments, genre des fenêtres mieux intégrées dedans (actuellement, les fenêtres du jeu sont des objets que je pose par dessus le bâtiment), une partie du mur un peu décrépite ou sale, etc... Comme vous le voyez, il y a plein de places libres dans mes atlas de façade et la création de cet outil était une belle occasion de repasser dans mes scripts et permettre des tailles d'atlas variables pour les murs intérieurs (on est vraiment à l'étroit dans ces atlas là vu que mes scripts ne prenaient en charge que le 8 case x 8 case avant aujourd'hui).

Voilà voilà, j'espère que ce genre de billets vous plait. Personnellement j'adore voir comment fonctionnent les coulisses des jeux en développement que je suis... C'est ma deuxième passion dans la vie après raconter ma vie sur un blog (et faire des jeux-vidéos !)^^

A la prochaine les asticots !