Showing posts with label who am I. Show all posts
Showing posts with label who am I. Show all posts

Thursday, April 24, 2025

"Why am I doing this?"

It's not unusual to ask yourself the question among indiedev. What struck me is that the question was raised this time by someone who's been interviewed by Pix'n'Love and makes games with his son: Dale Coop.

There are moments when I wonder, “Why am I doing all this?” It takes so much time, few people care, and it brings nothing in return. The majority of people don’t even know it exists. Should I just move on to something that makes more sense for my life and family? That’s where I am today 😔 -- Dale Coop

I know that feeling. I relate it to those time where you feel the urge to eat, but nothing you eat seems to quiet it. Because actually, I need to eat something different (sometimes more fruity, sometimes more crunchy, ...) Sometimes gamedev is satisfying, sometimes we need something else.

What tend to make me wonder "why am I ..." is the overall dsgametools approach. 20 years past the introduction of the NintendoDS, and despite my first game on the system is now about 15 years old, none of my relatives have really picked up the tools and start making their own PPP games with them. It is heartwarming to read veteran artist say "your tools are perfect and tailored to your needs", yet

  • basic *EDS tools apparently feel repulsive to friends and nephew and will be lacking to professionals
  • conversion tools are so tricky to use, you'd better consider them inexistant
  • I've got nice IRL chat sessions with my son about the game design overall, but pencil drawing is none of his hobbies so I'm left with all the job anyway
  • mixing script and C++ code in the engine doesn't feel that useful when I'm the only developer anyway. It makes many debugging sessions more complicated that they should because you can't really single-step the GobExpressions

I've got something running, but it is far from perfect and it gives me the feeling that I've made my own life overcomplicated. Nobody would use scripted state machines in a platformer. Or if you really want editable behaviour, you'd go for something like Fury of the Furries

Nobody ?

Well, I've encountered some github project to decompile the original Rayman title on PSX. I was looking for the code of that tricky-to-beat bandlands bug, and I got intrigued by some of the GO_SPEED, GO_LEFT, etc. you could find in the "top" function DO_MIT_COMMAND. No reference to that anywhere else in the codebase. I was also puzzled by the "skipToLabel();" calls. Digging through references, I end up with just one big "load" function filling all the commands together with other loads for the level... So they're not just some data part of the game engine.

I couldn't find anything like "Rayman Level Format" as I hoped, but I found Ray1Map ... the website that pretends to be a Rayman 1 level editor, and that's nearly as good as far as I'm concerned.

And there, we can view the commands for each individual enemy in the game. Some of them will be delivered to per-enemy handler (like LEFT % and RIGHT %), many will affect variables that those handlers can check and manipulate (especially enemy state), but there's also a whole set of flow control instructions for loops, branches, and even subroutine calls. And as you can see, the programs are already quite sophisticated. But that was used, and not only by that game (and its numerous ports), not only for other Rayman games (like the designer kit or the Junior series), but for dozens of unrelated platformers until the GBA era... or so does the Readme.md file suggests.

So well ... let's say that for 32-bit consoles, that approach makes sense, and recreating a game engine that deals with such abstract code at runtime isn't a bad idea. I just need to give myself better tools to address the debugging aspects... like presenting the whole thing as the debugger for a virtual machine that does not exists ?

Friday, November 01, 2024

Le retour du bureau !

Enfin ... Le bloc-prise sur lequel mon bureau devait être branché est enfin réparé. Et c'était une bêtise en plus, au point que je me demande comment j'ai pu ne pas le trouver tout seul.

Difficile de comprendre à quel point ça me fait du bien qu'il revienne se mettre à l'emplacement qui est naturel pour moi, dans l'angle qui est naturel pour moi. Mes p'tites affaires juste là où je veux.

Bon, évidemment j'ai plein de cartons avec des affaires pas-encore-rangées à répartir demain ^^". Et ça en plus des inévitables cartons de ma fée entre deux activités.

Friday, March 27, 2020

covid

Hello there. If you're not an alien archeologist hunting for what happened to humanity over what they called the 21st century, chances are that this post can be skipped. If you are, and if all but the archive of this blog has been damaged beyond recognition, here is what you need to know.

We used to be fighting against microscopic entities we call 'virus' that lack the proper material to 'live', but can self-replicate if they break through the defense of larger CHON entities like use, humans. Most of those virus either don't understand how to break through our defense (or use our biological factories) or are well-known adversaries against which our bodies and medical staff have well-established weaponry. But from time to time, one such virus usually targetting another mammal species encounters a random mutation that suddenly makes us a potential target. It had happened over the '80s with AIDS, and it happened again this year with COVID19.

I've spent much more time than usual checking the broadcast news for updates: this virus can propagate from human to human through dropplets we expel while breathing, but it may also survive for up to one work period (well call that 8 hours) on solid surfaces like those we use to manipulate daily objects. We have no cure for it so far (almost 3 months elapsed since it shown up) but we have supplies that may sustain live to give our immunity system time to find a cure of its own and get rid of the virus before we die, exhausted. But we have limited supply for them.

Of course, you could believe that we had reached a level of civilization where we could easily focus our efforts on making more of such devices .. enough to reduce the losses to a marginal amount. I truly hope you'll be right in a few weeks. But so far, this crisis is shedding raw light on all the flaws and failures of our civilisation. All those stupid tussles to remain in position of economical supremacy. All those fake news and who-gets-most-buzz. Some have concentrated industrial facilities in a fairly small area of the planet to maximize their profits, taking advantage of weaker social rules they have there, and we have failed to force to keep significant industrial activity near us.

Meanwhile, our best hope is to slow down the exponential progression of the virus by avoiding to meet too many other humans. We call that a quarantine when it applies to a ship that must wait before releasing passengers, except this time, we're all aboard the ship and we must stay confined within our houses. Some manage to work for their employer under those conditions (including me), others can't. In some country, this puts them in serious trouble. In others (including mine), they can get money from collaborative efforts managed by the government.

We used to take care of our kids for about 1/3rd of a daily light/shadow cycle of our planet (we call "day"), let them sleep for another 3rd and have them taught shared knowledge by professionals in so-called "schools" for the 3rd third. We know have them 24/7. It has been said they wouldn't receive more knowledge to learn meanwhile, but it isn't quite true. We need to supervise that in addition to our daily work. And for most of us, we haven't got robotic assistance to house management. At best some of the tasks are mechanized. It's manageable, but sufficienly disturbing so that I have only made a single ammendment to my hobby-project over the last month.

I know I used to make a special release on March 24th for my birthday. I'm afraid I couldn't arrange such a thing this time.

I believe we can sort it out, I don't know whether we'll collectively be smart enough to make it be the very last time we're shocked by such a little thing.

Tuesday, August 27, 2019

The last Inoxcrom

Ami du futur, archéologue, passant d'un soir, écoute et apprends. En 2000, nous étions capables de faire des stylo-billes parfaits: les Sierra Inoxcrom Fine. Ces bics avaient une finesse d'écriture incomparable, leur bille toujours prête à fonctionner impeccablement dès le premier traît - et même après avoir passé plusieures années ignorés dans un pot à crayons. Ils ne demandaient pas de forcer sur le papier et fonctionnaient aussi bien sur papier très absorbant que sur papier quasi-glacé. Cerise sur le gâteau, leur bleu n'était ni trop pâle ni trop contrasté.

J'ai écrit mon TFE, débuggué mon kernel pendant 5 ans, corrigé les épreuves de ma thèse et tous mes articles avec ces bics. Puis un jour, plus moyen d'en trouver nulle part. Et quand j'ai fini par essayer d'en télécharger sur Internet, la déception fut encore plus cruelle: la société a fait faillite en 2009. Ils ne reste que quelques lots dans des pays éloignés sans même la possibilité de les commander depuis l'Europe occidentale.

Pendant des années, je lui ai cherché un remplaçant. Je commence à apprécier les 'pilot frixion 0.5', mais ils n'ont pas la même vitesse de séchage et de tout-terrain qui me permettait de faire instantanément des diagrammes UML. Et je n'essaierais sûrement pas de les utiliser pour écrire entre les lignes d'un article prêt-à-imprimer.

Au delà du côté nostalgique et de mon incapacité à entrer dans une ère du tout-numérique, je trouve regrettable que ce savoir ait été perdu, qu'il n'y ait plus dans nos papetteries que du matériel de seconde zone et que les distributeurs ne s'en préoccupent même pas, puisque pour la plupart ils ne sont plus papetiers, mais vendeu·rs·ses-réassortisseu·rs·ses, ou gestionnaires de stock H/F.

Voilà donc. Je comprends qu'il soit ridicule de faire tout un papier d'un sujet si banal, mais il reste un espoir. Après 10 ans (dont les 3 derniers sans aucun inoxcrom), j'en ai finalement retrouvé un bleu chez mes parents. Il fonctionne impeccablement. Je l'ai juste relogé dans un corps vert parce que j'avais la fâcheuse tendance à les mordiller pendant que je cherchais mes bugs et que l'arrière de son corps d'origine n'a pas tenu le coup.

Friday, December 28, 2018

How to choose the best cat

There is a post on Winter Mute's blog that really feels like it's been written for me. It is about people who build up their own solutions to problems that are researched to death and will stick to them even when being told that better solutions exist, whatever the drawbacks of their current solution. Somehow, it is not that far from the "not invented here" syndrom, explained from the point of view of someone who's been working hard to promote a unified way of doing things.

If I think about it, the very fact that I'm using a Nintendo DS to make games in 2018 feels like using a cat to clean up windows. I've been asked why not doing it with construct 2 quite a number of times, and people who know me would likely tell you that "oh, but he likes doing it for DS so much..." . I did have a look at a few construct 2 tutos, but they never made me feel like I'd love to do that instead of what I'm doing.

I've been asked too why I wouldn't buy a wacom tablet and save my assets as .png files. Granted, I could follow some online tutorials and grow some knowledge about some tools really used in the gaming industry. Yet, I insist on updating my sprite editor and yes, if someone insist that l should really try ASEsprite or something alike, I'm gonna be quite sceptical and likely argue that it's gonna be complicated. (like having to install Windows or Steam first, having to ensure I have a good mouse or be next to my PC to do pixel art, etc.)

I'm afraid it's not just about programming ...
And apparently, yes, I could be using MaxMod -- the cross-platform sound library shipped by devkitpro -- instead of the unpopular libNTXM with all those odd extensions I've been adding over the years. Possibly wintermute could have put something like "oh, but you know, I'm no professional window cleaner. I'm mostly doing this on my spare time" in his rant, and it would look even more like myself. I don't really have any excuse for this one. It's just that I've been investing time to master the code in libNTXM. It feels a bit like it's mine now. I feel home with it and I'm reluctant to leave that home and move to somewhat uncharted territories.

I know there is one thing for which I do not want to make compromises, and that's the quality of the end result. Be it a hobby or not, I do not want the game to feel half-baked. But when it comes to picking either library, using design patterns or learning new tools... well, I don't want anybody to feel offended or sad. But yeah, I'm doing that after my work hours. After my clean-the-mess hours, because aside all the amazing things I do at work, I still wonder if the game ideas I have would work great. Because there was something about C64 programming I loved.

None of this make Wintermute any less right that buckets and mops are better tool to clean windows, of course.

Saturday, October 27, 2018

1 heure par jour

C'est en gros le temps que je peux encore consacrer au développement homebrew ces temps-ci, avec les déplacements supplémentaires pour les activités des enfants et l'entretien minimum de la maison. Une heure ou je réouvre mon vieux laptop "grizzly" de 2007 qui surchauffe et s'éteint quand on regarde plus de 15 minutes de vidéo youtube en plein écran, qui a besoin d'être sur secteur à chaque cycle d'horloge mais qui offre le confort d'un écran 1680x1050 et d'un clavier avec le bloc "insert/home/pgup/del/end/pgdn" identique à un clavier classique qui s'est révélé plus important qu'un pad numérique.

Une heure par jour pour ajouter une petite brique par-ci par-là. Ou pour constater que ce que j'ai planifié à coup de tablette-à-encre-électronique pendant les creux où j'attends qu'*deline ait fini ses activités ne va pas se combiner avec les autres composants.

One hour a day...this is more or less how much homebrew development I can afford these days with extra trips for kids activities and house maintenance. One hour with my 2007 "grizzly" laptop (the one overheating on youtube videos, but featuring a comfortable 1680x1050 screen and complete keyboard). That just allow me to put a brick here, a line there or check whether what has been planned on e-ink while my daughter is training could work together with what already exists. Even trying to add 30 minutes of blogging is not sustainable for me.

When I was working at the university, I could easily afford 20-30 minutes of lunch time to try a few things, especially thanks to easy SSH connection between home and office. But then I was doing frequent walk or bike as part of my "commute". With kids to pick up or drop, exercise time has lowered to dangerous levels if I'm not at least having a walk over lunch.

Si j'essaie d'ajouter une demie-heure supplémentaire par-derrière pour blogger des micro-succès, je ne tiens pas la distance...

A l'unif, je prenais facilement une demie-heure sur mon temps de midi pour essayer un truc ou l'autre, entre autres grâce à la connexion SSH quasi-automatique entre le PC du bureau et celui à la maison. Mais je faisais régulièrement les trajets en basket+bus, voire à vélo. Avec les loupiots à déposer, je ne marche quasiment plus dehors en semaine à moins de le faire sur le temps de midi. Et moi, si je ne marche pas, je disjoncte. Donc je marche. Tant pis pour les lignes de code homebrew que j'aurais pu mettre (ou les traductions de post) pendant ce moment-là.

Monday, April 24, 2017

Round 2 (P.Y. vs. PypeBros)

Allez, je prends une petite demie-heure pour répertorier les questions et les posts qui me viennent en tête quand j'écoute la deuxième partie de l'interview avec P-Y.

01% - faire le jeu auquel on rêve de jouer ? 00:20 - another world - prince of persia - titus - rayman
15% - priorité au plaisir de créer ? 03:13
        - rpg essentialiste
30% - l'évolution dans le rpg ? 06:20 - (mario rpg) (modding/remake de keen)
40% - juste un niveau ? construct 2 ? 08:20 - (badman2/3) - quel je choisir ?
50% - les jeux homebrew (portage/demo/jeu simple-mais-complet) 10:45 - un seul niveau (bilou basic) - l'anniversaire - façon pacman : apple assault
80% - le curseur de difficulté 16:43 - rien que normal - easy-normal-hard dans keen

Somethen, I met a phd student who's interested in understanding why people make video games on their spare time. This is part 2 of 3 of an interview, in French, addressing mostly "are you making for making or making for players" and "how about people that are fine with one-level demos ?".

Friday, April 14, 2017

L'interview avec P-Y.

Il y a un mois ou deux, j'ai eu le plaisir de répondre à l'interview de P-Y, un doctorant qui s'intéresse tout particulièrement aux motivations des développeurs de jeux amateur et hobbyistes. Plus ou moins trois heures de questions-réponses que je vais un peu indexer, histoire peut-être d'en faire une vidéo illustrée par des extraits de blog ? Parce que vous vous en doutez, quand je raconte tout ça, j'ai des bouts de mon blog en tête, bien sûr.

Voilà donc pour la première heure

00% -- Comment en es-tu venu à vouloir faire des jeux ?
09% -- La première fois où tu t'es dit "j'ai envie de faire un jeu vidéo" ? (05:55) -- c64 -- calimero
18% -- Si vous aviez eu la super-nintendo à la maison, vous n'auriez pas pu faire de jeu sur SuperNES -- tiled -- hardware
32% -- Le lien entre créer et continuer à jouer. (20:00)
38% -- L'analyse des jeux comme prolongement du jeu (23:00) -- critical link -- rpg -- mechanics -- dangerous -- mario
47% -- Il y a des amateurs de jeu vidéo comme il y a des cinéphiles ? (28:50)
52% -- une couleur chaude pour les sauts difficile, une couleur froide pour les sauts faciles. (31:59)
54% -- le platformer comme de la lecture à vue (33:07) -- mario
59% -- Guitar Hero n'est pas un jeu, c'est un concours ; Manic Miner est un puzzle (si tu lui mets les vies infinies) (36:00) -- beyond-blogosphere -- do-you-sass-zx-willy
76% -- Quand tu fais un jeu, est-ce que tu cherches à exprimer quelque-chose ? (46:22)
81% -- L'appropriation, l'expression des mécaniques appréciées dans la création. (49:00)
85% -- Comment a disparu l'envie de piéger le joueur ? (52:15) -- rayman -- badman
94% -- Amateur = je le fais pour moi ? (57:00) -- feedback

PS: oui, l'environnement était un peu bruyant. A refaire, on ne s'installera plus dans une cafétaria.

Wednesday, March 15, 2017

Et pourquoi pas Construct 2 ?

C'est un aspect qui surprend: non content de faire mon jeu, je fais aussi les outils pour mon jeu, plutôt que d'utiliser un de ces nombreux game-makers disponibles aujourd'hui. Disons par exemple Construct 2.
Je me suis donc un peu documenté et l'outil à l'air de permettre des choses un peu sophistiquées telles que le koopa-troopa, à la fois ennemi et arme contre les ennemis.

Je trouve par contre désagréable que le jeu soit obligatoirement décrit par la succession d'éditions qui ont conduit à sa construction. C'est le problème général des makers type "click-and-play", où il n'y a au final pas moyen d'organiser, réutiliser, décomposer et recomposer un nouveau jeu à partir d'anciens éléments. Il y a bien une représentation texte (xml) de la logique du jeu, mais on reste "verrouillé" par le fabricant de construct, dépositaire des composants de base. Me colletiner un gros composant "Platform" qui fait 'tout ce que le vendeur a jugé bien pour un personnage de jeu de plate-forme' et devoir ruser à partir de là ? bof ... Que le moteur de jeu soit open-source et extensible est donc évidemment une priorité pour moi. Hors de question de retomber dans le travers du Game-Maker RSD dont les jeux se retrouvent interdit de diffusion à plus de 10 exemplaires, ou incapables d'utiliser des musiques originales.





Friday, June 10, 2016

Mon nouveau bureau

Activité "team building" au bureau ... il fallait décorer nos locaux. Juste quand ma mère m'annonce avoir retrouvé un sac de vieilles boîtes en carton et que ma fée a fini de ranger sa cisaille à papier...

J'avais envie d'un petit quelque-chose de labyrinthique, finalement, les boîtes LEGO des années '90 s'y prètent assez bien. J'ai bricolé ça petit à petit. Au fur et à mesure que ça avançait je devenais un peu plus fier de mon idée et du résultat. A la fin, j'avais envie que tout le monde vienne regarder "mon oeuvre". Le boss a apprécié. Il dit aussi "qu'il aime beaucoup mes petits dessins" (j'ai agraffé des originaux du Bilou's Book sur le mur d'en face), et du coup j'ai pris conscience d'un truc fondamental pour moi.

Voilà pourquoi je dessine. Voilà pourquoi je bloggue, pourquoi je fais mon p'tit jeu vidéo année après année. Parce que depuis que je suis tout gamin j'ai le sentiment d'avoir de la valeur aux yeux des autres quand ils apprécient quelque-chose que j'ai réalisé. Et bien sûr, plus la personne est importante pour moi, plus son appréciation de mon travail compte. Et quand je pars de forum en forum pour annoncer la nouvelle version de "School Rush", ce n'est finalement pas différent de quand je descendais, tout excité, les escaliers avec mon robot-LEGO-qui-se-transforme-en-camion pour le montrer à mon oncle où à un collègue de mon père.

J'imagine que ça explique bien des choses.

Thursday, August 27, 2015

The song of Times.

We had grown up. We used to be 30-years-old young men with plenty of money available and some leisure time in the evening. They knew it. They converted most of our kid's toys into full-length blockbusters, no matter how ridiculous that would be. We used to have time to blog about the games we play(ed), the music we discovered, the ridiculous blockbusters we watched and which of our 8/16-bit processing device we dusted off.

We have grown up further. They are following, and more importantly, we are overwhelmed with kids' bed times, cleaning up all the things, planning the next evolution of the house, car, whatever. Who among us will play any of the Ludum Dare entries rather than just watching them on Youtube while swapping dishes out of the dishwasher.


Il me reste encore des amis. Dans toute l'agitation liée aux enfants qui grandissent, je ne les vois plus autant qu'au début de mes 30 ans. Leurs commentaires par rapport à mes petits Bilous se sont fait rarissime, et je ne peux pas vraiment leur en vouloir. Je me rends compte que je m'y prends mal pour faire la "promotion" de ce qui se passe encore ici. Il y a bien une page facebook mais je ne suis pas très doué pour la rendre vivante.

J'aurais bien passé la main à un pote qui aurait jeté un oeil ici de temps à autre et qui aurait fait les "public relations". Mais nous sommes sans doutes tous autant les uns que les autres débordés de responsabilités, avec si peu de temps pour tester un nouveau .nds (voire m'en réclamer un si le dernier date d'il y a un mois), faire des vidéos de présentations qui soit d'un bon niveau, être le conservateur du Musée de Bilou...

Tuesday, May 19, 2015

Life-changing books [3/3]

1998. Bilou devient la cerise sur le gateau du projet "Ultimate Game Maker". Pour le réaliser, j'ai attaqué très sérieusement la lecture des documents (et les sources) de TRAN sur le mode protégé du 80386, les moyens de passer en mode "unreal" (code 16 bits avec données 32 bits) et ce genre de choses en ligne droite de la démoscène PC.

Many game development studios faced a hard time switching to 2D to 3D at the end of the 90's. Things were quite troublesome for my little self too. I had at last access to massive knowledge about VESA, sound cards and newer tools such as DJGPP compiler and early mikmod player source code ... but it was clear 320x200 MS-DOS games were gone for good. My quest for an improved Game-Maker software turned into a quest for a better operating system to run both game engines and game development tools. Filesystems that would make sharing of samples across a large bank of tracked songs trivial, etc. The cornerstone book for that shift is Andrew Tanenbaum's book on operating system, found somewhere in the university's library, and it will stay at my home, studied dailynightly as the Clicker 32 operating system project shaped up.

Je tombe ensuite sur un bouquin à la bibliothèque universitaire qui présente les structures de système d'exploitations avec environ 2 ans d'avance sur la matière dans mon cursus. Pendant à peu près 8 mois, le bouquin sera emprunté presqu'en permanence, et je remplis des carnets entiers de notes de lectures, d'idées pour aller au-delà des techniques habituelles avec l'idée de construire un système idéal où les politiques de gestion de mémoire et de temps CPU peuvent être échangées en temps réel (comprenez, lors du démarrage ou de l'arrêt de Bilou pour revenir au game maker).

Je vais ensuite tomber sur une description assez détaillées de Linux pour me permettre de définir les objectifs avec assez de précision, et identifier les aspects originaux de mon propre design. Un grand nombre des idées de base visent à donner une sensation de programmation Amiga sur une plate-forme multi-threads x86, avec les pilotes de périphériques vus comme des sortes de co-processeurs. Cette quête va m'occuper l'esprit jusqu'à mon travail de fin d'études et au-delà.

A second book, detailing the internals of the Linux system further refined what I did not wanted to have. Like a monolithic system, purely based on function calls. I wanted to give the programmer in the Clicker operating system the feeling to work on a virtual Amiga-like platform, with programmable co-processors for virtual memory, sound mixing and window compositing tasks, where you could hot-swap the process scheduler.

All this started 100% assembly, but that project taught me to use the C language for what it is and to avoid assembly whenever possible. The reason was you are too much bound to what you write. Do you realize there's a mistake in your algorithm ? you'll be to go through registers allocation planning and pipeline optimization once again.


Le projet Clicker sera aussi celui qui me fera lâcher l'assembleur pour chercher à comprendre le véritable fonctionnement du langage C grâce au bouquin de Kernighan & Ritchie. Les algorithmes utilisés pour la gestion de la mémoire deviennent tout simplement trop sophistiqués pour rester écrits en assembleur. Corriger une erreur de conception dans un code de recherche "best fit avec back-tracking" revient à reprendre le design d'une page blanche, re-réfléchir à l'affectation des registres et revoir tous les efforts destinés à assurer un comportement optimal sur le double pipeline du Pentium. C'est tout simplement intenable.

Friday, May 08, 2015

Hi. I'm Bilou.

Salut à tous! C'est un peu la pagaille dans le "moteur de jeu". Permettez que je laisse Bouli s'occuper de tout ça et que je vous raconte un peu comment tout a commencé.

Hi there. It's me, Bilou. Bouli says the "game engine" is wrecked, but since I'm just the pilot here, there's little I can do to help, so why wouldn't we use that time to know each other better ?


On est en 1993. Deux potes se rencontrent à l'école. Ils partagent une passion pour la musique et le désir de créer des jeux vidéos. Le frère de l'un va se retrouver l'interface entre le PC familiale, les idées de gameplay et les conseils de programmation du nouveau mentor pour tenter de donnée vie à tout ça à grand coups de DATA ...

It all started in '93, with two class mates sharing passion for music and video game design that turned friends. One's younger brother will become the idea-to-machine interface to convert all those ideas into a bunch of GOTOs and DATAs to bring the game to live. His handle was 'Pype' so far, and he's our host today.

Pour une raison nébuleuse, le frangin en question. Notre hôte, connu aujourd'hui sous la signature de "Pype" manque d'être rebaptisé "bilou" pendant cet après-midi. Si bien que c'est automatiquement en "BILOU.BAS" que seront sauvés mes premiers pixels sur processeur Intel... Encore quelques heures et le nom de "Bilou" sera définitivement transféré de Pype a ma propre bouille ronde.

But on that very day, he was about to be re-named "Bilou" by the two friends. That nickname was used so much on that afternoon that he used it when it was about to save my very first implementation on PC ... "BILOU.BAS". Hopefully, with a few more hours, *I* turn to be Bilou and he can remain "Pype".

C'est le début de l'âge d'or. Quels que soient les projets qui trottent dans la tête des membres de la toute nouvelle équipe -- PPP Team -- c'est moi, Bilou, qui suis au centre. Bilou Ski, Bilou Karting, Bilou's Adventure, Bilou's Quest, Biloutris. Tout y passe. Les lignes de code se cristallisent ... les démos deviennent jouables.

Somehow, it was the golden era. Whatever game the team dreamt of, I was the star in there. Bilou's adventure, Biloutris, Bilou Ski, Bilou Karting, Bilou's Quest, Bilou's Sky Quest ... name it, you'll have it. Code line piles up and demos start to be playable.

Malheureusement, les outils de développement de l'époque sont loin d'avoir la flexibilité et la convivialité des Unity d'aujourd'hui. On se bat tantôt avec l'espace mémoire, tantôt avec le nombre de couleurs, tantôt avec la puissance de calcul insuffisante... les grands projets piétinent.

But unfortunately, even the compilers that turned "calimero" into an executable will fail on the increased complexity of my world. Every additional colour on the gamefield requires a re-write of the engine and of all the level designed so far. Despite an all-shiny Master Boomer, they struggle to bring background music to the game ... It all looks unfinished to the foreign eye.

Les potes de PPP Team mettent alors la main sur un outil qui va les occuper pendant près de 2 ans: le RSD Game Maker, qui permet de suivre une nouvelle idée de jeu dans la semaine où elle germe... On dessine ses niveaux directement ... on les teste dans l'après-midi. Mais les interactions sont limitées et ce type de gameplay n'est pas pour moi. Mon destin est de sauter sur la tête de chenilles géantes et de me faufiler sous des champignons et des gommes sauteuses... Pas de tirer au lance-flamme sur des tronc rampants.

A few month later, the PPP Team get their hands on another tool that will keep them busy for 2 years: the RSD Game Maker. With a few clicks and some improved understanding of English, they can build a 4-level game in a single afternoon, and a Commander-Keen-sized quest in a couple of months. New heroes appear, pastiche and tributes alongside original characters. But the engine cannot be bent to my signature move of caterpillar-stomping and my world of bouncing mushrooms and switches: it's an engine for flamethrowers, weapon level ups and locks.

Quand j'y repense, je me console en me disant que le game-maker lui-même portait dans ses limites sa propre obsolescence. En 1997, Pype se met en tête d'exploiter ses nouvelles connaissances en Assembleur pour construire un Ultimate Game Maker, haute résolution, son HiFi stéréo, plus de couleurs, des monstres au comportement dignes de Super Mario World ... et la liste s'allonge au fur et à mesure que le jeu vidéo vit sa Grande Mutation de la IIIeme Dimension. Ça tourne à la définition d'un OS complet, qui aurait les bon format de fichier pour tout ... qui serait moins lourd et plus convivial que Windows ... Je me retrouve à jouer le rôle de simple mascotte en attendant mon heure.

But even that was meant to end at some point. In 1997, as the PPP Team is about to split, Pype has gathered some assembly language tools and decide to start designing and building the Ultimate Game Maker, with high definition graphics (that is, 800x600 by then), millions of colours, hi-fi stereo Impulse Tracker modules with up to 32 tracks, parallax scrolling and large sprites with behaviour comparable to Super Mario World ... And the list keeps growing as the video game industry's IIID revolution is re-shaping the platforming genre. And rather of growing bottom-up, all this digs deeper and deeper towards the building of a full operating system kernel that could run either the game, or the development tools... And I'm left being a mere sketch on the logo, even though I'm at the top.


Et puis un jour, un coup de crayon un peu plus affirmer vient me sortir de l'oubli. A court d'idées de griboulliages en attendant un cours de réseaux, Pype se dit "pourquoi pas faire un mini-strip qui raconte le parcours de Bilou".

And then, all of sudden, a line of pencil draws me out of the shadow. Out of T-shirt design ideas while he's waiting for a course to begin, Pype wonders "why not a comic strip that relates Bilou's adventure ?". Old characters get a revamp, New non-playing characters appear, a back story grow up ... and a couple of pages appear on a website -- although it never quite turned out into a web comic. This is the first milestone towards an art blog that will then host some Nintendo DS sprite editor developments before this very blog spawns to bring me back to full activity.

Les anciens personnages se font un lifting. De nouveaux intervenants apparaissent... L'idée plaît. Un mini "web-comic" vient s'ajouter aux réalisations de la branche "demoscene" de PPP Team. Plus tard, ça tournera au blog et sur ce blog, on se dira que, quand-même, ce serait rigolo de se faire un Sprite Editor sur Nintendo DS .. la boucle est bouclée.





Tuesday, April 21, 2015

Salut, vieux.

T'as pas pu t'en empécher, hein ? Tu es encore revenu dans les archives perdues de ton blog pour essayer de te souvenir comment il est possible qu'il y ait eu un "trou" de plusieurs semaines entre la version 0.8 et 0.9 que tu n'as d'ailleurs jamais pris la peine de numéroter d'un petit jeu baptisé "School Rush". Et tu vas nous pondre un article nostalgique sur le thème du visiteur temporel. Forcément.

Eh bien, je vais te rafraîchir la mémoire.

Tu vois, c'est sympa, le développement pour le fun. On code un p'tit bout par ci, un p'tit bout par là. Mais voilà, à force de construire des étages les uns par-dessus les autres, tu t'es retrouvé avec une sorte de tour de Pise qui a terriblement besoin qu'on revoie ses fondations. Il y a trop de choses que tu as perdu de vues, au point que tu t'es retrouvé avec du code redondant ou incohérent. Tu étais bien décidé à ne pas baisser les bras. Le projet en vaut la peine: c'est juste un contretemps. Mais là où tu mettais un point d'honneur à te montrer à toi-même que tu étais capable de relever ce genre de défi quand tu étais chercheur universitaire, tu es maintenant dans un job où ce genre de défi, c'est aussi ton lot quotidien dans les semaines de release.

Alors, la prochaine fois que tu éprouveras du dédain pour ceux qui construisent un jeu dans un moteur "2 minutes au four", rappelle-toi qu'ils font ça exactement pour la raison qui fait que tu compiles avec GCC : pour avoir une base solide sur laquelle s'appuyer.

Maintenant, éteins ton ordinateur et monte te coucher: la journée de demain pourrait bien être pas mal gratinée. Moi, demain, si j'ai un moment de calme, je vais en profiter pour gribouiller un peu et continuer à chercher ce qui me plaît dans les "déviations" que j'aime bien. Ça me changera les idées.

/Toi-même du passé.

Friday, August 10, 2012

H.E.R.B.Y

La mémoire est quelque-chose de curieux, tout de même ... Je cherchais le nom d'un jeu C64 qui m'avait fortement marqué (à défaut d'être bon) parce qu'en dépit de son apparente simplicité je ne parvenais pas à y jouer correctement. Le candidat idéal pour servir de base au nettoyage de labyrinthes que mon frère voulait incorporer dans Space Mission.

Seulement voilà: impossible de retomber sur son nom. Je tape "SHAMUS" dans Google, sachant pertinemment bien que SHAMUS CASE était un autre jeu (je confondais d'ailleurs régulièrement les deux au moment de faire un LOAD ...,8,1) et en voyant les premières images j'ai un flash "ça s'appelait ERBY ou HERBIE ou qqch comme ça ... j'avais voulu réutiliser le nom pour l'extra-terrestre qui devait donner leurs vaisseaux spatiaux aux Jeunes Mécanos". Et effectivement :P

Meet the first video game I wanted to re-make. Because I loved the idea of exploring a maze, finding keys, opening doors and stuff, but the game was just ridiculously difficult with pixel-precise collisions against deathly walls. (yes, that's one of these games where the line between the Legend of Zelda and Bubble and Ghost hadn't been drawn yet).

 Unfortunately, my brother was rather a fan of shamus and the map he drew focused much more of dispatching loads of space spiders and blasting mined walls.

Thursday, June 14, 2012

2012 ... toujours sur DS ?

Du point de vue de dev-fr, le développement sur DS est mort. Point. Peu d'espoir de tirer parti de la DSi, encore moins de la 3DS ... Alors qu'on commence à avoir tout doucement une idée de comment le mode DSi fonctionne, les linkers compatibles se font rares. Presque tous ceux qui avaient du mal à s'en sortir dans les specs de la DS et se concentraient autour de la PALib sont passé sur Androïd ou iPhone, et je ne peux pas vraiment leur en vouloir. Je fête aujourd'hui mes 6 ans de développement sur DS, et j'aimerais franchement pouvoir continuer encore quelques années, par passion pour ce type de hardware.

J'avais espéré pouvoir convertir ma DSi en station de développement une fois lassé de Shantae et Rayman, mais en fait, les producteurs du M3i Zero ont tout simplement décidé d'abandonner leur produit. Sans nouveau F_CORE.DAT pour tenir face au firmware mis à jour par Nintendo, le linker est donc inutilisable sur la console. Et rien n'indique que si je chope un Acekard2i ou qqch du style, il ne finira pas par lui arriver le même soucis. Avec DarkneSs qui est en réparation suite à une mauvaise chute, je dois avouer que ça m'inquiète un rien.

It is an anniversary, so it should be happy day: I've been doing NDS development for 6 years long. But there's little reason to rejoice, unfortunately. For most of the fellows I used to meet at dev-fr forum, NDS development is dead. Newly introduced DSi and 3DS are there, but tricky to use for homebrew development. Linkers to use them are hard to find and need more frequent updates than I'll feel comfortable with. Devers' who were happy to use PALib have migrated to Androïd or iPhone development and I cannot really blame them for it.

Yet, I'd love to keep working with the NDS, which has such great hardware, unmatched by the new devices. That means I'm back from "cool" to "weird" status again. I guess in a few months, I'll be no different from geeks doing retro-dev completing their Genesis/C64/AmstradCPC projects. Most of the people I'm hanging around don't even remember where they store they NDS power supply. Should I migrate to smartphones too ? Given Apple's policies, I'm really not appealed.

Je suis (re?)devenu une sorte d'énigme vivante pour mes contemporains, j'imagine. Dans quelques mois, serai-je vraiment différent de ces geeks illuminés (éclairés?) qui finalisent des projets sur Genesis, Commodore 64 ou Amstrad CPC ? Autour de moi, il n'y a plus grand-monde qui se souvienne précisément où il a rangé le chargeur de sa petite portable (dans le meilleur des cas).

Et pourtant, avec Apple qui possède des politiques du genre "interdiction formelle qu'il soit possible de développer avec votre application ... on veut bien tolérer du LUA, mais c'est tout", je dois bien avouer que les i* et autres *oïd ne me tentent franchement pas.

La bonne nouvelle, c'est que l'activité persiste sur gbadev.org ... j'y croise des gens qui s'intéressent à ce que je fais, et ça, c'est sympa ^_^

edit: à essayer dans les dernières découvertes:
  • GravityDuck, http://www.nintendomax.com/viewtopic.php?t=14393&p=37082#p37082
  • Ice Slider, http://www.nintendomax.com/viewtopic.php?t=14391&p=37080#p37080
  • waikamu dare slides, http://disjointedstudio.blogspot.com/2010/12/welcome.html

Wednesday, September 07, 2011

Pourquoi l'éditeur d'animations ? ...

Souvenez-vous: on est en janvier, je viens de faire une release des sources de Apple Assault, je me suis un peu pris la tête avec les responsables de devkitpro et plutôt que d'attaquer un nouveau mini-jeu, je commence le développement d'un éditeur d'"animations à la rayman". Développement qui aura donc duré 9 mois (mais alors, pas intensif pour un sou, hein ;) avant qu'une version un peu utilisable ne voie le jour. "Ma Perché?" me direz-vous.

Eh bien, c'est qu'en janvier, mon frère s'est rendu compte qu'un p'tit bonhomme, ça grandit vite. "Ce serait chouette de refaire mimi pour eux, Pype", dit-il, "et si on veut qu'ils y jouent tant qu'ils trouvent ça rigolo, il va falloir s'y mettre.

Mimi ... "mimi la fourmi", alias "mimi à la campagne" ... un jeu C64 réalisé par 2 québecquois et distribué par Logidisque qui avait fini dans le rayon du GB, puis dans le caddie de mon paternel. Un petit écran bucolique habité par une petite fourmi. A chaque touche enfoncée, une petite musique et une animation ... de quoi apprendre aux charmantes têtes blondes à reconnaître les lettres du clavier en s'amusant. Ma soeur (4-5 ans à l'époque) y a passé un temps certain. Mon frère et moi, on chipait alors le clavier pour enregistrer des "macros" ... une sorte de mini-histoire en enchaînant (N)uit, (R)eve, (J)our, (P)apillon.

"Mimi la fourmi" was a C64 game that defined a part of our family's childhood. Press a key (e.g. 'N' for 'N'ight) and the little ant will do something on screen such as cutting some flowers or bring a cake to a friend, together with some classical theme played through the SID. Between calimero and the discovery of RSD game-maker, there have been projects to port this little jewel to the PC world during my teenage years. Nothing ever got coded, though.

Since my bros' and I are now parents, the idea popped up to revive the game on the DS. Almost everything is in place, except that there are quite many animations for that game ... too much for classical techniques, but not for modular animations. That's why I've spent the last 9 month on a tool that seems so far away from creating one more Bilou game.



Chouettes souvenirs, donc. A peine avais-je maîtrisé les commandes "draw" et "play" du QBasic que j'envisageais déjà un portage sur PC, qui n'a jamais été vraiment commencé. Mimi la fourmi, une coccinelle qui passe sur l'air de "la cuccaracha", une abeille qui apporte du miel, un -- non, deux -- petits vers ... tout ça pourrait en effet être bien sympathique.

Mais il y a beaucoup d'animations différentes dans le jeu C64. A l'époque 8 bit, ce n'était pas un vrai problème. Une image à l'arrêt, une image assise, une debout ... deux pour la marche dans chaque sens. En monochrome 24x24, les graphismes sont vite règlés. Mais en 256 couleurs sur la DS, à 60 images secondes, je me vois mal faire toutes les images à la base. Or, c'est le genre de petits bonshommes qui passent encore bien en animation modulaire -- qui était prévue pour Bilou depuis le départ, mais pas encore disponible. Alors oui, je me suis mis à créer l'outil nécessaire pour faire tout ça.

Et toi, Piet, t'es prêt avec tes MODs ? T'as téléchargé AnimEDS pour te mettre à l'animation ?

Thursday, March 10, 2011

Life-changing books (2/3)

When I turned 17, it became clear that I couldn't realise all my projects with BASIC alone. I opted for physics/chemics labs rather than computer labs, unfortunately, and the teacher wouldn't let me get a copy of the Turbo Pascal she was using for her courses. "It wouldn't make any sense to me without her teaching" or something alike.

A friend of mine (later known as Parmy in PPP Team) had a copy of A86 -- a 16-bit assembler for dos -- left over a floppy, and a book "Easy Assembly" he never really made sense of. Being from the 8-bit era, "Assembly" meant to me "the language of gods" and "blazing fast execution speed", so I immediately accepted the offer and started studying Intel's instruction set.


Vers 16 ans, je commençais a avoir fait le tour de ce qui peut se faire en BASIC. J'avais (mal?)heureusement préféré les cours de labo physique/chimie l'année précédente, et la prof d'informatique ne voulait pas me faire une copie du Turbo Pascal sous prétexte que je serais incapable de m'en servir sans suivre ses cours. Grmbl. En allant expliquer à un de nos nouveaux amis (que l'on connaîtra plus tard dans PPP Team sous le nom de Parmy) mes techniques graphiques en BASIC, je tombe dans sa bibliothèque sur un bouquin "L'assembleur facile" et une diskette 5'1/4 estampillée "A86". "Je ne m'y suis jamais vraiment mis", me confie-t'il. Pour un enfant de la génération 8-bit comme moi, l'assembleur, c'est comme le langage des dieux. J'emprunte sans hésiter le bouquin et je me mets à potasser le jeu d'instruction des processeurs Intel.


After I showed my uncle my first assembly program (iirc, a password-prompting tool to prevent my sister to mess up with "our" computer), he brought me a box full of low-level C64 stuff, including a copy of "programming the 6502" book, a disassembled and commented dump of the C64 kernal rom, an EEPROM programmer (with no EEPROM provided) and other similar books. SYS 49152 was no longer a mystery to me -- although POKEing machine instructions from a BASIC program wasn't a very sexy way to proceed. It took me time to wrap my brain around the LIFO stack concept ...
I never really "programmed" the 6502 at assembly level, as it was already a decade-old machine, but I must admit the beauty of 6502's instruction set simplicity has been inspiring to many regards... more about that in part 3.

At last, mastering assembly and the Ms-DOS service interrupts allow direct manipulation of any file format, opening up countless possibilities.


Voyant mon premier programme assembleur, mon oncle me propose de reprendre une caisse de documentation technique sur le commodore, dont une copie d'un livre d'introduction à la programmation du 6502 en assembleur -- le processeur du commodore 64. La caisse contient un programmateur d'EEPROM pour faire "de véritables cartouches" façon Rick Dangerous. Je bave. Je prends. Il n'en sortira pas grand-chose, cependant, hormis une meilleure compréhension de cette machine de rêve définitivement désuète et une admiration sans borne pour la simplicité de ces LAY et LAX. Mais n'anticipons pas.

Knowing the assembly language, however, wouldn't be of much use without knowing the hardware that sits around the CPU. A "PC" was still fairly simple by that time: everyone had a VGA-clone video card (super-VGA was only slowly starting to be adopted, and not by game vendors) and a Sound Blaster clone. Both and more were discussed in the "Bible of PC System Programming", a fairly huge book that I borrowed to another friend -- later known as Nowan -- before I got myself a copy of my own. He also let me grab another Sound-blaster related book (ISBN 978-2742901951) from the same editor, which was describing "how to build a 4-track modplayer from scratch -- in Pascal".

Bien sûr, l'assembleur tout seul ne servirait pas à grand-chose sans une meilleure compréhension du hardware du PC. Fort opportunément, c'est approximativement à ce moment qu'un autre ami (connu plus tard sous le pseudo de Nowan) va me préter coup sur coup la bible du PC et le supergrand livre de la SoundBlaster. Me voilà plongé de plus belle dans les documentations techniques, et armé jusqu'aux dents pour attaquer la conception 100% assembleur d'un modplayer -- pardon un S3Mplayer -- qui devra être le coeur de l'Ultimate Game Maker. J'aurai bien un petit jeu réalisé (Crazy Brix) fin '97, qui sera amélioré plus tard pour la Inscene '99, mais UGM restera un tas de papier attendant la réalisation de mon propre OS -- Clicker, une idée de Nowan, à l'origine -- le Windows 95 ne pouvant définitivement pas convenir pour nos projets.

I still had no Pascal compiler by that time, and I was sufficiently confident that, with that knowledge and the S3MINFO.TXT file shipped with my brother's Scream Tracker III, I would be able to run a 8-track Stereo S3M player instead, with 2 tracks dedicated to sound effects and 6 tracks dedicated to background music. I started copying every meaningful bit of information into a smaller draftbook, easier to carry around and not to be returned to a friend by the end of the month ^_^

According to my brother's archive, it took me another 6 month to convert that idea into something capable of replaying some simple modules. I never made it "the corner stone of the ultimate game maker" as I initially intended, but it was the core of Crazy Brix and Out'm'Up, the two awards-winning 100K game at Inscene'99 and Inscene'Y2K, respectively.

Sunday, February 20, 2011

Life-changing books (1/3)

I guess my life would simply not be the same if I haven't had that book in my dad's shelf when I was young. Granted, I had a couple of books about programming, but the "Commodore 64 user's guide" was really a goldmine. Every single aspect of the C64 was covered: multi-track music, video screen layout, memory map and sprites. There were a couple of high-level techniques that I learnt later on (such as bitmap mode or reprogramming characters) in other books, but this one really set the basis on which e.g. Calimero and Space Mission were dreamt.
Sans ce bouquin sur l'étagère de mon père, il y a des chances que ma vie n'aurait pas vraiment été la même. Oh, j'avais bien 2 ou trois autres bouquins de programmation mieux adaptés à mes 8 ans, mais le "guide de l'utilisateur" était purement et simplement une mine d'or. Musique multi-piste sur le SID, fonctionnement de l'écran et des sprites: tout y étais (enfin, me semblait-il), même si j'ai découvert par la suite d'autres techniques telles que la reprogrammation des caractères ... C'est armé de cette brique à reliure à anneaux que je me suis attaqué notamment à Calimero et à Space Mission.

As a result, many of my spare time since then consisted of filling 24x21 grids or trying to depict level using the PETSCII codes (which I used to copy in a small notebook so that I could use it anywhere), which I'd then convert into lines of DATA for POKE calls.
Une bonne partie de mes temps libres (en dehors de la guitare et des LEGOs) aura donc consisté à remplir des grilles de 24x21 carrés ou à construire des niveaux à l'aide d'une copie manuscripte du jeu de caractères PETSCII que je pouvais par la suite convertir en lignes de nombres traîtées par des POKE (écriture directe dans la mémoire de l'ordi depuis le programme BASIC).

When I received my first PC, my uncle gave me an official copy of the "EP basic" (similar although not 100% identical to GWbasic), which I used for many years. It was pretty confusing to me to move to a platform where there wasn't any memory-mapped registers anywhere. The PC memory map didn't contained anything interesting, and everything had to be done with dedicated statements such as DRAW, PLAY, SOUND, etc.

Autant dire que mon premier pas dans le monde du PC m'a complètement perturbé. Exit les memory maps ... pas de registre de coordonnées pour les sprites, mais des commandes PUT et GET ... Pas de registre de timbre ou d'attaque, mais une commande PLAY capable de "jouer" à travers le PC speaker le genre de ligne mélodique de votre tout premier GSM... et écran monochrome. Pas franchement le grand amour. Mais voilà: le PC est présent en permanence alors que le C64 n'est monté que pendant les vacances.

edit: Thanks to Charles Hawn and Warlord, the link to the pdf of the 1st edition is one click away!