Monday, December 19, 2005

Chapitre 1 : Les Tiles

J'ai grandi entre les jeux 8-bit et les jeux 16-bit. Vous allez avoir largement l'occasion de comprendre ce dont je veux parler, mais à moins que vous ne sortiez du bouquin "the sprite decade" de Rodrigo Copetti, un petit brossage de tableau devrait faire du bien.

Si vous prenez à peu près n'importe quel appareil électronique moderne, il aura certainement une zone mémoire spéciale dans laquelle les valeurs indiquent des couleurs de pixel et qui est utilisée par la puce graphique pour construire le contenu à l'écran. Tout ce que le jeu / programme aura à faire, c'est remplir cette mémoire avec l'image qu'il veut voir à l'écran et le tour est joué. C'est vieux comme Space Invaders.

Mais les machines des années 85-95 n'ont pas le luxe de fonctionner comme ça, surtout si elles veulent afficher assez de couleurs: la vitesse d'accès à la mémoire est encore trop réduite. Alors on ruse. On utilise des puces prévues pour l'affichage de texte en remplaçant la ROM "caractères" par des bouts de tuyaux et on les baptise "tiles" (prononcez "taïlz"). On se rajoute une 2eme passe qui peut positionner des images librement n'importe où à l'écran et on les baptise "sprites" (prononcez "spraït" et essayez de ne pas faire de renvoi avec les bulles ;)

J'ai grandi avec pas fort loin de moi un manuel du C64 qui donnait quelques clés pour utiliser ce genre de hardware, mais le temps que je sois prêt à le maîtriser, tout le monde était passé sur PC où la mémoire de type "grosse grille de pixels" règne en maître, et tant pis si ça veut dire qu'on va passer une demi-seconde à tracer l'écran de Congo Bongo avant que le jeu ne démarre.

J'ai grandi en analysant les jeux que j'avais en main sur C64, NES, GameBoy, Master System, SuperNES, MegaDrive en remarquant que "mais oui, il suffit de réécrire les 4 caractères qui forment la pièce d'or et toutes les pièces à l'écran seront animées en même temps! ... En fait non! regarde! Elle est symétrique horizontalement et verticalement! Donc tu réécris juste 8x8x4 bits et comme la SNES dessine les autres parties en miroir, ça suffit pour tout animer!". Et en écrivant des jeux à écran fixe, où on doit enregistrer ce qui est à l'écran sous le curseur de la souris avant de redessiner le curseur et prier pour que ça ne clignote pas trop, avec des "pièces d'or" immobiles parce que même 8 fois plus rapide qu'une SNES, mon PC aurait ramé à tout redessiner.

Puis sont arrivés les jeux "impossibles". Ceux qui vous faisaient un dégradé de 200 nuances du bleu au rouge dans le fond de l'écran alors qu'on a que 16 couleurs. Ceux qui vous mettent des ennemis dans tous les sens alors qu'il n'y a que 8 sprites. Ceux qui vous animent une tour-qui-tourne, un plancher en 3D ... sur le même matériel 100% 2D que celui dont on vient de parler. Et toujours le même réflexe: comment ont-ils combiné les manipulations du hardware pour obtenir l'effet qu'on voit à l'écran ? Comment est-ce que moi, je m'y prendrais pour le réaliser.

Alors voilà: la Nintendo DS est la dernière machine héritière de cette génération. C'est donc sur DS que je veux faire mon jeu. C'est ça où le faire sur une vraie console 16-bit, mais soyons honnête: je n'ai pas (encore?) le niveau en pixel art pour avoir un rendu qui me plaise sur le hardware de l'époque ni le temps pour approcher chaque problème de programmation en devant l'ultra-optimiser pour que ça passe sur les quelques MHz de ces reines des consoles.

No comments: