[PICO-8] Présentation d'une console virtuelle
Salut à tous! J’ai découvert il y a déjà quelques mois un projet assez farfelu mais intéressant dans le monde du gamedev. Lexaloffle est d’abord connu pour avoir conçu Voxatron, l’un des tous premiers jeux conçus avant tout pour les futurs premiers affichages holographiques ou 3D1 et il a publié dernièrement une alpha pour tous les acheteurs de Voxatron un peu avant la LDJAM de son dernier projet : une console pesudo-retro basé sur du lua, un écran 128*128@16 couleurs et un son 8-bit sur 4 canaux : PICO-8.
PICO-8 est donc une console virtuelle, basé sur du Lua censé s’approcher, à mon sens, de l’expérience des anciens ordinateurs tels que la Commodore 64, l’Amiga, l’Amstrad CPC et bien d’autres2. Je sens d’ici que vous vous demandez bien à quoi ressemble le machin une fois qu’on le lance. C’est bien simple : une ligne de commande. Un shell en mode texte. D’ici, vous pouvez tester les bases du lua, tel que :
A = 6*7
PRINT("A = "..A) ~~PAR DEFAUT, PICO-8 NE SUPPORTE QUE LES MAJUSCULES, FAUDRA VOUS Y FAIRE.
ABC = {x=42}
PRINT(ABC.x."==".ABC["x"])
Mais je suppose que vous voudrez sans doute programmer ou au moins jouer avec les démos du système. Tapez INSTALL_DEMOS
(vous n’avez ni besoin d’écraser Maj ni d’appuyer sur Caps Lock, le programme met automatiquement tout en majuscule) et PICO installera une floppée de programmes d’exemple, accessible au sous-dossier DEMOS
. cd demos
-pardon- CD DEMOS
vous permettra d’accéder au susdit sous-dossier. Ca fonctionne un peu comme un POSIX à ce niveau-là : CD ..
pour revenir au niveau supérieur et CD /
pour un chemin absolu. LOAD NOM_DU_FICHIER
sans l’extension pour charger la démo. RUN
et en avant (Echap pour arrêter un programme)!
Assez joué avec les démos? Okay, une fois sur la CLI, appuyez sur Echap une nouvelle fois. Vous devriez voir une nouvelle interface s’ouvrir : vous venez de lancer l’éditeur de carts (cartouches) de PICO-8. Au choix, vous devriez tomber sur l’éditeur de code, de sprite, de map, de son ou de musiques.
L’éditeur de code ne supporte qu’un “fichier”, qui n’est en fait qu’une zone de la mémoire de la console. 15KB sont dispos sachant qu’un caractère tapé dans la source revient à un octet utilisé. Les bases du Lua sont présentes mais les libraires qui composent la librairie de base d’un interpréteur tel que vous installeriez ne sont pas présentes, je vous suggère de chercher dans la doc quelles fonctions sont dispos pour voir à quoi s’attendre. Je tiens à noter que Lexaloffle a eu la gentillesse de mettre une version récente de l’interpréteur, ainsi, vous aurez droit aux opérateurs += -=
et toute la clique qui s’ensuit. Les opérateurs binaires par contre sont représentés par des fonctions et non des symboles.
Je tiens à noter la présence de l’éditeur de son qui aussi pas mal fichu dans son genre. J’ai facilement réussi à faire des bruitages sonores assez chouettes rien qu’en bidouillant avec les différentes options présentes : volume, type de forme d’onde sonore (comme les squares, les sine ou du bon vieux white noise), hauteur de la note et vitesse de lecture du son. C’est assez cool de tester et on peut ainsi vite avoir de bons résultats. J’ai pas encore testé l’éditeur musical qui utilise ces sons car je suis une tanche au niveau musical mais c’est basé sur un tracker (comme MilkyTracker ou bien Famitracker).
Quoi dire d’autre? L’éditeur de sprites est tel ce dont je m’attendais. Ayant déjà bidouillé avec Petit Computer, c’est une interface semblable qui s’annonce devant vous. On va donc pouvoir avoir les 16 couleurs sur les sprites sans aucune restriction du nombre de couleurs sur un même tile. La palette de couleurs est assez variée même si il est un peu difficile d’avoir des jolis rouges avec ce magenta. :-° Je tiens à noter la présence de flags pour chaque type de sprite que vous pourrez mettre en place. Ces flags sont globaux pour chaque ID, deux sprites du même ID auront toujours les mêmes flags. A vous de savoir comment les paramétrer pour arriver à vos fins.
L’éditeur de map se base donc sur le spritesheet présent dans la cartouche courante. Vous n’aurez droit de modifier qu’une seule map, globale pour toute la cartouche mais qui possède une surface acceptable (128*64). Vous pourrez toujours manipuler cette zone via le code source ($mset$ est la fonction qu’il vous faut) si vous avez besoin de davantage de place/maps. Ah oui, vous n’avez droit qu’à une seule couche de map aussi. Pas de calques ni de background/foreground.
[gallery columns=“2” size=“medium” ids=“650,653,651,652”]
Voilà, je vous ai fait un petit tour des locaux, c’est un programme que j’aime bien depuis que j’ai eu la chance de pouvoir le tester et c’est un petit truc qui vaut le détour. N’hésitez pas à découvrir PICO-8, le Lua ou la programmation avec! C’est toujours fun d’avoir la possibilité de voir un résultat assez vite après quelques lignes de code!
Sur ce, je vous laisse, j’ai un autre projet sur le feu. Du webdev cette fois, j’n’aurais jamais cru que j’en ferais et que j’apprécierais bidouiller de ce côté-ci de la programmation. A plus!
-
En voici un juste ici : http://www.voxiebox.com/ ↩︎
-
Au moins j’aurais cité les trois plus grands, je pense que je vais survivre un mois de plus… Si vous pensiez que les premiers à se martiner dans la guerre des consoles dessus étaient les gens pro-Nintendo et pro-Sega, vous aviez tort… ↩︎