Wednesday, June 13, 2007

Years of Sprite Editor Coding

Oh boy! it's now years i'm busy working on sprite editors. SEDS is certainly not the first one. I probably have half a dozen of sprite editors for DOS. The first ones (the 'regular' sprite editor from JMWS was only controlled through the keyboard)

The first half-usable was "super sprite editor", which --thanks to a book i found in Mr. Beer's library-- could handle the mouse. Only 8 colors were allowed, which wasn't much a problem at that time. Palette editing required the user to encode RGB values. A few built-in features like swap were available, but it was still far from being really usable.

Oh, avec SEDS, je n'en suis pas à mon premier Sprite Editor ... loin de là. Un des premiers à être vraiment utilisable était le "Super Sprite Editor", également mon premier programme à utiliser la souris (grâce à un bouquin trouvé dans la bibliothèque de M. Beer). Seules 8 couleurs étaient disponibles -- ce qui, vu les techniques utilisées par après dans le rendu des sprites -- était loin d'être un problème. La modification de ces couleurs passait par un encodage direct des valeurs RVB.

A côté, la version 1.4 annonçait fièrement (à grand coup d'animation par "palette cycling") "8 blocks in 32 colours, 20x20 pixels". Une petite fonction "copie de bloc" (Shift+C) bien sentie et la possibilité de "retourner" les images (shift+X et shift+Y) étaient ajoutées, mais malgré toutes mes tentatives, je n'ai pas réussi à utiliser plus que les 8 couleurs de base. 'faudra que je replonge dans le code. C'est malgré tout avec cet outil que j'ai fait la plupart des sprites de Bilou's Adventure (version Quickbas, bien sûr).

Super Sprite Editor version 1.4 was proudly announcing "8 blocks in 32 colours 20x20 pixels" in the welcome screeen with funny palette animation. You could basically copy blocks (when prompted "source sprite" and "destination sprite"), but i didn't find out how to use more than 8 colours anyway :P The rest of the interface was basically just the same as Super Sprite Editor. SSEditor2B.bas is its latest incarnation. It has a bit more features and better error handling. I thing that's what's been used to draw Bilou's Adventure sprites.

Its latest incarnation - SSeditor3.bas - is probably the best you can expect from a BASIC program. It features backward compatibilty with the previous versions, edition in 128 colors, easy-click and complete color edition solution. It also has better "compression rate". This is the tool i've been using for the school zone in Bilou's Adventure (basic).

Note that it already uses the convention "left=putpixel, right=getpixel" that i'm still using in SEDS nowadays. I find it more convenient than the typical two-colours setup.

Nettement plus ambitieux, SSeditor3.bas est probablement mon meilleur outil en Basic. Avec une fonction d'import des outils plus anciens, une édition intégrée des palettes de couleurs (avec gestion des dégradés, oui ma bonne dame), et jusqu'à 128 couleurs simultanées, on croyait rêver. Tout ce qu'il lui manquait c'était la possibilité de lire les fichiers disponibles (l'utilisateur est obligé de se souvenir des noms où il n'aura rien du tout).
A noter que c'est mon premier éditeur qui utilise la convention "clic gauche = dessiner, clic droit = lire la couleur", qui est toujours en vigueur dans SEDS, et que je trouve bien plus efficace que le système "FG/BG color" que l'on retrouve p.ex dans The Gimp et dans le sprite editor du Game-Maker.

Another heavily used tool: "Decor Editor Special Bilou" was pain for the fingertips. You navigate on the grid with the arrow keys and fill one pixel xith "enter". Changing to another color required you to hit "C", navigate to the new color and then press "enter" again.

Barely more intuitive than encoding your colors as DATA statements in a dedicated "rendering program".

Enfin, terminons par un des tout premiers "sprite.bas", encore sous le label "JMWS", qui était entièrement contrôlé au clavier. Tout le dessin devait se faire en déplaçant le curseur à l'aide des flèches, et il fallait entrer "C" pour pouvoir avancer dans la palette jusqu'à la couleur suivante. Les dernières versions permettaient aussi de descendre ou remonter d'une ligne dans la palette et se souvenait de la couleur en cours.
Croyez-le ou non, mais toute la forêt de Bilou sous Dos avait été encodée avec cet programme. Les opérations du genre "copier/coller" ou "symétrie verticale" étaient obtenue par des programmes BASIC indépendants :P

J'ai aussi fini par retrouver "blobedit.asm", une tentative de sprite editor complètement en assembleur, mais pour lequel je n'ai apparament plus aucun des fichiers "maya.blb" qui en sortait.

Oh, there also was "blobedit", pure a86 assembler ... 16x16x256 editor which had been used for "nono in maya zone" ... but it looks like i don't have any .blb file anymore on my hdd...

And of course, now, this 'family' is completed by SEDS, the Sprite Editor on DS, that result of a completely new approach, trying to get the best user experience from this unusual hardware : one hand on the D-PAD, the other holding the stylus. No menu or distracting boxes. A handy development tool that you can take along anywhere...

Et bien sûr, la famille compte maintenant aussi SEDS, mon éditeur sur la console DS, d'une conception entièrement nouvelle pour améliorer l'ergonomie du pixel art... une main sur la croix directionelle, un doigt sur le bouton L, le stylet dans l'autre main ... et vous êtes parti! Dans le bus, le métro, au boulot ou au dodo, rien ni personne ne vous empèchera plus jamais de spriter ... sauf peut-être le prof de Latin ^_^

2 comments:

Anonymous said...

et je me souviens du temps ou tu avais pixelizé mes petites "majorettes" et "matchbox" sous ce sprite editor en 8 couleurs !!! pour les faire évoluer dans un circuit, ... lui aussi encoder brut :)

Anonymous said...

Hé ben tu as du t'amuser avec tout ça !
Je dois avoir quelques trucs de QBasic de 1997-98 dans le même genre qui traînent sur mes disques si ça intéresse quelqu'un.