Comment Super Mario Bros fait seulement 31 ko ?

Vignette Super Mario Bros

En 1985, le game designer japonais Shigeru Miyamoto crée Super Mario Bros. Développé sur la Nintendo Entertainment System (abrégée NES) le jeu iconique s’est vendu à plus de 40 millions d’exemplaires au cours de ses 30 premières années de distribution. Ce n’est qu’à partir de 2006, à la sortie du jeu Wii Sports, que le plombier aux bretelles perd son statut de meilleur vente de tous les temps. Super Mario Bros est aussi réputé pour avoir mis fin au krach du jeu vidéo de 1983.

La taille mémoire du jeu est d’exactement 31 ko (soit presque 3 fois moins que la taille de la vignette de l’article). Cette taille mémoire peut se comprendre pour les consoles de l’époque (dont les cartouches étaient limitées à 32 ko). Le titre est pourtant consistant : il est découpé en 8 mondes de 4 niveaux chacun pour un total de 32 niveaux de jeu.

Mais alors comment Super Mario Bros fait seulement 31 ko ?

Tout d’abord, il faut savoir que ce qui prend le plus de place dans un jeu vidéo sont les ressources multimédia (appelées assets). Le code informatique ne représente qu’une partie négligeable de la mémoire par rapport aux images, aux musiques et aux modèles 3D puisqu’il est très souvent compilé en langage machine.

Ensuite, les concepteurs ont eu recours à plusieurs procédés ingénieux encore utilisés aujourd’hui.

Le Tile Mapping

Super Mario Bros est constitué de tuiles (ou tiles en anglais).
La NES permet de charger uniquement des images de taille 8×8 (8 pixels de longueur et 8 pixels de largeur) ou de taille 8×16.
De ce fait, la plupart des tuiles du jeu sont composées de 4 images 8×8. Une tuile faisant ainsi 16×16 pixels.

On estime que le niveau 1-1 de Super Mario Bros est composé de 212 tuiles de longueur et 14 tuiles de hauteurs. Cela représente (212 x 14 =) 2968 tuiles soit (2968 x 4 =) 11872 images 8×8 pour dessiner 1 seul niveau.
Même avec des images 8×8, on a vite fait de remplir la mémoire d’une cartouche de jeu. C’est là qu’intervient le Tile Mapping.

Exemple de jeu de tuiles de Super Mario Bros.
Exemple de jeu de tuiles.

Le Tile Mapping est une méthode qui établit la correspondance entre les tuiles et leurs positions dans un niveau. Ce principe peut être établi techniquement par un tableau à deux dimensions de nombres entiers, ou par une image (où chaque pixel coloré correspond à une tuile). Ainsi, chaque case d’un niveau est associé à une tuile.

Combiné avec un Tile Set qui regroupe le jeu de tuiles uniques d’un environnement, ces techniques permettent de concevoir un niveau de jeu entier avec seulement quelques images.

Principe du Tile Mapping.

Ainsi, il est possible de charger une tuile qu’une seule fois en mémoire, mais de pouvoir l’afficher plusieurs fois.

Tile Mapping par Image
Tile Mapping par Image

Le but est de réutiliser les tuiles déjà existantes pour dessiner un niveau plutôt que de charger autant d’images que le niveau a de cases.

D’autres façons de réutiliser les assets

Image d'un buisson et un nuage.

Si vous êtes observateur, vous avez probablement remarqué que les nuages et les buissons de Super Mario Bros se ressemblent fortement. En fait, ces éléments du décor ont exactement la même texture. Les programmeurs ont simplement appliqué un filtre, changeant ainsi la palette de couleur de l’image, pour les différencier.

Image du filtre de Super Mario Bros
Ce principe est le même pour les ennemis et les briques.

À la manière du Tile Mapping, les pixels d’une certaine couleur changent selon la correspondance établit.

Le jeu réutilise aussi les mêmes tuiles pour former des éléments de décors différents. C’est le cas pour les nuages allongés et le château de Bowser.

Image Super Mario Bros Chateau.

Ce principe ne se limite pas qu’aux images. Le son utilisé lorsque Mario rétrécie après s’être fait toucher par un ennemi est également le même que celui émis lorsqu’il descend un tuyau. (Avez-vous été convaincu par cette illusion auditive ?)

En plus d’économiser la mémoire et de conserver une cohérence artistique, ce procédé permet aussi aux concepteurs de réduire le temps de production. En effet, il est inutile de créer beaucoup de ressources, il suffit de bien savoir les réutiliser.

Et pour la petite histoire, ce n’est que 20 ans après la sortie du jeu que le grand public a remarqué la supercherie des buissons-nuages !

Conclusion

Nous savons que l’essentiel de la mémoire d’un jeu est composé par ses assets.

Pour la partie graphique, un jeu optimisé charge en mémoire qu’une seule fois une texture, mais il est capable de la dessiner plusieurs fois.
Pour certains ennemis ou éléments du décor, les concepteurs réutilisent la même image et filtrent la couleur.

Ces subterfuges peuvent être réalisés par un Tile Mapping.

Auteur : Thibaud

Je suis passionné de création de jeux d'aussi loin que je me souvienne. Diplôme d'Ingénieur en poche, j'étudie actuellement les éléments qui permettent de réaliser un bon jeu dans le but de concevoir mes prochains titres. J’espère ainsi échanger avec des passionnés et constituer une communauté francophone de Game Design.

4 pensées sur “Comment Super Mario Bros fait seulement 31 ko ?”

  1. Bonjour, effectivement on peu aussi utiliser le fameux terme « Swap color » qui est énormément utiliser également dans les RPG d’époque sur les même monstres avec la seul différence qui change comme le design et les stat qui change, en gros quelques octets en plus à peine, on peu donc avoir un gros bestiaire avec ce détail, dans la plupard des jeux NES et autres consoles, l’arrière plan reste le même au final, quelques légère subtilité ajouter en quelques pixels qui prennet presque rien en capacité de stokage, vu que ça se répète
    Le jeu Antartic Adventure qui est un jeu en pseudo 3D est une simple image qui bouge et les décors reste le même sur la trame qui défile, le jeu pèse que 12000 octets (12 ko) par exemple, je comprenais pas au début pourquoi le jeu pèse quedals au final.
    Les musiques au format midi se joue sur quelques ko de mémoire, 2 ou trois notes musicals suffisent pour en faire une OST de plusieurs minutes.

    En tout cas très bonne explication avec le contre exemple de Super Mario Bros

  2. Bonsoir,

    Ton article est très intéressant ! Justement je m’étais posé cette question pour ce type de jeu un jour). Un grand merci !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *