Entretien avec GValiente Ă  propos de Butano

PostĂ© par (site web personnel) . ÉditĂ© par Julien Jorge, Arkem, BenoĂźt Sibaud et palm123 . ModĂ©rĂ© par Julien Jorge. Licence CC By‐SA.
Étiquettes :
29
12
avr.
2024
Jeu

GValiente développe un SDK pour créer des jeux pour la console Game Boy Advance : Butano.

Cet entretien revient sur son parcours et les raisons qui l’ont amenĂ© Ă  s’intĂ©resser Ă  cette console.

Game Boy Advance

Sommaire

Partie 1: présentation

Qui ĂȘtes-vous, quel est votre parcours et est-il liĂ© aux jeux vidĂ©os ?

AprÚs des études d'informatique, j'ai travaillé dans plusieurs domaines autour du logiciel comme les pages web ou les applications graphiques Java/Swing.

Aujourd'hui je travaille plutĂŽt en C et C++ dans l'embarquĂ©, ainsi mĂȘme si mon parcours professionel n'est pas directement liĂ© aux jeux vidĂ©os, mon boulot actuel en est plutĂŽt proche.

Comme loisir, j'ai joué un peu avec RPG Maker 2K avant de commencer à programmer pour la GBA.

Pourquoi le retrogaming est-il important pour vous ?

D'abord pour la nostalgie : ĂȘtre capable de jouer Ă  nouveau aux jeux de votre enfance est trĂšs important pour tout le monde. Malheureusement, pouvoir rejouer Ă  de vieux jeux est quelque chose que nous sommes en train de perdre Ă  cause des restrictions des jeux modernes (mode en ligne obligatoire, DRM...).

Ensuite, grùce aux émulateurs il est trÚs facile de lancer sans problÚme des jeux que j'ai créés pour la GBA il y a 20 ans. Si je les avais fait pour Mandrake 8.0 à la place, ce ne serait pas aussi facile de les tester aujourd'hui sans recompiler du vieux code et autre.

Partie 2: Game Boy Advance

Comment en ĂȘtes-vous venu Ă  vous intĂ©resser Ă  la Game Boy Advance ?

La GBA SP était un grand progrÚs par rapport au modÚle original grùce à l'écran rétro-éclairé et la batterie intégrée, alors j'en ai acheté une dÚs qu'elle est sortie.

Les jeux 2D me manquaient aprÚs la N64 et la GameCube, alors pouvoir jouer à des classiques de la 2D comme Final Fight sur une console portable était génial.

Mais ce qui m'intéressait vraiment à propos de la GBA était la possibilité de créer des jeux grùce au HAM SDK et aux flashcarts.

La GBA SP

Qu’est-ce que cette console a de particulier ?

C'est la derniĂšre console 2D. Le systĂšme graphique de la GBA fonctionne comme les consoles 16 bits classiques comme la SNES ou la Megadrive, avec des sprites, des arriĂšres plans...

Toutefois elle utilise un processeur ARM 32 bits tourant à 16MHz, alors il n'est plus nécessaire ou aussi important de programmer en assembleur pour avoir de bonnes performances.

En plus, je trouve plus "magique" de voir votre jeu tourner sur un écran d'une vieille console portable que sur un écran de télévision.

Est-elle proche de la Game Boy ou de la SNES ?

Au niveau graphique, c'est comme une SNES avec plus de couleurs simultanées, plus d'arriÚre plans et beaucoup de sprites par scanline (proche d'une Neo Geo et en plus on peut leur appliquer une rotation !). Elle permets aussi d'utiliser un "framebuffer" qui rends le rendu "logiciel" plus facile. Les jeux 3D comme Doom sont beaucoup plus rapide sur la GBA grùce à ces modes. Malheureusement la résolution de l'écran est un peu trop basse (240x160 contre 256x224 pour la SNES par exemple).

Cependant, au niveau son, c'est pire que la SNES: la GBA partage le mĂȘme canal PSG que la Game Boy originale avec deux nouveaux canaux directs pour jouer des samples PCM. Avoir seulement deux canaux PCM demande presque toujours de gĂącher des tonnes de cycles CPU en mixage audio et mĂȘme aprĂšs cela sonne toujours pire que la SNES.

Comment fonctionne l'affichage (PPU, écran LCD) ?

Comme je l'ai dit, cela fonctionne comme une SNES : vous avez un nombre fixe d'arriÚre plans et de sprites, vous les configurez en écrivant des registres. La GBA a aussi des interruptions HDMA et H-Blank, donc vous pouvez faire beaucoup d'effets "raster" comme le fameux mode 7 de la SNES.

NĂ©anmoins, quelques limitations pĂ©nibles du PPU de la SNES ont Ă©tĂ© retirĂ©, ce qui rends le PPU de la GBA plus facile Ă  programmer. Par exemple, la GBA permets d'Ă©crire en VRAM pendant le "V-Draw" (quand le PPU rafraĂźchit l'Ă©cran). Cela permets d'utiliser toutes les tailles de sprites disponibles en mĂȘme temps alors que la SNES ne permettait que deux tailles simultanĂ©ment.

La console peut-elle faire de la 3D ?

La GBA n'a pas d'accélération 3D matérielle, mais son CPU est assez rapide pour faire du rendu logiciel (à un faible taux de rafraßchissement). Il y a quelques techniques pour dessiner des polygones 3D avec des sprites 2D, mais cela vient avec des tonnes de limitations. Dans Varooom 3D, j'ai utilisé des sprites 2D poour dessiner des lignes horizontales, ce qui m'a permis de dessiner quelques polygones non texturés à 60 images par seconde.

Comment fonctionne le son ?

Je ne sais pas trÚs bien comment fonctionne l'audio de la GBA, car je n'en ai pas eu besoin : il y a de trÚs bonnes bibliothÚques disponibles et j'ai préféré les intégrer plutÎt que d'implémenter ma propre solution.

Comment marche la rétrocompatibilité avec les précédentes Gameboy ?

Il y a 3 modĂšles de GBA disponible: GBA, GBA SP and GBA Micro. Seules les deux premiĂšres sont compatibles avec la Game Boy originale.
La rétrocompatibilité est transparente pour le développeur et la plupart des fonctionnalités de la Game Boy sont indisponibles en mode "natif" : un jeu GBA ne peut pas utiliser le CPU de la Game Boy par exemple.

La machine possĂšde une ROM interne, Ă  quoi sert-elle ?

La GBA dĂ©marre depuis le BIOS, une petite ROM qui montre l'Ă©cran d'accueil et exĂ©cute le jeu aprĂšs cela. Il a aussi quelques fonctions liĂ©es Ă  l'Ă©nergie, comme arrĂȘter le CPU jusqu'au V-Blank ou mettre la console en veille. Enfin, il propose quelques routines comme des fonctions mathĂ©matiques, mais je ne les utilise pas pour des questions de performances. Cela aide aussi Ă  Ă©viter les bugs d'Ă©mulation du BIOS.

La GB possĂšde un dispositif anti piratage, comment fonctionne-t-il ?

Je préfÚre vous renvoyer à l'article de copetti.org sur le sujet.

Comme pour l'audio, je ne sais pas trop comment cela fonctionne, car j'ai préféré intégrer une bibliothÚque.
En général je préfÚre une bonne bibliothÚque plutÎt que passer du temps à implémenter une plus mauvaise solution.

Les cartouches peuvent-elles embarquer des coprocesseurs ?

Bien sûr, mais le CPU est tellement puissant par rapport à ceux des consoles 16 bits, qu'il n'y en a pas souvent besoin. Le meilleur exemple d'une cartouche officielle avec un coprocesseur dont je me rappelle est la Play-Yan : elle semble embarquer un VideoCore 1 pour jouer des musiques mp3 et des vidéos mp4 depuis une carte SD.

Les émulateurs sont-ils bons ?

Extraordinaires. Les Ă©mulateurs GBA sont si bons que vous n'avez presque jamais besoin de tester sur du vrai matĂ©riel. Si votre jeu fonctionne sur la plupart des Ă©mulateurs modernes, alors votre jeu a toutes les chances de fonctionner sur une console rĂ©elle sans souci. D'ailleurs la plupart des membres actifs de gbadev ne possĂšdent mĂȘme pas de GBA.

Quels sont vos jeux commerciaux préférés sur cette console ?

Beacoup :

  • des joyaux de Treasure comme Astro Boy Omega Factor et Gunstar Super Heroes ;
  • d'autres jeux d'action comme Ninja Five-0, Dragon Ball Advanced Adventure et Final Fight ;
  • tous les Castlevanias (qui sont proches du Simphony of the Night de la PS1) ;
  • les ports de Doom ;
  • bien sĂ»r les classiques de Nintendo comme Wario Ware et Zelda the Minish Cap ;
  • des RPGs bien connus comme Mother 3, Mario and Luigi et Final Fantasy I&II ;
  • quelques RPGs moins connus comme Riviera et CIMA the Enemy.

Astro Boy Omega Factor

Quels sont vos jeux "homebrew" préférés sur cette console ?

Il y en a beaucoup aussi, mais mon préféré est de loin GBA Microjam '23: c'est une collection de mini jeux trÚs amusants à la Wario Ware.
Ce qui le rend trÚs spécial, c'est que chaque mini-jeu a été fait par un membre différent de gbadev, c'est un jeu "communautaire".

D'autres trĂšs bons:

gba-microjam-23

Partie 2 : Butano

Pourquoi crĂ©er un SDK aujourd’hui pour si vieux systĂšme ?

L'objectif de Butano était de pouvoir travailler avec le PPU de la GBA et le reste du systÚme aussi facilement que possible sans perdre trop de cycles CPU. Et je pense que j'y suis arrivé : avec Butano, vous pouvez créer, afficher et détruire des sprites, des arriÚre plans, du texte, des effets raster et plus encore avec une seule ligne de C++.

Les prémisses de Butano étaient une bibliothÚque interne à mes jeux. Je n'avais pas de plan pour rendre ça public à part faire quelques exemples et de la documentation.

Finalement je suis content d'avoir rendu ça public : le plus grand accomplissement de Butano est le grand nombre de jeux de qualité fait avec.

Est-ce que vous participez vous mĂȘme Ă  la crĂ©ation de jeux ?

Oui, Butano vient avec le code source de deux jeux que j'ai fait : Butano Fighter et Varooom 3D.

Varooom 3D

Quels ont été les difficultés pour créer Butano ?

Pour ĂȘtre honnĂȘte, je n'ai pas eu beaucoup de difficultĂ©s grĂące au grand nombre de bibliothĂšques, tutoriaux, Ă©mulateurs et outils disponibles pour la GBA.

Vous aimeriez vivre du développement de ce logiciel libre?

Bien sûr, mais à moins de travailler à plein temps sur un jeu homebrew à grand succÚs, c'est difficile voire impossible de vivre de ça.

Est-ce que Butano gĂšre les accessoires (e-Reader, WormCam, Play-Yan...) de la console ?

Il gÚre les accessoires les plus communs : SRAM, rumble et l'horloge temps réel / real time clock (RTC).

Pour les accessoires plus exotiques, je pense qu'il est préférable d'utiliser d'autres bibliothÚques.

Quels conseils donneriez-vous Ă  quelqu’un qui veut se lancer dans le dĂ©veloppement de jeux Game Boy Advance ?

PremiĂšrement, vous devez apprendre les bases du C/C++ : la plupart des nouveaux connaissent uniquement des langages de haut niveau comme Javascript ou Python, malheureusement ils sont un peu trop lourds pour la pauvre GBA.

AprĂšs, vous pouvez suivre cet excellent guide plutĂŽt que suivre mes modestes conseils.

Quels sont les outils pour créer/préparer des graphismes utilisable par Butano ?

J'utilise Gimp et Usenti (un logiciel proche de MS Paint pour la GBA et notamment une gestion des couleurs 15 bits et des palettes). Toutefois, la plupart des outils permettant de produire des images indexées peuvent faire l'affaire.

Pour le travail des cartes, j'aimais utiliser Tiled par le passé.

Quels sont les outils pour créer/préparer des musiques et des sons utilisable par Butano ?

OpenMPT est l'outil audio le plus populaire pour la GBA, les musiques étant généralement créées avec un tracker. Il a aussi de bons outils pour travailler avec les samples. D'autres utilisent hUGETracker et Furnace.

Est-il possible de créer ses propres cartouches ?

Je ne suis pas juriste, mais comme Butano est sous licence zlib, tant que vous respectez cette licence et celles des autres dĂ©pendances, vous pouvez faire vos propres cartouches et mĂȘme les vendre.

Je pense que ce que font la plupart des gens aujourd'hui, c'est acheter des cartouches pirates Pokémon pas chÚres, et les flasher pour y mettre leurs propres jeux.

Pourquoi le choix de C++ pour ce SDK ?

Comme je l'ai dit, un langage de haut niveau avec ramasse miettes est généralement trop pour la GBA.

Entre C et C++, j'ai choisi ce dernier, car il permet de réduire grandement la quantité de code sans gùcher trop de CPU.

Par exemple:

  • les destructeurs de C++ permettent de ne pas avoir Ă  Ă©crire trop de code pour nettoyer les ressources, ce qui est une source de bugs importante sur les grands projets GBA ;
  • la GBA ne gĂšre pas les nombres flottants en hardware, donc utiliser des nombres en virgule fixe est essentiel. GrĂące Ă  la surcharge d'opĂ©rateurs, C++ permets d'Ă©crire des classes qui se comportent comme des nombres flottants.
  • L'opĂ©rateur constexpr permet de gĂ©nĂ©rer et stocker des tables de correspondance (lookup tables) ou autres constantes en ROM sans avoir Ă  utiliser d'outils externes.

Est-ce qu'il existe d'autres SDK libres pour ces consoles ?

Il y a beaucoup de SDK pour GBA, mais malheureusement (Ă  mon avis) la plupart sont de plus bas niveau que Butano.

Voici une liste de ressources (compilers, toolkits, libraries, etc.) pour la GBA: resources GBA.

Partie 3: pour finir

En dehors du travail, quels logiciels libres utilisez-vous, sur quel OS ?

J'utilise généralement Windows à cause du boulot et de certains jeux PC, mais la plupart des programmes que j'utilise sont libres.

L'éditeur de code que j'utilise presque toujours est Qt Creator, il est génial pour C++.

À part les logiciels libres pour le dĂ©veloppement GBA, j'utilise Firefox, Notepad++, VLC, 7-Zip, LibreOffice, TortoiseGit, VirtualBox et bien sĂ»r les Ă©mulateurs pour les vieilles consoles et bornes d'arcade.

Au travail, quels logiciels libres utilisez-vous, sur quel OS ?

Pour le développement embarqué, j'utilise GCC et les outils GNU. Pour les applications de bureau, j'utilise Qt avec MinGW.

GCC est aussi le compilateur le plus populaire pour le dĂ©veloppement GBA, alors je n'aurais pas pu l'Ă©viter mĂȘme si j'avais voulu.

D'autres logiciels que j'utilise au travail : Thunderbird, Putty and WinSCP.

Quelle est votre distribution GNU/Linux préférée et pourquoi, quels sont vos logiciels libres préférés ?

Ubuntu est bien pour le peu d'usage de Linux que je fais.

Mes logiciels libres favoris sont ceux avec lesquels je passe le plus de temps : Firefox, Qt Creator, GCC, les émulateurs.

Quelle question auriez-vous adorĂ© qu’on vous pose ?

Mmh... rien qui me vienne Ă  l'esprit.

Quelle question auriez-vous dĂ©testĂ© qu’on vous pose ?

Pourquoi perdez-vous votre temps avec des consoles vieilles de 20 ans ?

Maintenant que j'y pense... J'aurais adoré qu'on me demande ça.

Aller plus loin

  • # VO

    PostĂ© par (site web personnel) . ÉvaluĂ© Ă  6. DerniĂšre modification le 12 avril 2024 Ă  17:05.

    GValiente parlant espagnol et moi anglais comme une vache espagnole, cet entretien est une adaptation libre de nos échanges dans la langue d'Iron Maiden.

    Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

    • [^] # Re: VO

      PostĂ© par . ÉvaluĂ© Ă  2.

      trĂšs cool cette interview ! merci !

    • [^] # Re: VO

      PostĂ© par (site web personnel) . ÉvaluĂ© Ă  2. DerniĂšre modification le 12 avril 2024 Ă  19:00.

      boah, il aurait pu mettre ses réponses en espagnol et sa traduction anglaise :-)

      une fois au fosdem, j'avais rencontrĂ© 2 contributeurs Mageia qui ne parlaient pas bien anglais et mieux l'espagnol (ou leur langue natale arabe), donc bon on a passĂ© la soirĂ©e Ă  parler espagnol :p Franchement, c'est ma LV2 mais j'ai eu moins de mal Ă  me mettre Ă  l'oral avec quelques voyages en Espagne que lorsque j'ai dĂ» parler ma LV1 — donc l'anglais — en contexte international sur une mission... bon dans l'Ă©quipe, un russe, un allemand, un indien, un pakistanais, un japonais, un chinois, un amĂ©ricain de souche, heureusement mon responsable d'origine portugaise Ă©tant depuis 10 ans aux USA faisait des efforts pour nous pauvres français :D) alors que j'Ă©tais Ă  l'Ă©poque quasi bilingue anglais... (mais pas Ă  l'oral, ni pour le colloquial ni la rĂ©unionite d'Ă©quipe :/)

      hmmm, à le relire, il a dû directement écrire en anglais :D
      t'acceptes les PR pour ton texte ? (ya 5-6 coquilles, sbon hein :p), pas vu de fautes dans les réponses, hormis cart qui est sans doute l'abréviation de cartridge

      • [^] # Re: VO

        PostĂ© par (site web personnel) . ÉvaluĂ© Ă  3. DerniĂšre modification le 12 avril 2024 Ă  20:39.

        t'acceptes les PR pour ton texte

        Pourquoi pas, mais c'est plus un brouillon qu'autre chose. Ce serait plus intéressant de travailler directement dans l'espace de rédaction de linuxen.org :-)

        Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

        • [^] # Quelques coquilles

          PostĂ© par (site web personnel) . ÉvaluĂ© Ă  2.

          Merci pour la dĂ©pĂȘche !

          Astroboy Omega Factor, monsieur a du goût ! Et je vais télécharger la démo de Goodboy Galaxy, ça a l'air trÚs bien.

          Quelques coquilles Ă  corriger :

          Beacoup -> Beaucoup

          les classiques de Nintendo (扊陀) classics (ć‰Šé™€ă“ă“ăŸă§) comme -> les classiques de Nintendo comme (car si il existe une collection de jeux "NES classic" sur GBA, WarioWare et Minish Cap n'en font pas partis)

          ils sont un peu trop lourd -> ils sont un peu trop lourds

          générallement -> généralement

          j'utlise Firefox -> j'utilise Firefox

  • # excellente interview

    PostĂ© par . ÉvaluĂ© Ă  5.

    Toujours un plaisir de lire vos questions pertinentes, Dave, et surtout les rĂ©ponses. Parce que les questions, c'est toujours les mĂȘmes.

    Discussions en français sur la création de jeux videos : IRC libera / #gamedev-fr

  • # Lost in translation ?

    PostĂ© par (site web personnel) . ÉvaluĂ© Ă  4.

    tous les Simphony of the Night comme Castlevanias.

    Castlevania est une série de jeux.
    Symphony of the Night (SotN) est épisode de cette série (voir le tableau dans mon lien), surtout connu pour sa sortie sur PlayStation, et il n'est pas sorti sur GBA.
    Il y a 3 épisodes sur GBA ("Circle of the Moon", "Harmony of Dissonance" & "Aria of Sorrow"), qui sont clairement dans la lignée de SotN, et qui font parti d'un genre qu'on nomme souvent MetroidVania (de la contraction de Metroid & de CastleVania, donc des jeux avec un seul grand monde ouvert dont on ouvre les parties grùce aux pouvoirs qu'on acquiert au fur et à mesure + une composante RPG avec des caractéristiques qu'on améliore avec de l'expérience).

    Du coup s'agissait-il de "Tous les CastleVania inspirés de Symphony of the Night" ?

    • [^] # Re: Lost in translation ?

      PostĂ© par (site web personnel) . ÉvaluĂ© Ă  3.

      Mmh en angliche la phrase est All the Simphony of the Night like Castlevanias.

      Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

      • [^] # Re: Lost in translation ?

        PostĂ© par (site web personnel) . ÉvaluĂ© Ă  6. DerniĂšre modification le 13 avril 2024 Ă  18:56.

        "Simphony of the Night like" est sûrement à prendre comme "Doom-like" (jeux comme Doom), donc les "Castlevania semblables à SotN" (il me semble qu'en français on n'accorde pas les noms propres).

  • # Commentaire supprimĂ©

    PostĂ© par . ÉvaluĂ© Ă  0. DerniĂšre modification le 15 avril 2024 Ă  13:51.

    Ce commentaire a Ă©tĂ© supprimĂ© par l’équipe de modĂ©ration.

  • # petite erreur sur la partie rĂ©seau?

    PostĂ© par . ÉvaluĂ© Ă  0.

    Il n'y aurait pas une erreur sur la partie

    Comment fonctionne le réseau (Game Boy Link) ?

    Cela parle de son, et ressemble grandement Ă  la partie

    Comment fonctionne le son ?

    Merci pour cet article, trÚs intéressant, et chapeau pour le travail de GValiente!

  • # Commentaire supprimĂ©

    PostĂ© par . ÉvaluĂ© Ă  0. DerniĂšre modification le 06 mai 2024 Ă  10:08.

    Ce commentaire a Ă©tĂ© supprimĂ© par l’équipe de modĂ©ration.

Suivre le flux des commentaires

Note : les commentaires appartiennent Ă  celles et ceux qui les ont postĂ©s. Nous n’en sommes pas responsables.