Tuesday, December 27, 2011

branch/newcollide : buggy

Voilà environ 3 mois que j'ai entammé la révision du moteur de collision de Bilou, avec pour objectif de permettre la gestion de blocs, plate-formes et autres. Je n'ai pas avancé très vite, mais le code compile et fait tourner AppleAssault ... enfin, presque. Voyez plutôt ....

3 monthes to get a first prototype of the new collision engine. I haven't been very quick on that, but at last, Apple Assault mostly work again ... well ... sort of. I'll let you judge that.
-- btw, I wonder whether desmume-cli --record-movie would be easier to use than byzanz-record for those posts. Please, allow me to debug that on-line:


# stopped by monster-player collision.
statW0->statF2 on found1 (v0 ~ :0 200 ~ :1)
statW1->statF3 on found1 (v0 ~ :0 200 ~ :1)
Makes the appleman bounce when it hurts Bilou
#hit
state4..7->statH15 on hit0
\\ [wc 1 ? we 0 < &] (256 ~ :1 512 ~ :0 0 :6 x1)
state4..7->statH16 on hit0
\\ [wc 1 ? we 0 >= &] (256 ~ :1 512 :0 0 :6 x1)

The collision halfly works, on the video above: the applemen indeed bounces and the collision is triggered. But Bilou isn't affected. Afaik, that's because something got wrong in the guardian expression (conditions between the square braces) that can no longer be true in the new collision engine. Before we actually take a transition to the "hit-to-left" (H16) or "hit-to-right" (H15) state, one must detect where the collision came from (test on 'we', other dude's variable #14, which holds centrum-to-centrum horizontal distance), and whether it was actually something that hurts (test on 'wc', the other dude's variable that indicates the matching collision bits on both active and passive collisions area). For some reason,
case OP_GETCTX:
if (sp>=STACKSIZE-1) return oops("vCTX");
if (c[1].data==0) return oops("!CTX");
if ((op&0xf)>=0xc) stack[sp++]=xcontext[op&0x3];
else stack[sp++]=c[1].data[op&0xf];
break;

Did return at the oops("!CTX") line. In that case, the expression is never true. Bilou won't ever got hurt. I must be missing something that swaps contexts in the code that manages collisions, at the root. Some gc[2]=gc[0]; on line 1742 could do the trick...

that and some silly boolean inversion in the c[1].data =? NULL condition ^^"

Sunday, December 25, 2011

Plus de dessins ...

Eh bien donc, à défaut de la tablette de mes rêves qui n'existe visiblement pas, voici au moins quelques outils qui vont donner un petit coup de jeune aux croquis sur papier qui me plaisent tant. Trouvaille de ma fée, les "Copic multiliner", avec une précision en-dessous de 0.1mm. Je ne savais même pas qu'une telle chose pouvait exister. De quoi se rapprocher des ombrages au porte-mine affûté :)
Et en complément, des "uni-ball UB-157", avec lesquels j'avais déjà eu l'occasion de faire quelques essais à Bâle, mais que je n'avais jamais retrouvé en magasin jusqu'ici. Visiblement, ma fée, elle, elle a trouvé ^_^

Wednesday, December 21, 2011

One man and his (an)droid

Je me suis arrêté d'abord sur le prix: 90€. Non, pas de 3 ou de 4 devant, juste 90€. C'est bien le système androïd qui tourne sur un processeur ARM à 600MHz, avec 256Mo de RAM et 4Go de stockage interne. Lecteur de carte média ? check. Connectivité Wifi ? check. Evidemment, à ce prix-là, ni 3G, ni téléphone, mais on a quand-même l'écran tactile. L'écran ne fait que 10cm avec une résolution plutôt miteuse (480x272 ... ils ont été chercher ça où ?), mais comme kit de développement, ça place la barre nettement plus bas, et c'est tant mieux.

The iPad is not for me. That's a fact. The more I test "my brother's one", the more I'm comfident with that. Paying +400€ for an Android phone ? well, I don't think so. My little vgmap-themed Siemens C60 does the job so far. But that doesn't mean I don't see any interest in androïd development ... at least that's what I realise when I see in an advertisement magazine an ARM-powered device with WiFi and SD media card for 90€. No kidding. You would barely find an iPhing *stylus* for that price :P. Either that or the digitizing pen from Staedler, with the hope that it would work correctly under Linux.

On y verra plus clair après test en magasin. Sinon, il restera l'Asus Transformer, mais nettement moins abordable ...
D'un autre côté, pour 20€ de plus, on passe à 18cm d'écran (800x480, mpman720) pour une tablette taille A5. On fait des stylets, pour écrans résistifs ? oui. ça, j'aime :)

Mais tout au fond de moi, je crois bien que ce qui me serait le plus utile, vu ma manière de travailler (que ce soit pour le boulot ou le Bilou), c'est cet espèce de bic-numérisateur autonome ... 'faut juste voir si la suite d'outil que Staedler propose avec fonctionne sous Linux :)

Evidemment, si les gusses qui avaient proposé le projet Noteslate avaient effectivement réalisé ce qu'ils promettaient, je ne me poserais pas tant de questions.

Of course, both are pathetic replacement for the missing noteslate on my christmas wish list.


Dernière possibilité, aux alentours de 180€, le e-Reader de Sony (PRS-T1) avec la technologie "e-Ink" annoncée dans la noteslate, wifi et écran tactile. Mais c'est Sony. Les connaissant, ça ne va pas aller sans mal de faire du homebrew là-dessus ... quoi que ...

Tuesday, December 20, 2011

The missing BlockAction

Here's a scan that discusses a missing abstraction in my model so far, to carry on a "thread" on a map location (as compared to a tileset location). I figured out I was missing it when I tried to implement crumbling floors for the "nut's'blots" intermediate project, in june 2010. It remained a draft sketch all that long.

An amusing fact: despite this is still missing from the *model*, there is actually creation of a GameObject derivative (BlockArea) so that you can proceed with evaluation of the "block:on hit" expression ... so all it would require would be to capture this derivative for longer than just a collision. I just realised that while investigating why the new collision system no longer works with interactive blocks...


Un vieux scan de Juin 2010 avec, en Français, le détail des "BlockAction" qui manquent encore à mon modèle de jeu. D'une manière assez amusante, la manière dont les interactions sont gérées vont déjà dans ce sens même s'il n'y a rien au niveau du "gobscript" qui permette d'en exploiter plus largement les possibilités.

A less amusing fact: this was all coded before we had dynamic gob lists, and it's now trying to de-register a Gob from the game engine several times every frame (especially when the interactive block is not de-activated by the collision). That could explain some performance issues observed in early AppleAssault prototypes.

Monday, December 12, 2011

wanted features

There are things I would like to improve in each of my tools. Maybe it's a good time to collect them in one place. Various features I'd like to add to LEDS depend on the ability to display the map at once. I planned a radar widget in a corner of the TilesetWindow, but that's only 64 pixels wide. If I want 1 pixel per tile, that's only 2 screens wide.

To do better, I'll need to fit at least 8x8 tiles per pixel, thus I'll need direct-color rendering to vary the "gray" level to the number of "solid" tiles in an area.

I've already some code that creates a direct-color sprite (SpriteEditor, PaletteWindow, GrayPreview), but I remember I had a hard time making it work. Reading gbatek again wouldn't hurt.


On the other hand, it would be good if I could have a "stencil" feature (as in Deluxe Paint IIe) in SEDS. I realised when packing the new version for Atnas that I had a serious bug with my previous attempt to have it running. The 'quickpal' widget could be used more appropriatedly to build that idea.

Last thing, I'd need some alternate zoom level for the animation editor. Bilou, dumblador, ... they aren't the size of that Mr. Egg. I did a try a few weeks ago, but at some point, the code that enforce that position is at a specific pixel (not a fraction) despite the zoom level wasn't planned to work at other levels. More thouhgts needed.

edit: Oh, well, and of course, there's the revised collision engine, still pending in its branch. Maybe *that* should be the immediate focus ...

edit+: My milestone for the next release of LEDS should be to ensure that it's fun for a middle-aged kid to draw his own level. That may require the ability to "freely draw" an object for which no pixel art exist yet, and to allow that object to be imported in SEDS later.

Saturday, December 10, 2011

The art of Shantae

Prenez votre princesses des 1001 nuits préférée, assurez-vous qu'un djinn lui offre ses pouvoirs histoire de se transformer à volonté et qu'elle sait vous envoyer claquer ses cheveux à la figure sans trop craindre le tour de rein. Rétrécissez-là pour qu'elle ne dépasse pas les 64 pixels de haut, et vous avez un assez bon aperçu de Shantae, l'héroïne qui me garde scotché à ma DSi ces derniers temps.

Il faut dire qu'avec les graphismes de Henk Neiborg et la musique de Jake 'Virt' Kaufman, la demoiselle me faisait déjà de l'oeil quand elle n'était qu'au stade d'esquisse dans les cartons de WayForward en 2008 ... Au point que j'avais fini par désespérer d'y jouer un jour avant que sa sortie ne soit annoncée ... sur le DSiware exclusivement. Un choix que je comprends mieux maintenant que je suis au portes du repaire de Risky après 6h30 de jeu (et 3 donjons uniquement), une distribution en grande surface n'aurait probablement pas valu le coup.

If you own a DSi and enjoy platformers, Shantae: Risky's Revenge is definitely worth 1000 of your dsiware 'points'. No kidding. WayForward studios know where to find pixel and chiptune experts to bring you into an unprecendented experience. Three dungeons only, but connected by a nice overworld for you to explore with hidden treasures here and there that will allow you to upgrade your character at the town's shop. Does it sounds like an RPG instead ? Well, there are definitely some quest-based elements in that little gem as well. More than Mario inspiration, imho.

Côté gameplay, on est clairement dans un jeu de plate-forme, "armes à la main" (pas de rebonds à la Mario, donc), mais à portée réduite (donc, pas à la Megaman non plus). En fait, avec son échoppe du village qui vend de la crème de soin pour cheveux et les pouvoirs magiques à faire grimper au fil du jeu, avec ses boss qui dialoguent et son design narratif, c'est encore à un Zelda que Shantae ressemble le plus, assez paradoxalement. Les phases d'explorations entre 2 donjons sont là, elles aussi, avec des objets ridicules à récupérer pour faire un Cafe-latte à l'oeuf pourri pour les frangins de votre copine la zombie ...

C'est aussi la conception du 1er donjon qui m'a mis dans cet état d'esprit "un zelda dans un jeu de plate-forme". Des jarres à casser pour récupérer des petits coeurs, des fioles vertes pour reprendre de la magie, un parcours tortueux où l'on constate que "rhaa! impossible d'atteindre ce coffre", jusqu'au moment où l'on trouve un autel magique qui donne accès au pouvoir de transformation en petit singe. Et désolé pour les fans de Sailor X, Shantae garde bien tous ses vêtements lors de ses transformations, mais se déhanche sur des pas de danses qui remettent dans l'ambiance "foufi et le tapis magique" ceux dont l'esprit se serait trop égaré du côté d'Hyrule.

I have plans for a "lost temple" zone in Bilou since I've seen TomF's temple level on pixelation. But that's not a environment I'm comfortable, so I also gave Shantae a second run and picked my sketchPad to capture as much knowledge as I could on how it is built up. I hope I'll be able to use that later to create great pixels ...

Alors comme je manque un peu de références pour faire un bon environnement "temple perdu" pour Bilou (inspiré de la 'Maya Zone' proposé il y a longtemps par mon frère pour un autre jeu), je reprends la DSi et le "sketchbook" que mon beau-frère m'a offert l'autre jour et j'analyse les graphismes de mon mieux. Curieux, d'ailleurs, de constater que si l'overworld de Shantae est varié et chatoyant, tous les donjons (et grottes) utilisent plus ou moins les même graphismes, beaucoup plus simples -- rien à voir avec les coups d'essais de Henk en 2008. Mais une savante combinaison de décors chatoyant (dans un donjon, oui, oui) et de variation de teintes feront que le joueur se focalisera sur ce qui est "dans le thème" et ne se rendra compte de ce détail que s'il fait explicitement attention aux graphismes. Et quelle maîtrise. Ici, le buisson pend du plafond, là il est posé sur le sol. Même une salle rectangulaire "toute simple" est rendue graphiquement intéressante par une foule de ruses.

Bref, j'en ai encore une fameuse dose à apprendre et à maîtriser.

And yeah, the game is a bit short, esp. compared to what the GBC version offered

Thursday, December 08, 2011

Ubiart: mission réussie.

La 2D fait un grand retour dans les jeux vidéos. Ce qui a commencé avec les pixels tout anguleux de Cave Story s'est poursuivi dans un style beaucoup plus inédit pour Braid, et confirmé avec une reprise de "Boy & his Blob" (par WayForward ... tiens, tiens ;) tout à fait croustillante et merveilleuse. Le livre-pour-enfants-dont-vous-êtes le héros était plus ou moins né. Par un merveilleux détournement des capacités graphiques de nos consoles modernes, il devient possible de construire des mondes vidéo-ludiques sans jamais avoir à se tracasser du nombre de couleurs, de la résolution, ou d'une quelconque limitation matérielle. En gros: dessinez, c'est gagné.

There was a time were video games were slaves of the third dimension and polygon counts. No game would be seriously considered if it hadn't 360° exploration, jerky textures when approached too close and odd camera decisions (or a secondary direction stick for direct camera control). Hopefully, in 2004, the world realised that a old-fashioned, 2D video game could attract masses as well if, like Cave Story, it had inherent soul that made it interresting to play.

Oui, mais alors, on va pouvoir de nouveau faire des jeux vidéos comme au bon vieux temps ? un graphiste pour les décor, un animateur pour les sprites et un gars qui sait coder convenablement pour lier un peu le tout ... Plus besoin d'une équipe de 40 personne avec trois managers et tout un château pour leur permettre de bosser? On va enfin pouvoir donner libre cours à sa créativité sans devoir d'abord convaincre la moitié de l'équipe qu'on tient le bon bout ?
It took some time for this truth to reach the major videogame studios, but Nintendo got it clearly: New Super Mario Bros used the 3D power of the DS to bring it diversity in moves and greater control over the character, but the gameplay was back to something simple, that can be mastered in a few days, not in months.

And with the Wii edition, platforming rediscovered its true nature: to bring in a fun experience where cooperation amongst player is the key to success.


Sauf erreur de ma part, c'est la le pari de UbiArt, le "kit de développement" derrière la réalisation de Rayman: Origins.

Parce qu'entre temps, même Nintendo s'est remis à la 2D "remasterisée". New Super Mario Bros, Kirby ... Le hard-core gamer peut continuer à se tordre les pouces sur ses manettes bizarres, nous on s'en sort très bien avec nos vieux pads et nos 3 boutons. D'autant que cette vue sur le côté permet bien plus facilement de faire intervenir plusieurs joueurs dans la même pièce. Un argument de poids qui donne au titre un aspect super-convivial. Familial, même. De quoi délier les bourses à l'approche de Noël autour du nouveau phénomène: le jeu-vidéo-de-société.

It was now only a matter of tools that video game could once again become the affair of a small team, where creativity and fun can prevail over technical effects and shaders. Ubisoft built that tool and created Rayman: Origins with roughly 5 people, where the original "Rayman vs. Mr Dark" on PSX ultimately enrolled up to 100 people, artists, coders, animators ... to make something simpler come to life. And not only the world of Rayman: Origins is beautiful. It really feels alife.
Il restait à Michel Ancel un défi à relever: rendre son monde virtuel vivant. Bien plus difficile dans un jeu vidéo que dans un dessin animé, car le joueur peut s'arrêter à tout moment, et ce sera alors à l'environnement du jeu de convaincre qu'on est pas juste devant un joli tableau mais dans un monde. Sans ça, l'immersion tombe -- et l'immersion, c'est un point déterminant pour avoir un jeu réussi. Eh bien, pas de soucis. Par un impressionnant mélange de parallaxe, d'ajustement du niveau de détail, d'animation vectorielle et j'en passe, le défi est relevé. Je n'étais franchement pas un fan du "nouveau look" de Rayman, qui semble avoir subi un croisement avec les blork de Kid Paddle, mais le résultat est là. Amusant, dynamique, de toute beauté ... Je n'ai pas de PS3 et croyez bien que j'attend avec impatience la prochaine invitation de mon frangin ;)
This multiple levels of parallax scrolling with hand-painted hills and grass give a feeling of immersion and environmental freedom that is imho unprecedented, even in Mario 64 and its friends. The action is still almost purely 2D, but you'll never feel like "why the hack can't I pass *next to* this monster rather than fight it". Reason number one is that at some other places, you clearly had some depth around you. The second reason is that it's quite fun to fight monsters here :)

Tuesday, December 06, 2011

SEDS interface revision with Atnas

One of Pixelation forum moderator started investigating tools for pixel-art (essentially game art) on DS/DSi. The only competitors listed against SEDS were actually animation programs (animatee and InchWorm on the DSiware). Pocket Pixies and Smoove are defunct homebrew. Yet, SEDS is still far from being user-friendly.

My main problem with the interface is even with the documentation, I have no idea what anything does and the controls don't respond as I'd expect, in fact at times they seem situational. I think if a little screenspace was dedicated to a tiny toolbox it would help things a lot. Another option is a sort of pop up menu like animanatee does: when you hold a key, in their case it's L, all the options are at your fingertips.

Also, sometimes when I'm fooling around with the tools to try to learn them, I get locked out and cant find my way back to drawing and need to restart. While I pixel I'll only ever have one hand for buttons, so making the left (or right, its usually mirrored in ds tools) dpad (buttons) contain everything I'll need is a plus.
If you want, I could give you a mockup of what sort of thing would be most helpful. SEDS is much more powerful than anything else out there, it's just much harder to use.


My first modification was thus to make sure you can always return to the normal "drawing" mode, by the addition of a "Draw" button on every sub-screens (such as palette screen or animator screen). That should avoid guest to get lost, even though they explore the controls. Pave they way out to the "normal" screen. I hope those colour-reduction buttons will not cause trouble.

SEDS est difficile à prendre en main. Ce n'est plus un scoop. Mais quand c'est un modérateur sur Pixelation qui en fait la remarque alors qu'il cherche un moyen de dessiner des graphismes pour un jeu avec une DS, ça a de quoi me motiver ... et pas qu'un peu. En attendant qu'il me propose un 'mock-up' pour une interface graphique remaniée et réponde à mon questionnaire, j'essaie déjà de résoudre les deux problèmes principaux que j'ai pu identifier en discutant avec lui: permettre à tout moment de recommencer à dessiner et choisir ses outils de dessin sans le secours des boutons ABXY.

Second message I've heard: keep the stylus-holding hand free. I mapped quite a lot of controls on the ABXY buttons, especially on the grid. If one doesn't know too well the drawing options available, it's easy to be confused. The "block", for instance, doesn't immediately draw, but needs two touches for the two extreme corners. Now, the tool you're using is always highlighted, and you can select a tool by just clicking the toolset on the top line.

Now, I still have to work on a way to provide a "menu" for secondary actions. Colour reduction, palette re-ordering and similar actions could be candidates, but I'll have to think which one must really go there to unclutter the UI without making most actions being multi-click.

There are other features I'd like to bring to SEDS, and one of them is free-hand sketching at "real DS resolution" over the "grid", so that you can then do your anti-aliasing or curves rendering with some guide-line.

Anyway. I'm waiting for Atnas' feedback in form of a UI mock-up ... Let's see whether we'll also have SEDS revised for christmas ;)

Wednesday, November 30, 2011

release_name="svn SEDS r" REVISION ;

Once again, I ended up fighting on my DS with a tool (AnimEDS) that has a bug (timeline edition) I'm pretty sure I've addressed weeks ago. Question is: is the DS running the latest version or not ? well, except if I manage to re-create various versions of the software and compare their MD5 with the one on the DS ... hmmm ... unlikely to work with DLDI patching :-/

So I just acted at the source: modified the makefiles so that they extract the revision number from svn info and turn that into a C string I can display from the welcome screen. I won't pretend it's clever: there are sure tons of way to achieve that, 90% of them being largely proof-tested and documented. I just needed one version that works for my own development, so I won't even look at automake or $CVS or whatsoever. A grep|head|sed> oneliner just makes it.


Avec un peu de chance, je ne perdrai plus mon temps, dans la suite du projet sur DS, à tenter de deviner si j'ai bien la dernière version d'un de mes outils sur ma DS quand je repère un bug. Je viens de remodifier les sources de LEDS, SEDS et AnimEDS pour qu'ils annoncent automatiquement la "version svn" qui a servi à les compiler (bon, ça marchera surtout si je fais un commit avant de faire le "make all install" ;). Pas particulièrement propre, sûrement pas original, et même pas repompé d'un truc préexistant. Bricolé en 1/2 heure. Mais je sens que ça va être drôlement utile.

Allez, ciao. Je vous en montre plus dès que j'ai réussi à faire passer mon commit à travers ce firewall à 2 balles.

edit: there's a danger that remains: when I re-build one of the projects, I may miss to re-build libgeds or runme first on that platform, which could lead to some features not to work properly. That just happened with "wfcWindow::restore()" that wasn't called for some odd vtable-linking messy reason.

Tuesday, November 29, 2011

Lake District.

Infolab216h du mat... si j'ai dormi 4 heures sur la nuit, c'est beaucoup. Le lit est une vraie planche, et si mes voisins de paliers ne sont pas franchement bruyants, l'accoustique du bâtiment ne permet pas d'apprécier leurs tentatives de discrétion à leur juste valeur. Je suis en visite dans le district des lacs pour la semaine ... et je sens que ça va être un longue, très longue semaine.

Avec du café et des bananes.

Mais bon, faisons un peu le point. Début de l'année, je me fixais pour objectif de faire une première release publique de l'éditeur de niveau et de passer mes autres outils sous le "nouveau" devkitpro. C'est fait. Je me suis autorisé à faire de nouveaux graphismes pour la School zone, étant donné "qu'un premier jeu a été réalisé avec les graphismes de la green zone". Ils ne sont pas encore au complet (il me manque un décor potable, par exemple, peut-être en transformant la bibliothèque en un vrai campus), mais ils prennent forme. Le prochain jeu d'arcade de Bilou se fera dans la school zone. Ce sera sans doute "deep ink pit", mais il y aura une ou deux "gedsdemo" avant ça, pour tester le comportement des monstres... et m'amuser un peu ^_^

Ce serait peut-êtr bien le moment, tiens, de mettre le couvert avec les monsstrrrres. Un bien grand mot pour Bop, Dumblador et les encriers que ma petite puce nomme maintenant avec excitation. "Tu vas dessiner Bilou, toi?" me demande-t'elle à chaque allumage de ma DS(i) ... et ces derniers jours la réponse était plutôt "non, ma puce, Papa essaie le jeu de quelqu'un d'autre" (Shantae. On en reparlera). Voyons...

  • Bop, l'éponge, pendue à son fil. Ça demande un contrôleur nouveau, capable de gérer ses oscillations. Je me suis déjà amusé à voir comment faire ça avec de "simples" accélérations autour d'un point... sur le papier, ça tient la route, mais il faudra le coder pour voir.
  • "inkjet", l'encrier. Lui, il attendra sans doute que j'ai une version qui compile du nouveau moteur de collision: il est le candidat idéal pour les alignements de Gobs qui rende possible les poussées, transports et autres plate-formes mobiles.
  • Dumblador. Je devrais probablement commencer par là. En plus, c'est le candidat idéal pour faire quelques tests d'animations modulaire, vu que je ne lui ai pas dessiné de pieds. J'aimerais reprendre les pieds de Bilou, mais en rouge. Solution de facilité ? les recoloriser. Solution idéale ? activer enfin le support multi-palettes, puisque la DS supporte en réalité 32 palettes de 256 couleurs (16 pour les tiles et 16 pour les sprites).
Je crois que je vais choisir la facilité pour l'instant. Sinon, on risque fort d'en causer encore à Noël. Or, ce serait plus sympa de faire des essais dans gedsdemo-books, à Noël, non ?

Bon, là-dessus, il est enfin 7h ... je vais aller trainer mes baskets jusqu'au bâtiment où ils servent le petit déj.

Oh, well. Sorry, english-speaking folks. I was just "thinking out loud" to figure out where to move now. Since I'll have to speak english the whole week (travelling), please allow me not to provide a personnal translation this time :P

Sunday, November 27, 2011

Level Editor for DS : 0.1

Nous y voilà enfin: mon éditeur de niveaux disponible au téléchargement, avec les bugs corrigés, même si l'interface reste assez expérimentale. Avec en prime deux tilesets Creative Common pour vos petits tests: "generic.spr" par Surt (CC-BY-SA) et "frogatto-dirt.spr" (CC0) par Guido Bos. Amusez-vous bien, les tifous: la version française du tutoriel est en construction sur le fil "dev-fr".

Huzzah! At last, you've got it. My long-delayed Level Editor for Nintendo DS (LEDS) is at last available for download with some sample tilesets to toy with ^_^. Thanks fly to Surt and Guido Bos for releasing their game art under creative-common license on OpenGameArt.

The software is still a bit rough on the angles, so make sure you've got the tutorial page displayed on some screen when you'll use it for the first time(s)...
and now ...

Go create!


Features that I still wish to see appearing in a future release (check back this post for UI mock-up):
  • [hint] provide a way to change "type of tile" when editing the meta-layer, without requiring on-map display. (we have the whole ABXY buttons disabled in that mode, right ?)
  • flipped tiles that also work in "copy" mode
  • area manipulation (overlays?)
  • map size edition (crop, extend)
  • map sketching (zoomed-out drawing)
  • map radar widget
  • multi-palette support on the BG layer (needs SEDS coordination)
  • [done] more robust monster edition mode.
  • wizard for .cmd file generation
  • use the ARGV protocol to quick-load a map from runMe *at a specific position*.

Sunday, November 20, 2011

LEDS & OpenGameArt ...

Si vous en connaissez pas encore opengameart, c'est bien dommage. Des dizaines de graphismes pour des jeux vidéos offerts à la réutilisation par leurs créateurs, voilà qui devrait éviter de passer par la case "voler les sprites de Mario" à bien des game-makers amateurs.

Comme je recommence à bosser sur mon éditeur de niveaux, la question se pose à nouveau "quels graphismes pour une version démo", histoire que vous puissiez essayer le soft même si le pixel art est totalement obscur pour vous. Eh bien, pourquoi pas ces anciens graphismes du jeu frogatto, justement ?

It looks like you won't get biokid-inspired tiles for the demo first release of LEDS. Neither will you get that 8-bit-restricted tileset for Apple Assault. Why would I push poor/old game art of mine where there's some ready-for-use tilesets on OpenGameArt, hmm ? These old frogatto tiles, for instance, dropped into public domain, would be perfectly fine. With some luck, annoying bugs should be gone by end of the week, and I'll be (at last) able to offer you a level-editor release 0.1 to toy with ^_^.

La question étant réglée, il me reste quand même

  1. à m'arranger pour que la partie du niveau à l'écran ne soit pas perdue quand on quitte le mode "édition des monstres" -> done
  2. à permettre de nommer la map au moment de la sauvegarde -> done
  3. à vider le lave-vaisselle.
  4. à permettre le "flipping" des graphismes dans l'éditeur de map. -> test
  5. à garantir la cohérence du "curseur" sur le tileset. -> done
  6. à empêcher le passage en mode "draw" depuis le "meta-layer" -> done.
edit: fichier converti avec les mêmes options que la "spritesheet" de Badman, l'automne dernier (déjà!).

Saturday, November 19, 2011

Biokid strikes again

Nouvelle journée passé à faire des recherches sur les attaques distribuées au boulot hier, nouvelle insomnie biokidienne cette nuit. Après un parcours ardu entre les fichiers log et les dll compressées, biokid parvient à abaisser les défenses d'un C5-C0 en l'assaillant de 'YAP' plus vites que ses buffers ne le supportent, évitant de justesse les bombes que ce lourdaut lui envoie en guise de défense

It looks like everytime I work on intrusion detection, I end up daydreaming of Biokid while I should be sleeping. No matter how hard I tried to sleep, the little blue dude kept jumping around, shooting at C5-C0 defense bots to stay unnoticed in the system he landed on. Then, in a flash, he broke into the bot's defense, scattering its internal logic and try to gather as many part of that logic as he can before the bot blow up. With all the pieces gathered, he'll be able to copy C5-C0's bombing ability.

Et tout d'un coup, juste avant que l'ennemi ne grille en un "core dump" définitif, un "dash" bien placé permet à Biokid de s'infiltrer au coeur même de ses défenses, éclatant sa logique interne dont il essaie de récupérer rapidement les morceaux ... Il faudra sans doute répéter l'opération sur un ou deux autres bots, mais quand les 16 fragments de C5-C0 auront été récupérés, Biokid pourra alors à son tour utiliser des bombes logiques ... et les C3-C0 actinalgiques n'auront qu'à bien se tenir...

Wednesday, November 16, 2011

Fire Zone

Tout au fond de la Planète Mystérieuse où Bilou et Bouli sont crashés, il y a la "Zone du Feu", alias le "Volcan Terrible", alias la Forge de Vulcain. Inspiré par les étranges stalactites du niveau "manger chez Joé" du premier Rayman, j'imagine une sorte de marmite de lave naturelle ou les dragons-fourchettes et autres chefs enflammés chercheraient à utiliser notre sympathique boule bleue comme épice exotique ...

I'd like to come with something more interesting than a plain "fire zone" for Bilou... something like a giant foundry or ... yeah. A lava-cooking area with pepper-dispenser-shaped stalacmits and fork-headed dragons. Yes, that'd definitely be original ... or maybe the fire level in Rayman Origin is very original, and I've seen it before, but only remember it unconciously and will have to scratch my head to find something else :P

Mais après avoir joué à la démo de Rayman Origins chez mon frère ... on dirait bien que je vais devoir trouver autre chose. Cette fois-ci, j'ai dû clairement subir une influence subliminale d'un screenshot ici où là.

Tuesday, November 15, 2011

You voted for ... both.

Here ends the poll on the school zone aesthetics. Thanks to the 8 readers who participated. I cannot say there is a "clear winner", but globally, the "newer" wood got slight preference as it is more "joyful". But that's for readers alone.

Simultaneously, I got feedback from two graphism artists (including one pixel artist) who didn't exactly "voted" to this poll, and they clearly stated that "the old wood was better, because it looks more like wood". That's something I cannot ignore, so I'm back at world 1-1 : *I* have to make the decision, or to come up with something that would combine the advantages of both. And the picture I just shoot at work might help.


Voilà. Cloture des votes sur un score plutôt mitigé. Si on peut dire qu'une majorité des lecteurs de ce blog ont préféré les nouvelles couleurs, plus vives et plus joyeuses, en revanche, les 2 graphistes qui ont jeté un oeil sont unanimes: l'ancienne version est nettement plus réussie, donnant plus un look "bois". pour ce bois-là, le fond clair est trop gris, et le fond sombre montre trop de contraste -- rien de difficile à ajuster.

Alors je reprends une petite photo du couloir, histoire de me faire un "vrai" raster de bois et de voir si je peux faire une version intermédiaire *aussi* pour le bloc de bois...

Monday, November 14, 2011

meta_buttons_shown=false

Comme je devais tester une imprimante, ce week-end, je me suis imprimé quelques fichiers sources de l'éditeur de niveau, histoire de comprendre d'où vient le comportement erratique des "meta-buttons", cette petite palette en haut à droite de l'image qui permet d'indiquer quelle portion d'un niveau est solide, où sont les pentes, etc. Pour pouvoir éditer les "arènes" d'Apple Assault, je les avais rendus "escamotables", mais c'est loin d'être un succès. Ils donnent l'impression d'être actifs ou non indépendamment du fait qu'ils soient visibles ou non. Malheureusement, le Level Editor est aussi le dernier outil qui n'a pas encore été "porté" pour la nouvelle release du devkitpro. Du boulot en perspective, comme la réactivation de la lecture des répertoires, les nouveaux mécanismes pour initialiser la console, etc.

  • loadNDS_Vram turns into runNdsFile : http://dsgametools.svn.sourceforge.net/viewvc/dsgametools/trunk/SpriteEditor/source/main.cpp?r1=617&r2=824
  • convert to the new console system : http://dsgametools.svn.sourceforge.net/viewvc/dsgametools/trunk/runMe/arm9/source/main.cpp?r1=735&r2=750
at least those two must be done and checked before I can start fixing the huge mess that appeared on the Level Editor user interface when I tried to make the "meta-buttons" a pop-up widget... Yes, LEDS is the latest of my tools that has not received a revision since I switched to "devkitpro 32" ...

edit: done... maybe ?

Tuesday, November 08, 2011

choose your colour


Deux tonalités possibles pour les blocs de bois: l'ancien et le nouveau. Deux tonalités possibles pour l'arrière plan: clair ou sombre. Faites votre choix sur le sondage à droite.

Two available tints for wooden blocks: new (yellow-ish) and old (grey-ish). Two available tints for the background: light or dark. Pick your favourite style using the poll on the right.

Sunday, November 06, 2011

The google, the Bad, and the Ugly



So even Google can fall into "we're too big to be wrong", obviously. Empty space everywhere, reduced reading area, "share" features lost and most ugly-and-depressive user interface I've ever seen. Yes, I even prefer the plain black-and-white of early Apple computers. Do you think that's how you'll convert me to G+ ? How can you hire so many people and just miss the good sense to avoid such horror ? when I happen to click on a "reader" tab now, I just want to close it as soon as possible.

You failed. Insert coin to try again.

On repeind l'école ...

Après pas mal de soirées à effacer les modifications que j'avais faites, j'ai enfin une variante des "blocs de bois" pour l'école qui soit un peu plus colorée que la version de 2007 ... La tentative de "miniature" pour définir une nouvelle palette aura donc porté ses fruits ^_^

Last week, I tried to update the school zone pixels so that foreground and background would look like a common, 3D environment. It sounded a good way to start with colours that worked well as BG in the school zone. It was a flop. The picture was all greyish. I tried something new to solve it: a miniature level (started as a 32x32 bitmap and zoomed to 64x64) where I could do all the colour experiments I wanted, as they had no link with the former spriteset. Then it took me almost all the week to make some decent wooden block with those saturate-and-nicely-mixing colours. I think I finally managed to get something that works. It still needs a bit of anti-aliasing and some more touches here and there, of course.


Thursday, November 03, 2011

Interpolation pour AnimEDS

Je pourrais peut-être bien me remettre à plancher sur AnimEDS avec pour objectif d'offrir une "interpolation des mouvements" un peu plus automatique. Parce que pour l'instant, il faut encore "encoder" toutes les étapes d'animations en positionnant exactement les différents sprites, et quand on veut "réviser" une animation, ça devient vite l'horreur. Or en graphisme, les révisions, c'est plutôt fondamental.

Tracer un déplacement à main levée, ce serait assez simple, tirer k étapes intermédiaires le long des différents déplacements aussi. Chouette. Ce qui m'avait freiné jusqu'ici, c'est que dans ce genre d'approche, il n'y a pas moyen de "freiner" le mouvement, d'avoir un effet "balancier" indispensable pour une animation fluide et réussie ... sauf si je permets de tracer aussi la courbe "k en fonction du temps" ... Il suffisait d'y penser, j'imagine.

Mais n'oublions pas: il lui faudra d'abord un "zoom" pour contrôler la taille du cadre de travail.

Oh, DSi !

Etat quasi-neuf, stock de protège-écran et de stylets de rechange, me voilà capable de faire tourner le "dsiware" pour tester les jeux qui me font de l'oeil depuis un moment. C'est aussi une "mesure de protection" pour pouvoir continuer le développement sur Bilou si jamais l'écran de ma DSlite venait à souffrir prématurément ou qqch comme ça. *deline a fracassé la cartouche de Qwak il y a quelques jours, et c'est un miracle si j'arrive encore à le faire tourner. Vu qu'il est hors de question que je prenne une 3DS dans les conditions actuelles, cette petite occase est plutôt la bienvenue.

I hope I'll be able to give Shantae a try soon. A second hand DSi joins my ARM device family today. That shouldn't mean a lot of changes for Bilou development, but I hope it will mean a longer life to the hobby games I make. The only darker point is that I'm losing a beta tester, but he seemed to be dedicated to sell any way, so ... 900 points to go :P

Sunday, October 30, 2011

PoP C64 2011

Prenez un succès incontournable du jeu vidéo des années '90 (allez, 1989): Prince of Persia. Prenez un briscard de la programmation sur une machine mythique et merveilleuse: MrSid et son C64. Arriva ce qui devait arriver: après la SNES, le PC, l'Amiga, les téléphones Java et l'iPod et la calculatrice HP48, le titre à succès de l'Apple II arrive sur Commodore 64.

Au départ, je pense à une ancienne version qui aurait refait surface, mais non: MrSid refait bel et bien le jeu entre 2008 et 2011 -- chacun son hobby. L'Apple II et le C64 tournent avec le même processeur, le MOS 6502. C'est énorme. Ca signifie qu'en prenant simplement le "binaire" de PoP sur Apple II, une partie du jeu "tournerait" directement sur C64 ... toute la "logique" du jeu, en fait. Les mécanismes graphiques et sonores des deux machines sont totalement différentes, en revanche. Et à relire pour la 3eme fois le peu d'information que je trouve sur le graphisme de l'Apple II, j'aime autant dire que cette différence est importante. La machine de Steve Wozniak travaille essentiellement avec un gros 'framebuffer' (une image bitmap unique, remise à jour à chaque étape du jeu) alors que le C64 a un hardware inspiré des consoles et machine d'arcade de l'époque: caractères reprogrammables et sprites hardware. Le moteur de rendu devra donc être intégralement refait.

Well, if you read English, you can simply head to MrSid's post "Why would anyone want to port Prince of Persia on the C64". I guess he'll explain his reasons and give you crunchy details and videos much better than I could ever do ;)

La tâche à laquelle MrSid s'attelle donc, c'est de reprendre le binaire de la version Apple II, le désassembler et le cartographier. Il s'est évidemment mis en chasse du code source d'origine, qui a été perdu corps et bien ... eh oui, on travaillait sur floppy à l'époque >_<. Ce qui a survécu, en revanche, et que MrSid exploite au maximum, c'est la "documentation" du jeu. Quelques schémas qui expliquent les grandes lignes du moteur graphique, la liste des animations, l'organisation en mémoire des objets, leur position, les animations, et tout ça. Ca fait toute la différence! Au milieu de l'inconnu, il y a maintenant des points de repère qui permettent de comprendre le code parfois curieux de Jordan Mechner. Code-trampoline, liste d'instructions ... Si tout ça vous parle, ne vous en tenez pas à ce que je vous raconte: allez lire le blog dans lequel MrSid raconte en détail sa réalisation étape par étape... vidéos à l'appui.

Au fait, MrSid, c'était aussi le portage de Giana Sister (version C64) et International Karate sur DS. ^_^

(pour le blog Commodore Users Charleroi

Saturday, October 29, 2011

Vieux Bouquins


Selon Helm, il faut que je retravaille mes "vieux bouquins" ... il est peut-être donc temps que je mette en ligne mes images de références trouvées sur flickr, histoire de les avoir plus facilement sous les yeux. (Encore que, en principe, je les avais imprimées :P)

These should be my references for drawing old books in pixel art.

Tuesday, October 25, 2011

Colour Balance ...

J'essaie d'ajuster un peu les couleurs des différents éléments de la "school zone" histoire d'avoir quelque-chose de plus harmonieux que les derniers mock-ups. La difficulté, avec les bruns et les verts, c'est que le moindre faux-pas casse tout. Je suis assez content des teintes sur la gauche de l'image (gimp-power), mais le hic, c'est évidemment que la DS a moins de souplesse de ce côté-là: 5 bits par couleur au lieu de 8, on se retrouve vite avec un écart trop grand ou trop petit entre deux couleurs si on se contente d'essayer de réappliquer les valeurs HSV de l'un à l'autre.

Not so easy to make sure that the different objects fit together well, esp. when lights and colours come into the game. On your left, binders and small wooden blocks with Gimp-revamped colours. On your right, books and larger wood block as they exist right now on the DS. I'd love to have the wood blocks use the same colour, but unfortunately, it turns out that the RGB values fined-tuned in Gimp do not fit the 5-bit-per-color-channel constraint of the DS hardware. Whatever "brainless" conversion I try to apply inevitably ends up with exagerated contrast here or flattened colours there.

I guess I'll have to do something similar to the process through which I revised the green zone's dust background: bring in the desired background colour and some misc. objects, finetune colours on the DS and then rework my rasters accordingly. It's just a pity that SEDS does not provide a way to visualise which colour of the palette is where (on tiles) in palette edition mode >_<


Et pour ne pas changer, il me manque le "petit plus" pour faire des essais facilement avec SEDS, à savoir visualiser dans l'image une couleur choisie sur la palette... Quand j'aurai ajusté ça, il faudra aussi que règle les vieux bugs de mon Level Editor, parce que si pour les maps simples d'Apple Assault, j'avais pu "faire avec", là, c'est un peu la catastrophe. Dès que j'essaie de définir un objet comme solide, j'ai une chance sur deux d'en effacer un autre >_<

Puis il faudra que je permette d'ajuster le niveau de zoom du frame editor d'AnimEDS pour pouvoir travailler sur Bilou, dumblador et les autres qui se sente un peu perdu dans un cadre de 64x64 :P Et puis permettre à SEDS et LEDS d'utiliser les palettes alternatives de la DS, histoire de varier un peu les couleurs des livres sans faire exploser le nombre de tiles pour autant.

edit: it's been 3 evenings I spend trying to adjust colours on the DS, where everything looks "just fine" when viewed at the proper angle. If I really want homogeneity in art, woudln't that be wise to first check that my FG is harmonious against existing background ... like the one of the green zone ? ... imho, it works fairly well, regardless of the actual "tint" of that background. Don't you think ? Now, all I need to do is draw some books and school stuff with those tints :P

Monday, October 24, 2011

Playing Diamond Hollow

A nice chippy music, simple graphics that reminds me of (good) DOS sharewares and nice level design, Diamond Hollow could be a dynamic game created with RSD game-maker if it wasn't for the sophisticated, immediately available weapon upgrade system. You collect diamonds in caves and fight blobs, spiders and some undefined creatures. That's fairly classical, but in video game like in cinema, there are some classics that can't be made wrong.

One thing that really puzzles me is the control system. Am I supposed to control the player with keys and space bar with one hand and aim my fire with the mouse ? That's fair enough in level 1 and 2 with relatively stubborn monsters that don't really attack me and the "autofire" power up. There is no timer in the game (i.e. power up dropped by monsters are permanent: you've got as much time to gather them as you want), so I can just stop in a safe position, move the mouse with the touchpad (yeah, laptop here), and then jump around to shoot the monsters. Leaving the "mouse" untouched means I'll always fire towards the same absolute X position (moving left/right won't change my target) and the same relative Y position (jumping makes change my target). Sure, the game designer wanted that feature and freedom very hard, but allow me to be brutally honest: it's useless. 4-directions firing would have been largely enough, and it would likely have involved the player much more by intense action when risk must be taken rather than doing precision adjustment to shoot plain blobs. When controls are awkward, I will just minimize the risks of getting into trouble. too bad. It really had a cute little something.

Friday, October 21, 2011

wooden pixels

Vous avez remarqué qu'il y avait du bois sur chaque image présentée dans mon post précédent ? Pas un hasard, bien sûr: je cherchais des références pour les étagères du niveau "bibliothèque" ... parce que les "briquettes" du dernier mockup ... bof. Mais où trouver du bois dans un jeu vidéo ? Pas dans la cité des images de Rayman, en tout cas! Tout est en gomme, et tant pis pour ta pomme!

Première pioche: les bâteaux volants de SMB3. Un dégradé assez riche, mais qui reste principalement sur la même teinte (hue=35), sauf pour les extrèmes. Les rondins sont essentiellement un dégradé auquel on rajoute une "texture" en traçant des traîts horizontal de la couleur un cran plus claire dans chaque bande de couleur. Assez réaliste et réussi, mais on est pas du tout à l'échelle qui m'intéresse. Et puis, une étagère n'est pas en rondin, donc les irrégularités ne seront pas identiques.

Etonamment peu de teintes pour le niveau "off da wall" the Coolspot. On pourrait presque transposer directement ces graphismes-là sur NES. Les différents portages de Coolspot (SNES, PC, Amiga) sont très inégaux sur le plan graphique, et je n'ai pas la certitude d'avoir trouvé un screenshot de la version MegaDrive originale (afaik). Saturation surprenament élevée, et des patterns qui font allègrement usage du tramage, ce qui colle plutôt bien avec l'aspect "vieux grenier" souhaité. Une plaie à reproduire, par contre. Sous Master System (la version utilisée sur vgmaps pour en tirer les cartes du jeu), la "planche" d'un étage fait 32 pixels de haut avec un pattern de 32 pixels de large.

Couleurs super-saturées pour Zool -- mais ce n'est pas une surprise: le monde de zool est dans des tonalités systématiquement saturées. Même le fond est parsemé d'objets hétéroclytes qu'on a même pas tenté de rendre visuellement distants en les passant en tons pastels. On est ici à une taille un peu plus petite que celle de Cool Spot avec des "veines" d'un pixel de large, travaillant beaucoup sur l'anti-aliasing (surtout pour le bois plus clair). Un point-clé, c'est la grande régularité de l'espace entre deux veines, de 3 pixels. Sans ça, on a juste des traîts barbouillés dans tous les sens, comme ce que j'ai fait sur la droite :P Pattern de 32x32, de nouveau.

Petit retour à SMB3 ? Il faut dire que les "briques de bois" ont un comportement tellement particulier dans ce jeu (cachant parfois des plumes-tanooki mais nécessitant de les cogner *sur le côté*) que j'ai tendance à croire qu'il y a du bois partout ... en fait, il est plutôt rare ^^"

Ici, pas de "veines" dessinées dans le bois, mais l'impression qu'on voit un morceau de tronc débité dans la longueur, avec les anneaux caractéristiques. L'effet de dégradé obtenu n'est pas ce qu'on a vu de plus esthétique dans le jeu, mais personne n'ira suggérer que ce sont des tablettes de caramel. Pour faire des plates-formes dans les niveaux aquatiques, eh bien, les p'tits gars de chez Nintendo ont simplement répété une "vague" tous les 8 pixels, jusqu'à arriver au bloc "bord droit". Nettement moins crédible (bin oui, c'est supposé être concentrique), mais ça marche quand-même. Par contre, tout ça est (de nouveau) à une échelle qui ne colle pas à celle de Bilou. Rideau.

Et les Rangers du Risque ? eh bien, même technique que pour Zool, mais avec des veines nettement plus courtes et une limite de 3 couleurs par palette (noir, brun clair, et sisi-c'est-pas-du-rouge-c'est-du-brun-foncé). Bien réussi pour l'époque, mais je n'irai pas en faire une référence, ni au niveau des couleurs, ni au niveau des pixels eux-même.