Devblog Handpainted Forest Pack #1

Salut à toi, bienvenue dans ce devblog !

Je vais te partager les coulisses du développement du package Handpainted Forest Pack. Je te montre comment je fonctionne quand je travaille car je trouve que le partage d’expérience est super utile. Personnellement j’adore lire des devblogs et voir les étapes du projet d’un développeur ou artiste. J’aime beaucoup l’entraide dans le milieu indé 😊


La base de tout projet : la réflexion

Si tu me suis tu sais que je suis 3D Game Artist (= modéliser en 3D les éléments pour un jeu vidéo).

Ma cible

Je voulais créer un package qui s’adresse aux développeurs indépendants, professionnels ou amateurs, qui veulent construire graphiquement leurs jeux. Des idées géniales il y en a plein, mais les réaliser pour créer des jeux vidéo géniaux c’est plus compliqué.

T’as pas le temps de te poser sur le visuel ou pas le budget pour embaucher un graphiste dessus X temps, pas de soucis mon package te sera utile 😉

Handpainted Forest Pack c’est quoi ?

Il permet de construire ses propres forêts : possibilité de customiser les couleurs, LODs, atlas de textures.

J’ai choisi des éléments normaux (arbres, buissons, fleurs etc) sur lesquels j’apporte ma patte graphique. Mon but c’est que ces assets soient utilisables par le plus grand nombre. Si j’avais choisi de faire des designs très stylisés je me serais éloignée de mon intention.


La conceptualisation

J’ai posé ma direction artistique. J’adore la couleur et le traitement handpainted (= peint à la main). Ci-dessous mon moodboard.

Mes références : World Of Warcraft, Shiness, Dungeon Defenders 2, Pokémon et des assets trouvés sur Internet.

A l’époque j’avais pris un travail alimentaire pour pouvoir toucher le chômage en vue de me lancer à mon compte. J’utilisais mes pauses pour gribouiller mes croquis à l’arrache… genre vraiment à l’arrache 😋

Puis plus tard je les ai refaits au propre en couleurs avec Krita. Je préfère ce logiciel à Photoshop.

C’est plus sympa, n’est-ce pas ?


Le blockout, à quoi ça sert ?

Il sert à donner une idée du résultat final rapidement. En gros le blockout est à la 3D ce que le concept est à l’illustration, ou ce que le rough (concept ultra simpliste) est au concept. Tu me suis ?

A ce stade j’ai pu monter ma scène bac à sable comme je l’appelle. Elle m’a servi à tester mes différents assets et à me rendre compte de leur utilité et des ajustements à faire. Les proportions des assets sont-elles bonnes entre eux ? Les distances entre les éléments fonctionnent-elles ? Est-ce que la construction du décor fonctionne ? etc.

Passons à la suite !


La modélisation 3D

J’utilise Blender.

C’est la partie que je préfère : donner vie à une idée papier. Donner du volume c’est ça qui est bon 😁 ! Ok Taryne tu t’enflammes un peu là, doucement.

Je veille à la qualité du maillage et à obtenir les bonnes formes qui rendent l’asset intéressant en 3D. Souvent on se rend compte qu’entre le concept 2D et la 3D il y a des petits ajustements à faire pour rester fidèle à l’idée dessinée et corriger ses imperfections dans l’espace.

Sur mon concept le volume donnée par les branches est compliqué à retranscrire.

Quand tout est Ok je passe à l’étape d’après : le dépliage des UVs.


Les UVs : préparation pour le texturing

UV, qu’est-ce que cela signifie ? Les lettres « U » et « V » désignent les axes de la texture 2D, car « X », « Y » et « Z » sont déjà utilisés pour désigner les axes de l’objet 3D dans l’espace du modèle. Les Uvs ça revient à faire un patron de ton objet pour le poser à plat.

C’est une étape ultra importante. En fonction de ton texel density (appelé aussi pixel ratio) tu définis comment tu organises tes textures.

Le texel density sert à garder une résolution des textures homogènes. Par exemple : 1 unité = 128 px.


Le texturing

Il est l’heure de colorer toute cette belle 3D 😎 !

Le base texturing

Je pose des aplats de couleur pour vérifier si ma palette de couleur rend bien. Comme ce que tu as pu voir à l’étape des blockouts.

En full HD

Je m’occupe des effets de matière et des détails. J’ai décidé que certains éléments seraient colorés via les materials dans Unity. Je traite ces zones en niveau de gris.

Ici le feuillage sera coloré directement dans Unity via le material appliqué pour le feuillage

Il m’arrive parfois de retourner faire des retouches sur mes UVs si je trouve que je peux le rendre plus pratique pour la texture. Ce n’est pas une recette de cuisine, parfois il faut revenir sur certaines étapes pour améliorer le tout.


L’optimisation

Le choix du shader

Dès le départ j’ai fait des tests pour choisir quel shader d’Unity j’allais utiliser. Mon choix c’est porté sur le shader standard d’Unity car tout le monde peut l’utiliser et il dispose de l’option « Enable GPU Instancing ».

GPU Instancing ne rend que des maillages identiques à chaque draw call (=appel de dessin), mais chaque instance peut avoir des paramètres différents (par exemple, la couleur ou l’échelle) pour ajouter de la variation et réduire l’apparence de répétition.

« Enable GPU Instancing » permet de réduire le nombre d’appels de draw call utilisés par la scène. Cela améliore considérablement les performances de rendu de ton projet. Pas mal, non ?

Les atlas de texture

Un atlas c’est une grosse texture qui regroupe les textures pour plusieurs objets 3D dans ta scène, et ça réduit tes draw calls.

1 grande texture vaut mieux que plusieurs petites textures.

1 atlas qui texture 19 assets uniques (sans compter les variantes)

LOD = Level Of Details

C’est le fait que quand la caméra s’éloigne d’un objet 3D celui-ci est remplacé par un modèle moins détaillé, et ainsi de suite jusqu’à disparaître.


Le mot de la fin

Tu crois que c’est fini ? Pas encore ! Pour la production il y a l’étape de construction de tes scènes.

Ici je te présente le timelapse (vidéo accélérée) de la scène bac à sable.

Une fois le package fini, je me suis penchée sur la communication. Comment je le mets en valeur et comment je vais communiquer dessus. Et crois-moi cette étape demande pas mal de temps ! Mais cela ne concerne pas le devblog du jour.

J’espère que ça t’a plu ou apporté quelque chose 😉