Toute première approche du level designing (mapping)
Vendredi 6 mai 2005 à 14 h 25
Les articles de ce blog sont extrait d'un livre écrit par son auteur.
Ce livre traite du developpement des jeux vidéo en général (principalement des FPS), avec une large partie consacrée au level design et à son environnement et ses contraintes. Le level design étant au coeur du jeu et étant beaucoup plus abordables que de compliquées notions de programmation, il permettra au novice d'intégrer sans trop de difficultées, toutes les notions de base du fonctionnement technique d'un jeux vidéo.

Mais qu'est ce que Le mapping ?
C’est créer des maps. On considère dans l’ensemble map, tout les mondes en 3D/2D dans lequel évolue un joueur. Dans cet article, nous considérerons uniquement les maps de FPS (First Person Shooter - Doom-Like/Quake-Like). Dans ses maps, le mappeur peut inclure ce qu’il désire : des sons, des models*, des textures, des shaders*... ce sont les assets. Les assets sont souvent des éléments créés par d'autres membres de l'équipe de developpement, nous reviendrons sur ce sujet par la suite.
Il y a de multiples façon d'aborder le fonctionnement d'un jeux vidéo. Etant moi même Level Designer j'ai choisi d'aborder ce vaste domaine par les maps, il est donc important d'en comprendre le fonctionnement avant d'aborder, plus en détail, le jeu vidéo.
Les principes d'une map
Une map est formée de 2 éléments principaux : les brushes et les entités.
- Les brushes :
Une map est constituée de volumes solides convexes, ce sont des brushes, ces volumes sont formés de faces planes délimitées par des segments eux-mêmes délimités par des points formants les vertices (les sommets) du volume. Ces volumes sont utilisés pour former l’architecture basique de la map (sols, murs, plafonds…), ils sont indispensables à la map, ils peuvent également servir à mettre au point des décors ou différents détails de la map.

- Les entités
L’ensemble entités contient tous les éléments d’une map, chaque entité possède un jeu de propriétés qui définissent les particularités de l’élément. La map est elle-même contenue dans une entité nommée le Worldspawn.
Mais le terme entité est plus couramment utilisé pour définir certains éléments abstraits de la map, comme une source lumineuse, une source sonore, les points d’apparitions ou de téléportation…
A un niveau plus avancé, un nouvel élément vient s’ajouter aux deux précédents, l’élément Curve aussi appelé le Patch de Béziers :
Un Patch est, comme un brush, un volume convexe, sauf que ses faces ne sont pas forcément planes. Un patch est une matrice bidimensionnelle de points, selon les valeurs de cette matrice, l’allure du patch change.

Comme expliqué précédemment, les Patch et les brushes sont formés à partir de plans délimités par des segments délimités par des points. Ces plans sont appelés les faces, sur chaque face il est possible d’appliquer une texture indépendante des autres faces, ceci, à fin de donner à cette face du brush (ou du Patch) l’allure que l’on désir de lui (mur en pierre, plaque en métal…). Chaque face, en fonction de la texture qu’on lui applique, peut avoir des propriétés particulières (lumière, écran, brillance, reflet…), ces propriétés sont appelées des propriétés de surfaces et sont inscrites dans le shader. Ce même shader peut aussi avoir des propriétés de contenu qui changeront alors l’intérieur du brush (ou Patch) ce qui permet de créer des effets tel que l’eau, la lave, le brouillard….
En modifiant le jeu de propriété d’un brush, on peut transformer ce dernier en porte : il suffit d’écrire dans les propriétés entité du brush que l’on veut que lorsqu’un joueur s’approche d’un certain distance d’un brush celui fasse une rotation par rapport à un certain axe, d'un certain angle, d'un certaine vitesse et en émettant un certain son.
Ainsi, en agençant avec précisions des brushes, des Patch, des textures, des shaders, des entités de diverses natures, on peut obtenir des maps à la qualité parfois étonnante.

Lloydmdm2 par Lloyd Morris
Principes plus approfondis
Maintenant que nous connaissons les différents éléments d’un map nous allons pouvoir nous pencher sur l’utilisation de ces derniers.
-A L’utilisation des brushes
Nous savons qu’un brush est un volume convexe solide possédant au minimum 4 faces (il est toujours fermé), en agençant correctement 6 brushes on peut obtenir une salle :
1 plafond + 4 murs + 1 sol = 6 brushes.

Avec ces même 6 brushes il aurait été possible de fabriquer une chaise :
4 pieds + 1 dossier + 1 siége = 6 brushes

On aurait également pu mettre au point un escalier à 6 marches :

Bien sur ces éléments sont très basiques car constitué de peu de brushes. En augmentant leur nombre, il est possible d’avoir des salles ou des objets très au point.
Par exemple avec 25 brushes il est possible de créer une chaise déjà plus évoluée :

-B L’utilisation des Patch de Béziers
Nous avons vu qu’à la similitude d’un brush, un Patch possède plusieurs faces et une texture par face. Mais nous savons également que une ou plusieurs face d’un Patch peuvent être non planes, c'est-à-dire, que leur surface peut être arrondie ou déformée.
Sur l’image suivante, FB est une courbe, FBCE un Patch de Béziers et ABFECD un ensemble de Patch de Béziers :

-C Les lumières
Une fois que la map est formée (à partir de brushes et de Patch), le mapper dispose des sources de lumières dans la map (appelé Point Light) il définit leur couleur et leur intensité.
Ainsi, durant le jeu, des ombres se formeront à partir des lumières et des différents éléments de la map : les textures seront plus claires (ou plus proche de la couleur de la source)là ou la lumière sera plus proche, et plus sombre, voir noir là ou il y aura moins de lumières.
_______________________________
Tout commentaire sur la qualité des explications sont les bienvenus, à conditions que chacun d'entre eux soit, bien sur, argumenté et justifié.
Pour tout ceux qui connaissent très bien ces notions, vous l'aurez remarqué, elles sont ici assez vulgarisée pour permettre au commun des mortels de les acquérir.
Au fur et à mesure du temps, les articles aborderont des sujets plus complexes et en entrant d'avantage dans les détails.
Avant de poster trop d'articles, je voudrais m'assurer que ceux-ci interressent au moins, quelques personnes.
Merci d'avoir lu mes lignes,
H.Reaper
Ce livre traite du developpement des jeux vidéo en général (principalement des FPS), avec une large partie consacrée au level design et à son environnement et ses contraintes. Le level design étant au coeur du jeu et étant beaucoup plus abordables que de compliquées notions de programmation, il permettra au novice d'intégrer sans trop de difficultées, toutes les notions de base du fonctionnement technique d'un jeux vidéo.

Mais qu'est ce que Le mapping ?
C’est créer des maps. On considère dans l’ensemble map, tout les mondes en 3D/2D dans lequel évolue un joueur. Dans cet article, nous considérerons uniquement les maps de FPS (First Person Shooter - Doom-Like/Quake-Like). Dans ses maps, le mappeur peut inclure ce qu’il désire : des sons, des models*, des textures, des shaders*... ce sont les assets. Les assets sont souvent des éléments créés par d'autres membres de l'équipe de developpement, nous reviendrons sur ce sujet par la suite.
Il y a de multiples façon d'aborder le fonctionnement d'un jeux vidéo. Etant moi même Level Designer j'ai choisi d'aborder ce vaste domaine par les maps, il est donc important d'en comprendre le fonctionnement avant d'aborder, plus en détail, le jeu vidéo.
Les principes d'une map
Une map est formée de 2 éléments principaux : les brushes et les entités.
- Les brushes :
Une map est constituée de volumes solides convexes, ce sont des brushes, ces volumes sont formés de faces planes délimitées par des segments eux-mêmes délimités par des points formants les vertices (les sommets) du volume. Ces volumes sont utilisés pour former l’architecture basique de la map (sols, murs, plafonds…), ils sont indispensables à la map, ils peuvent également servir à mettre au point des décors ou différents détails de la map.

- Les entités
L’ensemble entités contient tous les éléments d’une map, chaque entité possède un jeu de propriétés qui définissent les particularités de l’élément. La map est elle-même contenue dans une entité nommée le Worldspawn.
Mais le terme entité est plus couramment utilisé pour définir certains éléments abstraits de la map, comme une source lumineuse, une source sonore, les points d’apparitions ou de téléportation…
A un niveau plus avancé, un nouvel élément vient s’ajouter aux deux précédents, l’élément Curve aussi appelé le Patch de Béziers :
Un Patch est, comme un brush, un volume convexe, sauf que ses faces ne sont pas forcément planes. Un patch est une matrice bidimensionnelle de points, selon les valeurs de cette matrice, l’allure du patch change.

Comme expliqué précédemment, les Patch et les brushes sont formés à partir de plans délimités par des segments délimités par des points. Ces plans sont appelés les faces, sur chaque face il est possible d’appliquer une texture indépendante des autres faces, ceci, à fin de donner à cette face du brush (ou du Patch) l’allure que l’on désir de lui (mur en pierre, plaque en métal…). Chaque face, en fonction de la texture qu’on lui applique, peut avoir des propriétés particulières (lumière, écran, brillance, reflet…), ces propriétés sont appelées des propriétés de surfaces et sont inscrites dans le shader. Ce même shader peut aussi avoir des propriétés de contenu qui changeront alors l’intérieur du brush (ou Patch) ce qui permet de créer des effets tel que l’eau, la lave, le brouillard….
En modifiant le jeu de propriété d’un brush, on peut transformer ce dernier en porte : il suffit d’écrire dans les propriétés entité du brush que l’on veut que lorsqu’un joueur s’approche d’un certain distance d’un brush celui fasse une rotation par rapport à un certain axe, d'un certain angle, d'un certaine vitesse et en émettant un certain son.
Ainsi, en agençant avec précisions des brushes, des Patch, des textures, des shaders, des entités de diverses natures, on peut obtenir des maps à la qualité parfois étonnante.

Lloydmdm2 par Lloyd Morris
Principes plus approfondis
Maintenant que nous connaissons les différents éléments d’un map nous allons pouvoir nous pencher sur l’utilisation de ces derniers.
-A L’utilisation des brushes
Nous savons qu’un brush est un volume convexe solide possédant au minimum 4 faces (il est toujours fermé), en agençant correctement 6 brushes on peut obtenir une salle :
1 plafond + 4 murs + 1 sol = 6 brushes.

Avec ces même 6 brushes il aurait été possible de fabriquer une chaise :
4 pieds + 1 dossier + 1 siége = 6 brushes

On aurait également pu mettre au point un escalier à 6 marches :

Bien sur ces éléments sont très basiques car constitué de peu de brushes. En augmentant leur nombre, il est possible d’avoir des salles ou des objets très au point.
Par exemple avec 25 brushes il est possible de créer une chaise déjà plus évoluée :

-B L’utilisation des Patch de Béziers
Nous avons vu qu’à la similitude d’un brush, un Patch possède plusieurs faces et une texture par face. Mais nous savons également que une ou plusieurs face d’un Patch peuvent être non planes, c'est-à-dire, que leur surface peut être arrondie ou déformée.
Sur l’image suivante, FB est une courbe, FBCE un Patch de Béziers et ABFECD un ensemble de Patch de Béziers :

-C Les lumières
Une fois que la map est formée (à partir de brushes et de Patch), le mapper dispose des sources de lumières dans la map (appelé Point Light) il définit leur couleur et leur intensité.
Ainsi, durant le jeu, des ombres se formeront à partir des lumières et des différents éléments de la map : les textures seront plus claires (ou plus proche de la couleur de la source)là ou la lumière sera plus proche, et plus sombre, voir noir là ou il y aura moins de lumières.
_______________________________
Tout commentaire sur la qualité des explications sont les bienvenus, à conditions que chacun d'entre eux soit, bien sur, argumenté et justifié.
Pour tout ceux qui connaissent très bien ces notions, vous l'aurez remarqué, elles sont ici assez vulgarisée pour permettre au commun des mortels de les acquérir.
Au fur et à mesure du temps, les articles aborderont des sujets plus complexes et en entrant d'avantage dans les détails.
Avant de poster trop d'articles, je voudrais m'assurer que ceux-ci interressent au moins, quelques personnes.
Merci d'avoir lu mes lignes,
H.Reaper
je me suis toujours battu avec "jeux vidéo", je crois que je me battrais toujours.
Bien clair ça va, mais c'est peut être un peu trop géneral.
Chaque editeur de niveau est un peu différent. Avec l'UnrealED un brush = une pièe par exemple.
Tu devrais aussi parler des polygones, les triangles qui sont les bases de toutes formes... (une face carrée c'est deja deux triangles...)
C'est une mauvaise stratégie que d'aborder le sujet en parlant des polygones, les gens ne comprennent pas pourquoi on utilise deux triangles pour faire un carré au lieu d'un simple carré tout de suite.
Le terme brush est le plus général. je me suis peu servis de UEd, mais j'ai vu le terme Brush a plusieur reprises dans les tutoriaux. C'est pourquoi je l'ai conservé, je cherches un terme plus général et plus clair pour les designer. toute suggestion est bienvenue.
Merci de m'avoir donné ton avis MysticBlade.
H.Reaper
Edit : au fait, le livre est déjà disponible ou pas encore ?
Suivant les éditeurs de maps, les philosophies diffèrent : L'UnrealEd se base sur un BSP simpliste + mass statics, et le SandBox ne te permets plus de controler des polys au vertex près.
L'exemple de la chaise / escalier est archi décédé. Maintenant ce genre d'élément est réalisé à part avec un soft de 3D digne de ce nom capable d'optimiser le mesh a fond (stripping et autres conneries issu du jargon des modeleurs).
Sous l'Unreal Engine, le BSP n'est d'ailleurs plus qu'un prétexte à des fins d'optimisation.
Tu oublies également que l'on peut controler les lumières avec les shaders (puissance, couleur)
Pour les curves, ABFEDC est un assemblage de patches, pas un seul à part entière (iirc). Il me semble pas que tu puisses avoir des angles aussi nets juste en déplaçant le barycentre grâce aux points de controle.
J'ai lu quelques morceaux de la suite ( http://www.nexuiz.com/reaper/tuto/tuto.htm ), ca à l'air sympathique, surtout la dernière partie, même si j'aurais aimé un passage sur les références architecturales, ainsi qu'un long paragraphe sur comment créer un gameplay cohérent avec seulement quelques éléments de gameplay, comme c'est le cas dans les productions actuelles (jeux de plate-forme notamment).
En tous cas, je ne peux que saluer l'initiative. On manque cruellement de LDers dans la vie ;)
L'exemple de la chaise n'est utilisé que pour illustrer avec de images, ce qu'est un brush. j'integrerais les meshes plus tard.
Je pense que tu vas un peu vite, je n'allais pas traiter des shaders avant même d'avoir définit le polygone.
Le sujet du patch de bèzier est mitigé, tu as en effet raison, et, concretement, c'est un assemblage de patch (d'où le fait que j'ai mis deux couleur différentes pour chacun d'eux. mais pas abus de langage les gens définissent ce type d'ensemble de patch, un patch de bèzier.
Pour rester dans l'exactitude, je changerais ceci. merci.
- - - -
Ce que tu as vu n'est qu'une petite partie, je n'ais pas tout uploadé et ceci n'est que le début, la partie création d'une map est beaucoup plus étendue et je ne veux en rester pour le moment, qu'aux bases même du sujet. je mettrais la suite plus tard.
P.S: j'ai supprimé tuto.htm, car si tout le monde lit toute la première partie avant que je n'ai le temps de poster, le blog sera desert et la participation nulle.
_ _ _ _ _
Merci de tes commentaires Channie.
Ttask, le Livre n'est pas encore disponible. je me sers justement de ce blog pour presenter le contenu du livre et dialoguer des points litigieux.
le "livre" sera surement gratuit et distribué librement sur internet. je ne veux pas m'em*£$% avec un éditeur.
Cordialement,
HReaer