PROGRAMMATION SUR GBA
DOSSIER
Thème :
Interview
Auteur :
Laurent
Date :
25 octobre 2003
forum podcast
signé :
DOSSIER

 

On entend souvent parler de programmation à droite ou à gauche concernant les jeux vidéos : «° Waaaa, cette console est trop facile à programmer, trop cool ! » ou bien encore « Waaa, il est trop naze ce jeu, le programmeur a du le bâcler en deux minutes ! »... Enfin bref, tout cela pour dire que la programmation est un sujet important dans les jeux vidéos. Mais au fait, la programmation, késako ? C'est quoi, un animal, une plante, un minéral ? Ca fait quoi, ça sert à quoi ? C'est dangereux ? Pour répondre à cette question, nous avons interviewé un programmeur sur GBA, au risque de nous faire mordre ou tuer. Finalement, l'entretien s'est plutôt bien déroulé...

Programmation sur GBA

Interview

Interview

ND : Salut !

Gfx : N'Cha !

ND : Peux-tu nous parler d'abord un peu de toi ?

Gfx : Eh bien allons-y ! ;) Je m'appelle Romain GUY et je viens d'obtenir mon DUT Informatique, option Génie Logiciel, à Lyon. J'attends pour le moment les résultats des entretiens, mais avec un peu de chance je serais à l'INSA de Lyon, département informatique dès la rentrée prochaine.

Comme il n'y a pas que les études dans la vie, je vais en profiter pour vous parler de ce que j'ai pu faire un petit peu à côté. Depuis maintenant 3 ans j'écris des articles pour le magazine informatique Login:. J'ai également parfois participé à PC Team, Studio Multimédia, et depuis peu à Code(r). Et pour rester dans le monde de l'écriture, je traduis actuellement l'ouvrage Google Hacks en français, pour le compte des éditions O'Reilly. Il ne me reste que quelques à pages à faire après cette interview, donc vous pourrez bientôt vous le procurer ;). Toujours en informatique, j'ai eu la chance de pouvoir donner des cours de programmation (Java pour les curieux) à l'Université Joseph Fourier de Valence. Normalement, je devrais renouveler l'expérience l'année prochaine mais cette fois-ci... dans mon maintenant ex-IUT ! Mais revenons un peu au sujet premier... je reviens tout juste du Québec où j'ai passé 5 mois pour valider ma seconde année d'IUT. Et là bas j'ai eu la joie de pouvoir travailler en tant que développeur de jeu sur GameBoy Advance lors de mon stage. Ah et puis je dois vous parler d'un projet (open source et libre) qui me tient à cœur, Jext. Il s'agit d'un éditeur de texte gratuit que tout le monde peut se procurer sur www.jext.org.

Et je vous épargnerais les intérêts classiques : copains, lecture, sport, cinéma, bière, etc.

ND : Ensuite, nous te posons la question qui va aider à la compréhension de toute cette interview : qu'est-ce que la programmation ?

Gfx : La programmation est une activité consistant à bâtir des logiciels à l'aide d'un langage particulier. Tout comme un écrivain rédige un livre à l'aide d'un alphabet et d'une langue (syntaxe, grammaire, orthographe), le programmeur crée des outils à partir d'un alphabet et d'un langage (qui possède une syntaxe, une grammaire et un vocabulaire particulier). Le résultat, plutôt que d'être lu et compris par un humain, sera lu et interprété par un ordinateur. Il s'agit de l'aspect purement technique de ce travail, mais je ne vais pas entrer dans les détails. Par contre, j'aimerais citer F. P. Brooks Jr. :

"Le programmeur, à l'instar du poète, manie des abstractions voisines de la pensée pure. Il construit des cathédrales dans les airs, à partir de l'air lui-même, par le pouvoir se son imagination."

Bref, toute machine informatique doit être programmée pour fonctionner. Et la GBA n'échappe évidemment pas à cette règle.

ND : Alors quel est le langage utilisé pour programmer sur GBA ?

Gfx : Jusqu'à la Playstation (la première du nom), les programmeurs utilisaient la plupart du temps l'assembleur qui est un langage très proche de la machine, donc assez difficile à manipuler par un être humain. Depuis, le langage qui règne en maître est le C. Un autre langage est parfois utilisé et porte le nom tout aussi abscons de C++. Ces deux langages possèdent de nombreuses similitudes mais appartiennent tout deux à des branches différentes de la programmation (la programmation procédurale et la programmation orientée objet pour les curieux). Chacun demande une gymnastique mentale particulière.

Quoi qu'il en soit, pour des raisons de performances, les équipes de développement optent la plupart du temps pour le C. Ce langage est cher à de nombreux informaticiens car il est né en même temps que le fameux système Unix (ce langage a en fait été créé pour bâtir cet OS). Relativement simple à apprendre, il permet de manipuler la machine de manière efficace, à l'instar de l'assembleur, tout en restant aisément manipulable par des êtres humains. En outre, presque tous les programmeurs le connaissent. Il est par exemple à la base de Linux, de Windows et d'une grande majorité de jeux PC.

ND : Pour revenir à toi, qu'est-ce qui t'as donné l'envie de programmer sur GBA, et, plus généralement, de programmer tout court ?

Gfx : Hop, on va renverser la question pour répondre dans l'ordre chronologique. L'envie de programmation m'est venue par hasard le 31 décembre 1996. Je n'avais alors que 14 ans et je m'ennuyais ferme au
réveillon organisé par des amis de mes parents. Mais ô joie, j'ai découvert un Genius 4000 de VTECH. Bon d'accord, ce n'était qu'un ordinateur éducatif pour enfant (avec des jeux de pendu, etc.) mais il y avait un interpréteur de langage BASIC dedans. Ni une ni deux, j'ai appris le langage et commencé mon premier programme, un jeu d'aventure en mode texte. De retour chez moi, j'ai tout transposé sur mon PC...

Ensuite, j'ai évité les langages que je qualifierais de traditionnels : le C, l'assembleur, le C++, le Pascal... Ainsi, j'ai pris très tôt goût aux langages peu utilisés, bizarres, voire carrément débiles. Et à force d'essayer les trucs les plus bizarres que je pouvais trouver, j'ai échoué sur un Palm Pilot. J'avoue que cette expérience m'a fait apprécier la programmation pour machine à faibles (tout est relatif, le Palm Pilot en question était plus puissant que mon premier PC :) ) capacités. Et donc un jour j'ai eu envie d'essayer sur une console. Le choix de la GBA fut motivé par la facilité de communication entre elle et le PC, et ce à faible coût. En ce moment, je m'amuse avec les téléphones mobiles.

Mais ce qui me motive en général pour programmer, c'est l'aspect créatif. Cela en choquera sûrement certains, mais je vois la programmation comme une véritable activité créative et, croyez-moi, il y a des artistes dans ce domaine. Et puis la programmation a un autre avantage... Quand on est un fainéant, il est facile d'écrire rapidement un outil qui nous permet d'automatiser ou d'accélérer certaines tâches :).

ND : Quels, sont, d'après toi, les points forts en programmation de la GBA par rapport aux consoles de salon ?

Gfx : Si on compare la GBA aux machines actuelles, on ne peut lui trouver que des faiblesses. Néanmoins, il faut reconnaître qu'il s'agit d'une console très facile et très agréable à programmer. Évidemment, l'ampleur des projets n'étant pas non plus la même, les jeux sont plus simples à concevoir et à réaliser.

ND : Par rapport aux anciennes portables de chez Nintendo ?

Gfx : La GBA marque un bond en avant dans la gamme des consoles portables de Nintendo : plus de puissance, un peu moins de travail pour le développeur, cartouches plus grandes, écran plus grand, couleur, etc. Nintendo a intégré dans le matériel quantité de choses pour faciliter la vie des développeurs.

ND : Par rapport à la concurrence ?

Gfx : Je connais mal la concurrence, notamment la GP32. Mais d'après tout ce que j'ai pu lire à son sujet, il s'agit d'une machine très intéressante pour les développeurs, mais plus complexes. J'ai eu la chance de mettre la main sur une N-Gage de Nokia. Et selon moi Nintendo n'a pas de souci à se faire, du moins avec cette première mouture. Certes les jeux peuvent être impressionnants (Tomb Raider notamment) mais la console est chère, peu ergonomique à mon goût et l'autonomie est ridicule. Et puis si ses performances en 3D sont exceptionnelles (ceci dit quand on voit le processeur qu'il y a dessous...), sa capacité à traiter la 2D est heu... décevante :).

ND : Maintenant, quels sont, toujours d'après toi, les points faibles en programmation de la GBA par rapport aux consoles de salon ?

Gfx : Plein ! La limitation de la mémoire, de l'écran, du processeur, de la taille des cartouches, des coûts des mémoires de sauvegarde, les quelques bugs du kit de développement, le processus de débogage pas toujours très pratique... Néanmoins, on peut difficilement établir une telle comparaison tant les deux univers sont éloignés. Et malgré ce que je viens de dire, travailler sur GBA reste très plaisant.

ND : Par rapport aux anciennes portables de chez Nintendo ?

Gfx : Aucun ! :)

ND : Par rapport à la concurrence ?

Gfx : Pour ce qui est de la GP32 je n'en sais malheureusement rien. En ce qui concerne la N-Gage, je peux juste dire que Nokia semble fournir une API (c'est à dire un ensemble d'outils prêts à utilisation pour le programmeur) permettant de gérer la physique, la 3D, le son, etc. très facilement et surtout très rapidement. Les temps de développement (et de portage surtout) semblent vraiment réduits sur cette machine. La GBA demande plus d'efforts.

ND : Peux-tu nous expliquer que sont les différents « modes » ? A quoi servent-ils ?

Gfx : Les fameux « modes » dont on entend parler sont des modes d'affichage. Il s'agit d'une manière d'exploiter les ressources de la machine d'une certaine manière, selon ce que l'on veut faire. Sans entrer dans les détails (qui sont techniques), je peux donner des exemples. Par exemple le mode 3 permet d'afficher des images avec 32 765 couleurs, mais occupe toute la mémoire vidéo. Le mode 4 quant à lui permet d'afficher des images en 256 couleurs à l'aide de palettes de couleur. On s'en sert
beaucoup car il permet le double buffering qui permet d'éliminer les effets de scintillement dans les jeux. Les autres modes (0, 1, 2 et 5) ont tous une utilité particulière, mais rien de bien intéressant pour le joueur.

Par contre, j'aimerais parler du fameux mode 7, utilisé dans Mario Kart par exemple. Il ne s'agit pas d'un véritable mode mais d'une astuce de programmation. La GBA sait afficher des tiles. Par exemple, les décors des jeux comme Zelda ont l'air d'être composé d'un ensemble de carrés. Ce sont des tiles (c'est une technique extrêmement utile pour réaliser des jeux 2D). La matériel sait les manipuler pour les zoomer, leur faire effectuer des rotations, etc. Maintenant l'astuce est relativement simple. Pour simuler un effet 3D, il suffit de créer en 2D le sol du niveau puis de l'afficher avec des tiles. Pour le moment nous voyons le niveau comme si nous étions au dessus, la tête tournée vers le
bas. La GBA, lors de l'affichage, balaye l'écran 160 fois, pour chaque ligne de pixels que l'on peut observer. En jouant avec le coefficient de zoom des tiles à chaque balayage de ligne on simule un effet 3D. Ainsi, les bandes de pixels du haut de l'écran seront rapetissées et celle du bas agrandies. Le joueur aura l'illusion d'une perspective.

ND : Qu'est-ce qu'un sprite ?

Gfx : Un sprite est un élément graphique indépendant que le programmeur peut déplacer (translations, rotations, zooms...) à l'écran. Dans Zelda sur GBA, le héros Link est un sprite. Ses ennemis sont des sprites.

ND : Y a-t-il des différences au point de vue programmation entre le GBA et le GBA SP ?

Gfx : Aucune.

ND : Sais-tu combien de temps dure un développement en moyenne ?

Gfx : Le développement d'un jeu GBA dure entre 4 et 12 mois. Une durée de 4 mois dans le cas d'un portage, et 12 mois pour un jeu original complexe (comme un RPG par exemple). Les autres jeux nécessitent aux alentours de 6 mois.

ND : Sais-tu combien coûte un développement en moyenne ?

Gfx : Aucune idée :) ! Les développeurs ne coûtent pas bien cher, mais le matériel, si. Les jeux à licence aussi. Disons que pour rentabiliser l'investissement sur un jeu, il faut vendre 100 000 copies.

ND : Nintendo a-t-il une quelconque approbation à donner pour qu'un développeur puisse faire paraître un jeu sur GBA ?

Gfx : Oui, et c'est même obligatoire ! Nintendo édicte des règles très strictes pour l'obtention de leur approbation. Par exemple, la position des messages "A Suivant" et "B Précédent" à l'écran. On ne peut pas faire n'importe quoi. De plus leur labo vérifie si le jeu respecte la philosophie Nintendo. A l'heure où je vous réponds, le jeu Backyard Hockey (ndlr : un jeu de hockey, qui, hélas, comme presque tous les jeux de hockey, a extrêmement peu de chances de voir le jour dans nos vertes contrées) sur lequel j'ai travaillé est en train de subir la torture des labos Nintendo :) !

ND : Aurais-tu des conseils ou des adresses utiles pour ceux qui, après avoir lu ce dossier, veulent se mettre à la programmation, et plus particulièrement à celle sur GBA ?

Gfx : Pour se mettre à la programmation voici mes conseils, vitaux : n'ayez pas peur de l'anglais et Google est votre meilleur ami. Il faut être curieux, souvent passionné, débrouillard (pour ne pas tout le temps poser des questions qui trouvent leur réponse dans le manuel ou sur Google) et créatif. Ceux qui veulent se lancer dans la programmation de jeux devront apprendre sans plus tarder le langage C et éventuellement le C++. Pour les autres, je ne saurais que trop leur conseiller de commencer par le Python, le Java ou le C. Vous pourrez vous casser la tête sur le C++ plus tard

Une fois que vous avez acquis les bases d'un langage et la logique inhérente à la programmation (les boucles, les conditions, les variables, les algorithmes) consultez des sites ou lisez le code source d'application Open Source.

Enfin, les intéressés pourront se rendre sur mon site personnel, #ProgX, qui propose notamment des cours de programmation GBA.

ND : Voilà, c'est tout ce que nous avions à dire. Merci pour ton temps, ta patience, et ton courage. @+ !

Gfx : Ben, merci à vous. :)