mardi, décembre 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 ^^"

dimanche, décembre 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é ^_^

mercredi, décembre 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 ...

mardi, décembre 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.

lundi, décembre 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.

samedi, décembre 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

jeudi, décembre 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 :)

mardi, décembre 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 ;)