# Moteur 2D

Un moteur 2D est une bibliothèque logicielle dont la principale fonction est d'afficher à l'écran un environnement graphique bidimensionnel ou isométrique, à partir d'un point de vue spécifié.
Il existe plusieurs types de moteurs 2D, dont les deux principaux reposent respectivement sur l'affichage d'une image unique, et sur l'affichage en tuiles. Dans le premier cas, les niveaux sont faits d'une seule pièce, c'est-à-dire que le personnage dirigé par le joueur évolue sur une image unique de grande taille. Dans le second cas, les niveaux sont créés par assemblage d'une multitude de petites images, pour former une grande image. L'image de base est appelée « tuile » (tile en anglais) et le fichier qui contient l'ensemble des tuiles d'un niveau est appelé « tileset ». Ce dernier est défini par la largeur et la hauteur de ses tuiles en pixels, et est généralement crédité. Il contient à la fois des éléments du décor, les animations des personnages et éventuellement des éléments de l'interface du jeu.

## Historique

Durant les premiers stades du développement des jeux vidéo, les développeurs étaient confrontés aux limitations techniques des machines de l'époque. Deux problèmes étaient récurrents : le manque de mémoire vive, et la lenteur du traitement des images et de leur affichage à l'écran. Les niveaux étaient jusqu'alors faits d'une seule pièce, c'est-à-dire une très grande image. Elle était entièrement chargée en mémoire pour pouvoir être affichée à l'écran, ce qui conduisait à une surconsommation inutile de la mémoire vive, puisque seule la portion de l'image où se trouve le personnage était affichée à l'écran.
Pour remédier à ces limitations, et en partant du constat que les environnements dessinés à l'écran se ressemblaient souvent, une nouvelle technique d'affichage fut développée. Cette fois-ci, au lieu de charger en mémoire une très grande image représentant tout l'environnement du jeu, le moteur ne chargerait en mémoire vive qu'une série de petites images, les tuiles. Le moteur n'avait plus qu'à répéter et assembler les images pour former le niveau complet. De cette manière, seule la partie du niveau qui devait être affichée à l'écran était chargée en mémoire, d'où un gain de mémoire.
Cette nouvelle approche sera une révolution pour les jeux de plates-formes et les RPG, et elle atteindra son apogée durant les périodes 8 bits et 16 bits des consoles de jeux. Quelques exemples : Megaman (Nintendo Entertainment System), The Legend of Zelda: A Link to the Past (Super Nintendo) et Shining Force (Mega Drive). De nos jours, les jeux en tuiles sont toujours d'actualité, notamment pour les consoles portables et les téléphones mobiles.

## Principe

Le niveau est découpé en une mosaïque de cases et est lié à un tableau ou une matrice à deux dimensions, dont chacune des entrées contient les caractéristiques d'une case. Par exemple, le développeur peut définir pour une case si le joueur peut marcher dessus (opposition sol / mur), si la case blesse le joueur (opposition terrain normal / lave), etc. Plus important, chaque entrée définit l'image qui doit être utilisée lorsque la case est affichée à l'écran. Cette technique permet aux développeurs de créer des environnements entiers, en n'ayant recours qu'à un simple éditeur de texte et un tileset. Toutefois, pour des raisons de commodité, la quasi-totalité des jeux en tuiles sont créés à partir d'éditeurs spécialisés.
Les cases ont une forme géométrique simple : triangle, carré, losange ou hexagone. Plus rarement, il est possible de rencontrer des cercles. Ces cases sont dessinées avec une hauteur et une largeur définies par l'utilisateur, mais elles doivent correspondre aux dimensions des images composant les tilesets choisis.
L'affichage du niveau peut se faire en vue de côté, en vue de dessus stricte (vue aérienne), en vue de dessus avec perspective (effet de profondeur suivant un seul axe) ou en vue isométrique. Dans le dernier cas, il n'est plus possible de définir les paramètres de collision directement à partir du tableau ou de la matrice : il faut alors définir des masques. Les masques sont des formes géométriques invisibles pour le joueur, qui épousent la forme d'un obstacle sur sa base. Par exemple, si un cylindre bloque un passage, son masque aura la forme d'un disque, et le joueur pourra librement circuler autour de ce disque. Si le joueur se place derrière le cylindre, il sera en partie caché par celui-ci, alors que s'il n'y avait pas de masque, il ne pourrait tout simplement pas se placer derrière le cylindre.

### Variantes

Le système en tuiles présente l'inconvénient de donner au joueur une impression de lassitude, puisque les niveaux sont conçus d'une répétition des mêmes images de base, souvent peu détaillées. De plus, avec les progrès de l'informatique, notamment en termes de capacité de mémoire vive, le problème de la surconsommation inutile de la mémoire perd de son importance. Par conséquent, le système en tuiles est peu à peu tombé en désuétude, même s'il reste encore aujourd'hui utilisé par les amateurs pour sa simplicité.
Les jeux vidéo en deux dimensions se basant sur une image unique sont progressivement ré-apparus. Bien que l'édition des niveaux soit rendu plus difficile (une simple modification sur le niveau nécessite de retoucher le fichier en entier), les graphistes peuvent désormais travailler sur un seul fichier et avec une plus grande liberté, ce qui permet d'augmenter significativement le niveau de détail de l'image.
Cette façon de concevoir les niveaux peut être combinée avec l'ancien système de tuiles : l'image du niveau peut être découpée en rectangles de taille moyenne, et seule la portion de l'image affichée à l'écran est chargée en mémoire. De cette manière, il est possible de dessiner des environnements riches et variés, sans pour autant perdre en mémoire vive. Commandos 3 : Destination Berlin est un exemple de ce type de combinaison.
Il est également possible de construire des niveaux à l'aide de blocs. Cette fois-ci, une tuile sert de bloc, mais l'agencement des blocs n'a pas besoin de suivre un maillage régulier, ce qui offre une plus grande liberté dans la création de l'environnement. Chaque bloc contient la définition de ses propres caractéristiques (terrain solide, lave, zone toxique, etc.). Ce système est notamment utilisé pour les jeux de plates-formes, tels les premiers Rayman.