Showing posts with label C64. Show all posts
Showing posts with label C64. Show all posts

Friday, August 08, 2025

ROX'64

This is a piece of history. A screenshot from ROX64, a small lunar lander for C64 (without rotation) where you'd have to shoot at meteors once you've landed before the moon you've landed on starts getting moonquake due to excessive amount of shocks from meteors.

Ce petit screenshot n'a l'air de rien mais il a pour moi la saveur du Chaînon Manquant... cette part d'histoire qu'il faut que je vous raconte: c'est le jeu qui m'a fait passer d'un projet de quizz géographique en texte pur à un projet mêmant PETSCII, sprites et même quelques effets son au SID. Oh, ne vous emballez pas: le jeu que vous voyez là est un titre tout à fait officiel dont je n'ai pas touché un seul byte, mais il était écrit en BASIC, et j'ai donc pu l'imprimer, l'analyser et -- au final -- le bidouiller pour remplacer le module lunaire par un Caliméro.

One interesting aspect of the game was that it was 100% BASIC, meaning you could get and print the listing, study it ... and in my case, modify it so you'd play as Calimero throwing apples to avoid getting squashed. It wasn't much, and I bet nobody would have played it more than I did while proof-testing the thing, but it was the first time I was going beyond a quizz game and actually made something with all chips of the C64. If you think about it, replace the starry sky by some massive mountain, make the asteroid look red and you've got a boss-sort encounter that would have actually fit the theme of the (yet to come Calimero) game's first zone.

Oh and the (original) game was by Jeff Minter, by the way .. the one person who wrote "Revenge of the Mutant Camels"
 

Sunday, September 29, 2024

Herby: the map

And then the idea popped in. Has anybody ever done a speedrun of the C64 game Herby ? And while I'm watching what is supposed to be one, I wonder "doesn't he have any map to do it ? He seems lost all the time. And checking ... I couldn't find any. But I did find a website that offers online play of the game !

Le JDG avait Fantasia et Super Copter pour se prendre la tête quand il était jeune. Moi qui était encore plus jeune, je n'avais même pas ça. Mais j'avais Radar Rat Race, Slamball et ... HERBY. Et il vous faut bien toute la passion d'un fan de labyrinthes pour jouer à un jeu pareil.

  • Les murs vous tuent au moindre contact
  • à chaque salle, il faudra aligner un personnage de 18x20 pixels sur un couloir de 24x24 pixels. Ceux qui disent "oh ça va! c'est large" n'ont jamais joué avec l'image bombée de la télé du salon située aux 1m50 règlementaire avec un joystick d'époque
  • Le premier truc qui ressemble à un trésor plonge la salle dans le noir total
  • Régulièrement on se retrouve dans une salle vide où il suffit d'aller droit devant soi
  • Et pour les autres "trésors", de toute évidence ils ne font absolument rien
  • On ramasse des clés mais on ne voit jamais la moindre porte!

So let's try to get past the unbearable sounds, avoid getting trapped by sliding blocks after 11 rooms (about 2minutes play) and draw a map of where I go. There are "room numbers" in the stats, and yes, that is how you know your position over the 12x10 cells of the maze. And well, collectibles actually *have* an effect, but that will only be shown when the score panel is repainted together with the room when you'll switch to the next room. Needless to say that this kind of detail aged poorly.

I was a bit puzzled that finding keys actually makes the number of keys *decrease* on the score panel. I haven't met any door, but some room actually change shape when you have collected a given key, opening access to more rooms in the maze.

Mais bon, on est là pour tracer une carte, alors allons-y en prenant son temps (au clavier PC, et avec le zoom de l'émulateur, 2 pixels de marge, ça devient correct) et traçons. En partant du principe que faire la course avec un bloc écrabouilleur est une mauvaise stratégie et que puisqu'on a commencé en haut à gauche, la sortie est probablement en bas à droite, donc privilégeons ça tant que possible.

Je n'avais pas un niveau extraordinaire à l'époque, mais je suis sûr que si on avait pris le temps de faire la carte, on aurait fini par comprendre à quoi les clés servaient, qu'elles ouvraient les "portes" à distance, mais juste de mémoire, ce n'est pas le genre de choses qu'on peut remarquer. Et comme on avait droit à 30 minutes de jeu, que mon frère n'aimait pas celui-là, il était rare que j'ai l'occasion d'essayer de trouver la sortie.

So with no clue on where are the doors, which key opens what, random rewards that show up delayed, all this game is lacking to become iconic was a hidden pixel you'd have to hit with 42% to get the true ending. Because spoiler alert: there is no exit to the maze. You complete the game by fulfilling a winning condition. And I'm not event sure it can happen in any room, although it could. And there are bugs that make some room exit towards the surrounding wall of the neighbouring room and so on. I guess only disassembling the program would give us the actual rule. Anyway, my map isn't complete because at some point I managed to pick up a 6th key and end up with 255 more to collect. Please ping me if you decide to complete it.

Et j'y aurais même mis le temps au point de faire la carte de l'entièreté du labyrinthe, je n'aurais toujours pas trouvé. On est ici dans quelque-chose digne d'Aventure(s?) sur Atari ou du jeu mystère de "Video Games" (le roman). Le labyrinthe est sans issue. Pour obtenir un "game over" sans perdre de vie, il faut atteindre les 100%. Enfin, je crois. Et tout ça dans l'équivalent numérique du jeu du fil d'Arianne...

Tuesday, October 19, 2021

Dangerous au magasin.

Premier écran. premier niveau. Un long corridor s'ouvre devant vous. Rien ne bouge. Rien ne brille. Un coup de stick a droite, vous faites quelques pas. Soudain, un bruit derrière vous: un énorme rocher rond vient de tomber sur le sol, et avance vers vous, implacable. Le temps de vous remettre de votre surprise, et vous êtes déjà en-dessous.


Bienvenue dans Rick Dangerous.

On reprend. On avance sans hésiter, On se jette dans le trou au bout du couloir : il n'y a pas grand-chose d'autre à faire. Ah-ça fait demi tour? stick à gauche... trop tard.Vous êtes de nouveau mort. 
On recommence. Avancer tomber, tac-demi-tour, avancer tomber, et là, il faudra des réflexes de jedi pour sortir du creux où se ballade votre premier ennemi (ou probablement quelques vies en plus). Bref, vous avez de la chance si vous atteignez le 2eme écran avant d'être game over.

Moi, je n'avais pas eu cette chance. J'ai posé le stick et je me suis remis au bout de la file pendant que celui derrière moi s'essayait à son tour au jeu. C'est la règle, à la maxithèque. Oh, je pourrais bien essayer d'aller attendre pour Sonic, le jeu qui vient de sortir sur la nouvelle console, mais tous les grands y sont, ou presque. J'en ai pour 45 minutes d'attente minimum. Côté Nintendo, bof. Cette semaine, c'est de nouveau les tortues ninja. Le look est sympa, mais impossible de comprendre ce qu'il faut faire dans le jeu. Je n'arrive même pas à comprendre pourquoi je meurs.

Even if you have never played Rick Dangerous, I could hardly believe you reach this part of the Internet and still ignore it may be one of the earliest implementation of the 'Die and Retry' concept. What may sound strange is how people could have *enjoy* diying because of such impossible to predict traps and yet retry. So let me tell you how we were playing that game back in the day.

Rick Dangerous was not like other C64 games. It was a wonder. A console game for mini-computers. No loading times. No key to press or obscure options to toggle with function keys. If you happened to have the cartridge, you'd just stick it in your computer and plug a joystick in port 1. You'd be ready to play. Of course, none of us had ever owned the cartridge, and because it wasn't a disk, none of us either had a pirate copy of the game. The only place where we could play it was in the supermarkt.

Non, j'aime autant rester ici et regarder par-dessus les épaules pour voir comment les autres s'y prennent après la grosse pierre. Ah ? on peut tirer. Il faut gérer son timing par rapport aux ennemis qui font des va-et-viens. On descend, on descend... Ça va, la 2eme partie à l'air moins méchante, en fait. Mais le niveau a l'air super-long.  Ah ? on peut mettre des bombes, aussi? Et voilà qu'on appelle notre joueur, plus qu'un et c'est de nouveau à moi. Reprendre le stick dans une partie en cours, c'est toujours chaud. La règle implicite c'est que soit on se fait game over rapidement pour pouvoir repartir de l'écran titre avec tout le stock de vie, soit on essaie de profiter de la situation du joueur précédent, mais au risque en cas de game over rapide-mais-pas-tant de s'entendre dire que 'eh mais non, c'est à moi, maintenant'. Ici, il était sur la salle mortelle du bloc fou, et visiblement il ne connait pas encore le truc. 
 
A moi donc, de nouveau. On élimine le premier ennemi. On descend s'occuper du deuxiEh !? il sait nous toucher depuis le bas de l'escalier ? Bon, heureusement il y a un check-point juste avant ce 2eme ennemi. Je l'élimine, je descends l'échelle je ... Mais!? il bouge, lui, maintenant ? Je reprends. Tirer.. Descendre. Tirer. Tirer. Descendre par l'échelle de droite. (ah ouais, avec le lance-flèche je comprends pourquoi), sauter dans le QUOI!? des pics qui sortent du sol au moment où j'atterris ? "ah ouais. 'faut serrer à gauche, là." fait-on dans mon dos. (un sympa, celui-là. Je me réjouis de voir jusqu'où il va).

Back then, the area of the store where you could purchase electronic devices like TVs, HiFis and recently mini-computers, they decided that interactive devices like game consoles and computers would be openly usable by potential customers. Of course, quite quickly, grown-ups thought they had no need to type more PRINT statements on yet another qwerty keyboard, but kids would start to line up for a chance to hold a NES or master system game pad. You'd have one game available per machine, no access to the reset button and so on and couldn't ask for the cartridge to be swapped unless you were grown up.

So you could play until you'd be game over. Then you'd have to hand over the stick to the next in line. But that means while you're waiting for your turn to approach, you can get a clue of what will wait you in areas you haven't explored yet. You won't always learn *everything* about the game, of course, because you might end up taking a slightly different path than those experienced players you've "followed", but it gives die and retry a very different taste, imho.

Mais ça ne suffira pas. Ce n'est pas encore aujourd'hui que je verrai la fameuse chauve-souris qui bloquait mon frère. Je cale sur une sale avec des plate-formes en bois et des ennemis partout. Leur mouvements me déconcerte. Quoi que je fasse, ils finissent par me prendre en tenaille. En plus, quand j'arrive là, je n'ai pratiquement plus de munitions donc je perds presque d'office une vie pour pouvoir refaire le plein.
 
Vous l'aurez compris, regarder jouer les autres était une partie intégrante de l'expérience du jeu à l'époque, mais regarder un bon joueur, c'était aussi risquer de passer à côté de toute une série de pièges qu'il a subtilement évités. Il faudra non seulement apprendre la bonne route, mais aussi la taille des hit-box invisibles et les temps de réactions. Tout ça avec un jeu qui aurait mérité d'être sur une manette NES ou Megadrive pour que les actions soient directes, mais qui doit se contenter d'un stick Atari à 1 bouton avec des combinaisons douteuses comme "haut = saute", "feu + haut = tirer", "avant + feu = coup de baton", "bas + avant = ramper", "feu + bas = bombe". 

Bah, je suis out pour cette fois-ci. Et manque de pot, le "sympa" derrière moi connaissait la manip pour mettre le jeu de voiture également présent sur la cartouche. c'est foutu pour aujourd'hui. Je vais aller voir s'il n'y a pas une nouvelle M.A.S.K. sortie d'une boîte, puis j'irai me lire quelques Scrameustaches.

Retour en 2021. Rick Dangerous est resté un de mes titres-référence. Même si je n'essaierais pas d'en cloner l'esprit, j'apprécie toujours de le reprendre en main. La qualité audio-visuelle du titre était bluffante pour les possesseurs de Commodore plus habitué à un Zorro ou un Boulder Dash, mais je ne suis pas sûr que ça aurait suffi si on avait eu le jeu à la maison (donc 1/2h/j pendant les vacances scolaires uniquement) plutôt que de pouvoir y jouer "en société" au supermarché. Merci, la maxithèque ;)
 

Thursday, April 08, 2021

Retro Game Dev

My brother got me a copy of Derek Morris' book on C64 game development. It is more or less a printed tutorial to his studio-like application that features code editor, resource packer, Commodore emulator and C64 graphic editors. I haven't managed to run that in WINE so far, unfortunately, but reading the book was already quite interesting.

One nice thing is that the games discussed in the book are programmed in assembly language. So we can skip the usual PEEK and POKE things and start straight with the main meal. I'd love to be able to say that the libraries that come with the studio let you focus on your game logic without having to figure out how to pull joystick state and push tiles into graphics memory, but the reality is that it adds a layer of confusion instead of abstraction.

Things like Screen_SetColors or Sprite_SetFrame are understandable and generic enough, but the "particles system" using special background characters to emulate more sprites would have been nice to see discussed in the book. Same goes for a few more key algorithms like map update after something got picked up, played monster collision, and the like.


A défaut de la démoparty espérée pour mes 42 ans, mon frangin m'a dégotté un bouquin sur la programmation de jeux pour C64. Il faut dire qu'entre Wolfling, PowerGlove et Relentless, mon frangin avait eu le temps aussi de cogiter à une adaptation de Spector sur C64 (mais bon, lazycow a finalement remis le couvert avec le chapitre II de Wolfling). J'imagine que ça pourrait être un appel du pied.
Le côté intéressant, c'est que le bouquin ne s'embarasse pas des PEEK/POKE bien connus de ceux qui ont essayé d'aller plus loin que le PETSCII en BASIC: ici, on code en assembleur. Enfin ... d'une certaine façon.
A côté du bouquin, Derek Morris nous propose en effet un "studio" pour windows, avec éditeur de salles, de sprites, de tiles et compagnie et une série de bibliothèques de macros pour pouvoir commencer son petit titre sans devoir se farcir les détails techniques de la programmation hardware de la bête.
C'est sympathique (et plus gamejam-friendly), mais ça transforme aussi une grande partie de la lecture en une sorte de visite-guidée-faites-moi-confiance où ira rarement plus loin avec l'assembleur qu'une petite augmentation du score ou une bidouille de la vitesse, parce que le reste se situe généralement à l'intérieur d'une macro qui n'est pas reprise à l'écran. Pour celui qui est curieux de savoir comment les tirs, les collisions ou les mises à jour de maps sont gérées, bin il faudra ouvrir le .zip parce que ce ne sera pas dans les pages.

Ah, par contre, sorry frangin: la gestion des musiques de fond, c'est aussi réservé au tome 2.

It is also a bit disappointing that the "engine" is only capable of scrolling 1/3rd of the screen, and thus the "platformer" example looks more like a simplified Wonder Boy title than the Great Giane Sisters.
60-fps full-screen scrolling requires page-flipping and interrupts, says the last page. It's a starter kit, in a sense, not a PhD thesis on Wolfling-like guru techniques that would push the limits of the machine. Well, I guess starter kits are good to have too, aren't they?
Now ... maybe for game jams ...Yes, I think that could be a good setup for an 8-bit game jam. 
 
edit: j'étais étonné de voir des macros un peu dans tous les sens dans le bouquin, et en particulier des macros qui font des appels de fonction ... un tweet vient de me faire comprendre pourquoi: sur 6502, on va devoir se souvenir du "protocole" d'appel de chaque fonction, qui n'a rien à envier à celui des appels systèmes MS-DOS. Si on a pas envie de se souvenir "mets la destination dans X, la source dans Y et la longueur du bloc à copier dans l'accumulateur", on peut se faire une macro qui prendra 3 arguments "simples" (disons une constante ou un nom de variable) et qui prépare l'appel à la fonction block_copy. Ce sera plus flagrant encore si on doit accéder à un chip externe avec un protocole du style "écrit le numéro du registre vidéo à l'adresse $8000 puis la valeur en $8001. Recommence ensuite avec la coordonnée Y que tu mettras dans le registre vidéo suivant".
Par contre, suivant le conseil de Mario Nesrock, on garde ses macros dans les sources principales (on ne les planque pas dans un .zip) et on les garde courtes (sinon gare à la taille de sa ROM).

Friday, February 05, 2021

Programming Pitfall Harry

L'aventure racontée par 8-bit show and tell est presque surréaliste: un dévelopeur de jeu qui vous envoie un morceau de son code source comme ça, juste sur demande. Et pas n'importe quel développeur: le créateur de Pitfall!

Pitfall, pour ceux qui n'ont pas vécu ça, c'est ce qui se rapproche le plus du phénomène Super Mario Bros pour les possesseurs de micro-ordinateurs jusqu'à ce que Great Giana Sisters ne devienne facile à trouver.

Je m'attendais à un bouquin/carnet déjà costaud, du coup, en fait, la chose tient sur l'espace de menu de mariage. juste une page US letter pliée en deux, l'extérieur contenant un petit mot du créateur et des illustrations.

C'est un programme a priori typique de la "programmation système" en BASIC C64, avec plein de POKEs pour modifier des registres du contrôleur vidéo et des DATA avec les trucs à y mettre. Le machin bien opaque pour qui n'a pas un bon manuel pour décrypter ce qui se passe. En plus des DATA avec des sprites convertis en décimal, il y a un autre jeu avec du code machine pré-assemblé qu'on va aller POKEr dans un coin de mémoire pour pouvoir l'exécuter. (Là aussi, il y a un bouquin, mais c'est plus chaud).

if you speak English, you're lucky. Because that means you can enjoy the full 8-bit show'n'tell where the story of that 'Programming Pitfall! Harry' leaflet that invited kids of the eighties to type from scratch something that would make the most iconic video game adventurer of the time do a footing on their screen. I mean it. That dude was the early eighties' Lara Croft.

If you've done some C64 programming, the content of the leaflet will be obscure but somewhat familiar. It's a loop POKEing things in memory so that the video chip (VIC-II) can render sprites and some obscure DATA that contain what it takes to get pixels the expected shape. There's something alike in the C64 manual to make your first sprite and I had tweaked a lunar lander BASIC game to feature Calimero instead of the LM back in my 10s.

Au final, on aura 'juste' le personnage Harry qui se promène à l'écran. Ouaip, je vois déjà les blasés du Scratch qui rigolent au fond, mais eh. 1) il est multi-colore. 2) il court (animation) et bouge tout à la fois. 3) il est grand. Rien à voir avec la démo-ballon du manuel C64, hein!

Et surtout, tu fais RUN STOP pour revenir à l'interpréteur BASIC, et le mec, il continue son footing. C'est le Mario-de-l'éditeur-de-Bisquit avec 25 ans d'avance!

En fait, on a pas ici une boucle BASIC qui anime et déplace: c'est un morceau de code machine installé juste avant le code qui fait clignoter le curseur texte qui s'occupe de faire bouger le personnage. Tout ça tenant dans le tampon mémoire prévu pour la lecture des cassette.

Pour se situer, le tape buffer utilisé dans le programme présenté dispose d'à peu près 200 bytes. A côté de ça, l'autre zone mémoire qui est disponible sans toucher au setup habituel pour faire du BASIC fait 4K et se trouve en 0xc000, juste avant les ROMS CHR et KERNEL.

But there's actually more here. You don't have to interrupt the program to return to BASIC interpreter: it does it by itself. And yet, Harry keeps footing on your screen while you can tweak the program or scratch it and run another one. That's because you haven't only POKEd some sprites data: you've also POKEd a small assembler routine that will be invoked ahead of the cursor blinking logic that will move and animate Harry's sprite.

I can only dream of what I'd have done with this if I had been exposed to such a sample when I was a C64 teenager. Think of it: tweak a few locations in memory and you could switch the character's behaviour between jump, idle, run, fall ... Chain a few other routines in a BASIC room-loader with POKEs and you could have a monster patrolling on line 42 while your character is running on another location. And you're free to run your loop checking their positions, computing whether collisions occured and adjust their behaviour if it did.

With some extra LDA and CMP opcodes, maybe the characters under the sprite could be checked and a flag could be set so that the BASIC code would know we've entered a 'FAIL' condition ...

Je ne peux m'empêcher de penser ... et si ... Et si au moment de commencer à travailler sur Logic Labyrinth j'avais eu accès à un petit programme de ce genre qui puisse déplacer un objet de manière quasi-autonome.

On aurait gardé un programme BASIC qui dessinerait la bonne salle et ajouterait quelques POKE pour chainer les uns derrière les autres character_interrupt, puis hshot_interrupt et walking_monster1_interrupt pour que les différents "personnages" de l'écran soient présents.

Ensuite, on aurait eu une boucle qui faisait de son mieux pour tester la position du personnage par rapport aux triggers du niveau et qui aurait fait apparaître ou disparaître certains éléments...

VRAM tricks used by Lazycow
Mais bon, mon seul contact avec le code machine du C64, c'était en 1997, 10 ans trop tard, et tout ce que mon bouquin proposait, c'était de charger un bout de code pour remplacer les caractères ROM par des caractères RAM histoire de pouvoir remplacer le T par un smiley.
Par contre, il faudra que je tire au clair cette histoire de 'VIC bank'. Quand j'ai commencé à écrire des programmes plus grands (pour Space Mission) mélangeant des tableaux de grande DIM(ension) et plus de sprites, je finissais par avoir mon programme qui provoquait des "erreurs systèmes", au point que le listing lui-même n'était plus garanti. Et si c'était simplement parce que j'écrasais des morceaux de listing avec mes POKEs ?


Wednesday, June 25, 2014

Rick Dangerous design documents

J'adore les documents originaux des concepteurs de jeux. Dans un article Pix'n'love, un manuscript sur le tapis, c'est automatiquement des étoiles plein les yeux. Simon Phipps, nous ressort les petits croquis utilisés pour présenter son concept de pastiche d'Indiana Jones à ses collègues ... Et là, je dis ÜberDanke!

The author of Rick Dangerous published some original design documents for his game. Exactly the format I love to discover, with sketches annotated with how-to-play, how-it-works and possible implementation. Within a few pages, we're introduced to the theme (character, locations, motivations) and the structure of the levels. Then you get primary (jump, gun, dynamite) and secondary (stick) mechanics. Thanks a lot

En quelques pages, il nous présente le thème du jeu (le personnage, les emplacements, les objectifs) et la structure des niveaux, puis les mécaniques primaires (sauts, pistolet, dynamite) et secondaire (le baton).

Le côté technique n'est pas en reste:
Simon appuye son concept avec les quelques éléments qui permettront l'intégration d'évènements scriptés qui mettront la mémoire du joueur fortement à contribution par leur caractère imprévisible mais facilement reproductible, qui prennent finalement la forme de "boîte de test" maintenant assez classiques.
Bonne lecture ^_^

edit: these documents and more are now covered in a video Interview with Simon Phipps, where we get advised to start our game with level 2 instead level 1 so that we can revise the difficulty when we'll be done with level 1 and come back to level 2 to polish it... and where we discover that it wasn't the developer's intention to create a game putting that much emphasis on muscle memory (because developers "see the matrix" when testing their game).

Tuesday, July 23, 2013

Games you get Great at.

Back in the 80's, Great Giana Sisters is probably the best game I've played on my C64. If you allow yourself to go beyond the likelihood with Super Mario Bros on NES, you'll discover a challenge that is well-tuned and that appeal you to improve your skills -- a dimension that is imho too much abandoned nowaydays.

that damn'd fish!

The game is designed with no save state, but with "warp blocks" that are invisibles and that will throw you further ahead in the game. This is quite unlike the "warp zone" of SMB1 in that here you have several secrets to discover and to remember. If you fail to activate one on your way, it will turn into a different experience, so the game is not only made speed-run-able, but also diverse in this way.

Je n'ai pas énormément joué à Super Mario Bros, étant gamin. Par contre, j'ai passé un nombre d'heure indécent sur le mario-like Great Giana Sisters. Que ceux qui ont eu la chance de jouer au SMB d'origine ne repoussent pas trop vite ce titre: c'est bien un jeu original et pas un simple clone. Et son challenge est tout à fait digne d'intérêt. Encore aujourd'hui, il nous titille à améliorer notre technique pour arriver à progresser de plus en plus loin dans le jeu.

Giana Sisters est un de ces jeux conçus avant l'introduction des sauvegardes, mais en contrepartie, les développeurs ont caché dans le jeu tout une série de 'point de téléportation' pour nous permettre de prendre quelques raccourcis. Jusqu'à ce qu'on parvienne à activer ces warp-blocks à coup sûr, le jeu devient donc beaucoup plus varié, avec des embranchements de gameplay. 

With repeated re-plays of the game from the start (but usually less than one minute to beat one level), you quickly realise that even with a decent skill level, you'll often fail on the very same jump. Difficulty comes from the need to properly identify hitboxes and manoeuvre your character on tighter timing.

J'ai repris mes tentatives de finir le jeu en 2008, sur le portage Nintendo DS de Mr. Sid. Et ce n'est qu'à ce moment que j'ai réalisé que les "items bizarres' entre les boules de feu à tête chercheuse et le 1-UP offrent chacun un moyen unique de saper certains challenges un peu extrême du jeu. Un saut vers un tonneau enflammé paraît trop difficile ? ce sera un jeu d'enfant avec l'item "goute d'eau" qui rend Giana inifugée.

I started playing back the game with the ambition to beat it without cheating back in late 2008, when Mr. Sid released it as a Nintendo DS homebrew. Only then I realised that the "curious items" between the homing fireballs and the 1-UP offered unique ways to undermine some challenges. Do this jump in level 11 look near-impossible ? Well, if you're wet (raindrop powerup -- which you lose on picking a 1-UP and lacks visual feedback), the fire won't burn you. That makes it a whole lot easier (on the C64, only a game engine bug allowed us to cross that screen).

Ça manque de feedback visuel pour qu'on puisse s'en rendre compte sans youtube et sans wiki, mais c'est particulièrement bien trouvé. Et ayant pris conscience de ça, mon objectif a été révisé: pour avoir une chance de terminer le jeu, il faut d'abord que je parvienne à coup sûr à obtenir la goutte d'eau avant le fatidique niveau 11 et que je la garde jusque là. Ce qui grosso-modo réclame un sans-faute. Si jamais je tombe dans l'eau au saut un peu serré du niveau 4, je perdrai tous mes power-ups et je devrai recommencer à partir du disque de rock. Je n'aurai aucune chance de les faire évoluer à nouveau jusqu'à "goutte d'eau" avant le 11. On est bien loin du design moderne (post-SMW) où les niveaux peuvent être revisités à volonté).

Once I realised that, my challenged changed. If I wanted to get a chance to beat the game, I need to get and hold the raindrop when I'm playing level 11. That essentially means *playing perfectly all the levels before*. If I just fall for that tricky jump in level 4, I'll lose all my power-ups, and I'll never be able to find enough power-up blocks before I reach level 11 again -- esp. since the block just next to my respawn point will be empty >_<. This is something that feels completely alien in a platformer nowadays, where you can almost always revisit at will levels you've beaten once (and thus stock power-ups at will). Then, it turned obvious that I could undermined "that damn'd fish in level 22" if I could "simply" find out how many power-up blocks I need to skip so that I have a "clock" to freeze the fish when I reach that place.

This, friends, was the original Great Giana Sisters, and when my 11-year-old nephew discovered it, he kept playing it for roughly 1 hour and a half, although by then, he hardly managed to beat level 2. Stay tuned for part 2 on "Twisted Dreams (PSN)".

http://critical-gaming.com/blog/2010/12/31/about-that-indie-feel-pt2.html
Likely, if you played Super Mario Bros on NES, most of these "dangerous places" look not so dangerous to you. That's because you've grown up in a game that helps you, not in a game that hates you. When SMB game engine detect that you can't keep jumping because there's something on your path, it doesn't just stop you to your doom: it tries harder, checking whether aligning you on the next tile wouldn't help. This makes the game logic a bit more complex, but it compensates the lack of complex collision system and the crudeness of rectangular hitboxes.

Dans le même ordre d'idées, le "poisson du diable" du niveau 22 devient beaucoup plus simple à passer si j'ai le power-up "réveil" qui gèle sur place tous les monstres pour un moment. Enfin, ça c'est la théorie. Il reste un élément essentiel à rappeler à ceux qui ont surtout joué au titre de Nintendo: ici les coins sont durs. Sauter du couloir-à-diamants jusqu'au par dessus l'eau dans le niveau 4 par exemple, peut sembler cool, mais si votre sprite à le malheur de se cogner ne serait-ce que d'un pixel au coin du mur, il se remettra immédiatement à tomber. SMB, dans ce genre de situation, "poussait" un peu Mario pour contourner le bloc. Au joueur de contre-carrer ça par un virage en l'air s'il était sur un rebord comme montré dans Giana, mais au moins il continue à monter. Le timing de son mouvement n'est pas source de surprises.

Tuesday, February 12, 2013

Swinging Ropes in Pharaohs Return

I love those "dark" places of the Web where you can hear about other people's pet project and see them progressing. I developed a particular sympathy towards Lazycow's "Pharaohs' Return" project, a revival of Pharaohs Curse with state-of-the-art C64 programming.

Il paraît que les forums, c'est la "matière noire" d'Internet. Obscure, insaisissable, insondable. L'antimatière d'un blog/wiki, en somme. Et pourtant, j'adore la façon dont on peut y rencontrer des gens qui ont des intérêts proches des miens. Par exemple, Lazycow nous prépare depuis fin Mai l'exhumation ultime pour "Pharaohs Curse". De nombreuses salles, des couleurs et des décors réalistes, une pléthore d'actions, d'items et des animations à couper le souffle.
Pour sûr, son projet n'a pas à rougir des dernières sorties homebrew sur cette machine telles que Get'em, Mayhem in Monsterland ou Soulless. Superpositions de sprites, reprogrammation à la volée pour doubler le nombre de sprites visibles à l'écran, mélange entre caractères monochrome et multicolores ... tout y est! Même les boss démesurés.

Mixing multicol and monochrome tiles, swapping the color registers on horizontal bands for larger color sets, doing the same with sprites to go way beyond the 8 sprites/screen original limit...  I like it. But what really baffled me was his animation for rope action.

Mais ce qui m'a le plus épaté, c'est cette animation que Lazycow a postée où son explorateur attrape une corde au vol. J'avais toujours classé ce genre de détails dans la catégorie "sympa, mais clairement pas prioritaire". Mais s'il le fait sur C64, je me dois de ne pas être en reste sur la DS, pas vrai ? Grimper aux signets des livres fait partie des éléments de level design que j'avais explorés au moment de reprendre le travail sur Bilou ... Difficile maintenant de me contenter d'un signet rigide même si celà faciliterait le développement.

rope-actionClimbing on ropes wasn't that easy in the original game, and we used to make fun of friends as they were trying to do it with the joystick. Although functionally, the moving rope doesn't bring that much in terms of gameplay (given the limited angle it allows), it's one of those little details that makes a revamp look worth of it and show the love and care that the developer put in it.

When I asked Lazycow whether he had a tutorial on that, he keenly handed me the snippet of his source code that handles the rope action. I noted so far two sub-behaviours: the rope "above" the hanging character simply follows the shortest straight line between the hook and the hero.

for i=1 to heroheight:
    s[i]=i*herodelta/heroheight

The segments below try to align over the preceding segment with delta=s[i-1]-s[i], increasing the segment's speed so that it moves back towards the previous segment, then enforcing "integrity" of the rope by avoiding exagerated offset between segments.

Note that there's a small simplification here, as the rope doesn't shorten as it moves left or right. An alternative would be to assume that sin(x)=x and thus that it shortens by the amount it deviates from the straight vertical line (a fair estimate until you approach x=30°)

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.

Wednesday, January 04, 2012

symbol 240,60,126,255,254,255,126,60,62

Premier passage de Pierrick chez moi, en 1993. Il attrape une feuille au hasard sur mon bureau pour me montrer comment il réalise des personnages sur son Amstrad CPC, à l'aide de la commande "SYMBOL" qui reprogramme les caractères graphiques. La feuille était en réalité le dos du plan du premier niveau de Calimero ... ce petit croquis a donc voyagé dans le temps jusqu'en 2012 ^_^

Heh. That one survived too, on the back of a level map that my brother had with him at school: the bubble-shaped character that Pierrick used as hero for small flip-screen platformers on his CPC. I've long time wished that reprogramming characters on the C64 basic was as easy as SYMBOL x,... but even for sprites, it was a PEEK/POKE nightmare, so almost all my C64 games attempts were merely using PETSCII.

Celà se passe sans doutelégèrement après que mon frère ait dessiné la page d'introduction de "Bubule Warrior", sans doute parce que Pierrick dessine depuis longtemps des personnages tous ronds autour de ses feuilles de cours.

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

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 ?

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!

Thursday, November 18, 2010

open-sourcing apple assault ...

The engine behind apple assault is open source from the start: this is my (modest) gift back to the world for having provided wonderful open tools such as Firefox, Linux, gcc and devkitpro. The problem so far is that pixel art, on its side, required a lot of work from myself, and I consider it as my own intellectual property that I want to keep under control. As a result, Apple Assault itself was closed source so far: publishing source without the art would not have run properly.

Le moteur d'Apple Assault -- tout comme l'ensemble des outils que j'ai développé pour DS -- est Open Source. C'est ma manière de récompenser tous ceux qui ont travaillé à d'autres produits open source que j'utilise tous les jours. Pourtant, jusqu'ici, il n'était pas possible d'avoir les sources complètes du jeu lui-même, notamment parce qu'il aurait de toutes façon été impossible d'obtenir une version fonctionnelle du jeu à partir de ces sources sans que je ne vous donne également les planches de sprites utilisées par le jeu. Et ça, je n'y tient pas: elles m'ont demandé des heures de travail créatif et acharné. Je souhaite qu'elles restent ma propriété intellectuelle.

Mais le petit script "8-bit-ify.pl" écrit ce midi devrait prochainement changer la donne: j'ai la possibilité de réduire la qualité des graphismes (leur donnant au passage un petit look 'C64' assez rigolo) tout en conservant l'entièreté de la fonctionnalité du jeu, et sans devoir passer par des phases de conversion de données fastidieuses. Avec le passage vers SVN comme outil de contrôle des version en prime, je devrais pouvoir vous proposer une version "commentée tutorielle" du jeu d'ici la fin du mois ^_^

Hopefully, I wrote a quick "8-bit-ify" script that convert the art (mostly killing details) such that it is still possible to compile and experiment, but not to fork a new project reusing the original sprites and tiles. Together with a switch to Subversion rather than CVS as the project revision control, you can expect a full open-source Apple Assault to come out soon as tutorial to the usage of my tools and libraries.

Somehow, it's fairly odd to play with those C64-feeling graphics at full framerate :P

source released on 24.12 MMX on Sourceforge.net

Wednesday, April 14, 2010

oamstack from XeO³

Bion, ajouter des sprites dans tous les sens, c'est sympa. Continuer à avoir des sprites dans le 2eme niveau, c'est mieux. L'ennui, c'est que le GuiEngine, comme son nom l'indique, a été au départ conçu pour gérer des interfaces graphiques (SEDS et LEDS), et pas des jeux, ce qui signifie qu'il n'y a pas la possibilité à ce niveau de libérer des sprites -- ou plus précisément, les OAM, c.à.d. les zones en mémoire vidéo qui décrivent l'emplacement et les propriétés des sprites. Qu'à celà ne tienne: m'inspirant du "stack allocator" pour 6502 du projet XeO³, je rajoute une petite surcouche ...

I was making sure that sprites could be reclaimed and that you keep seeing little stars even if you got hit > 60 times ... Just one problem here : Engine::allocate is the only way to inform the GuiEngine of how much sprites it should sync to the DS video memory ... As the level is reset, that number is reset to 0, but since all the Gobs of the level have just been "pushed" in the oamstack ... well ... Engine::allocate() is never called and thus no sprite show up ... at all. Trivial to fix, but reminds me that you should always think twice when you alter the behaviour of something ... And that was a nice occasion to mention Dailly, Kekule & Russel's work on XeO3 : the Ultimate shoot'm'up for Commodore Plus/4 (which has some armalyte taste, if you ask me) and how this code gets inspiration from the 6502 "stack allocator" for bullets in that game.

Ca n'a pas tout à fait marché, mais presque: le GuiEngine retient le nombre de sprites qu'il a effectivement alloué et ne copiera en VRAM que ceux-là. Or, lorsque le niveau recommence, tous les OAMs précédemment restent dans la "pile de sprites recyclés" alors que le GuiEngine pense qu'il n'y en a aucun en service. Le résultat ? Bin le jeu tourne, mais plus aucun sprite ne s'affiche. C'est plutôt bête comme chou à régler, donc je vais aller règler ça pendant que vous découvrez en détail cet étonnant projet XeO³ mené par Mike Dailly, un (ancien ?) programmeur de chez DMA design dont je suis le blog depuis un moment.

edit: Btw, yes, this implies u8 oamstack[128] because there is at most 128 OAMs per screen and that the game is only on one screen. I can't think of another allocation scheme that would save me more and don't disturb run-time operations. I'd love to extend the mechanism to GameObject structure themselves (which have higher allocation overhead)

edit++: funny, they seem to use the same kind of "script-encoded-into-asm-constants" approach than I used in 2000 for Out'm'UP :).

Wednesday, February 17, 2010

Do you sass' ZX Willy ?

"Connaissez-vous Manic Miner et le ZX Spectrum ?" me demandait assez logiquement caractère de 8x8 et n'avait pas de sprites. Si bien que quelque soit le jeu, ça ressemblait assez invariablement à un livre d'image colorié par un gamin qui ne sait pas éviter de déborder des contours. Maintenant, j'imagine que pour celui qui en a possédé un gamin, c'est une merveille de nostalgie au même titre que le c64 l'est pour moi et l'amstrad CPC pour Pierrick H.

All I could have told about the ZX spectrum before starting this post was that it had soft keys and tend to spread colors all over the place on polychromatic screens. I couldn't have said anything about Manic Miner unless you would have asked about the Jet Set Willy sequel which my brother had tried a bit on C64.



Willy, revisited by Arne

Pour ce qui est de Willy (Jet Set Willy, Manic Miner), je ne connais que depuis la sortie des "Lost Levels" sous DS. D'ailleurs, c'est bien simple, quand en juin 2007 Arne nous poste ce joli mock'up sur Pixelation, je me dis juste "que c'est bien fait pour du 16 couleurs. Mais où va-t-il chercher tout ça ?". Le parallèle était pourtant frappant.

It needed a Lost Levels homebrew, released on DS in June 2007, to make me realise that the mock up screen titled "Macaroni Ted" is a reinterpretation of an old game, not just some awesome flip-screen for a yet-to-code game. And I have to admit that I'm baffled by the creativity it took to fill so many screens of challenges involving so many weird characters, even on the 8-colors original game.

Mais indépendamment des qualités du jeu, de l'"ingéniosité" des niveaux et tout ça, je n'accroche pas. Ni aux "lost levels" flambant neufs, ni à l'idée de me le refaire sur un émulateur.



Lost Levels par Headsoft

La maniabilité de Willy redore le blazon de l'explorateur de Pharaoh's Curse et de Thing on a Spring. Et pourtant, j'ai passé plus de 900 vies à finir "vvvvvv" ... Alors quoi ?

Premier hic, la lenteur. Eeeh oui. Si Willy nous change de l'animation en deux temps de Rick Dangerous, en revanche, il est trop lent à se déplacer, bien plus lent que votre "projection mentale dans le jeu", ce qui pour un jeu de "timing" est particulièrement désagréable.
Autre hic -- de taille -- la lisibilité. Se faire tuer par quelques pixels qui trainaient par là et qui ressemblent autant à un buisson qu'à une clé, ça n'a rien d'amusant. La version GBA est un peu plus lisible (sans aller jusqu'à dire qu'elle est meilleure pour autant). La version ancienne (ZX) est assez bien lisible (si ce n'est pas noir ni du sol, touche-le pas) et d'une difficulté sans doute plus progressive. La preuve c'est que j'ai réussi à aller au niveau 2.

Unfortunately, once I have the game in hand, I absolutely don't want to play it. Controlling the explorer in Pharaoh's Curse or even the thing on a spring is fun compared to Willy. I think this is linked to how slow the walking animation is. I cannot make my mind match that and I'm never quite accurate on where I expect the character to be when it will be time to ask it to jump or to stop.

The second big issue with Manic Miner Lost Levels is the readability. In the original game everything is either black, flat, blinking or dangerous. small patch of pixels actually depict a deathly trap on the floor and you should jump above it.

Je vais donc éviter de jeter un blâme et je ne me lancerai pas dans des calculs savant de temps-pour-traverser-l'écran divisé par temps-de-réaction-pour-contrer-un-monstre. Il est clair que si j'ajuste le gameplay de Bilou, ce sera légèrement, de sorte qu'un monstre isolé représente déjà une difficulté (là, s'ils ne sont pas au moins deux dans un environnement exigu, le jeu est plutôt de voir combien de fois vous pourrez vous gausser grassement d'eux avant qu'ils ne vous touchent). Mais je n'irai pas cloner le gameplay de Manic Miner... Ooh non, alors!

Il est clair aussi que ce qui fait le "charme" des aventures de Willy, c'est ce côté "hors-contexte" des monstres et des salles, renforcé par le fait qu'il "suffisait" de 8 chiffres pour "programmer" une dalle et d'une douzaine de dalles pour un niveau. J'ai beau me débrouiller en pixel art, je ne suis pas graphiste. Il faudra donc que je trouve quelque-chose d'autre pour rendre le "petit puzzle-platformer avec Bilou" suffisament attractif. Je laisse donc tomber le "mining" du titre, la prochaine "milestone" sera tout simplement

Bilou : Nuts & Bolts

Yes, I'd love to have something that looks a bit like a Manic Miner game featuring Bilou. Flip screens, a few baddies per screen, things to collect (nuts and bolts from the crashed ship). But it wouldn't feel like a manic miner game. I'd adjust some physics constant so that individual ennemies requires precision, but not the kind of pixel-perfect precision manic miner implies.

PS: ça veut dire "des boulons et des écrous", et je trouve que ça colle bien au fait de devoir retrouver les pièces de l'astro-cruiser tout éparpillées ...
PPS: une vitesse verticale de 600 pour commencer un saut paraît bien pour ça. Ca rend déjà le champignon dans le premier arbre inaccessible, par contre :P
PPPS: je n'oublie évidemment pas les choses que j'avais trouvées sympa dans Johnny Biscuit (rotation des thèmes graphiques plutôt que 4 niveau halloween, puis 4 niveau en égypte, puis ...) et dans Qwak (parcours semi-aléatoire d'une partie à l'autre).

Voir aussi :

Sunday, July 26, 2009

avant Bilou ...

Avant même Calimero, se basant sur Rick Dangerous, mon frère me sort un niveau pour un jeu de plate-forme mono-écran qu'il baptise "Logic Labyrinth", rempli d'interrupteurs et de pièges en tout genres. Le concept me plait et je relancerai l'idée plusieurs fois (chaque fois que je découvre un nouvel environnement de programmation, en fait). Logic labyrinth manquait d'un personnage, par contre. Il devait s'agir d'un "char de l'espace", ce qui ne passait pas trop mal du temps de LOCO 64, mais plus difficilement après avoir découvert Giana Sisters. Je vous laisse donc découvrir cette petite illustration millimétrée de deux protagonistes destinés à s'attaquer au fameux labyrinthe, qui doit précéder la rencontre avec Piek de deux ans au moins.
Une balle aux cheveux hirsutes et une asperge à casquette ... Eh oui. On reconnait déjà le tandem "Bilou et Bouli" même si le style n'a encore rien à voir. A noter que Bouli étant arrivé sur le tard, son 'look' a souvent changé au fil du temps. Il était de bon ton, à l'époque, de prévoir un deuxième perso pour le joueur qui prendrait la manette 2 (ah, époque bénie ou une manette de console ne coûtait rien ;)

The image above is the Level 1 for a never-realised game of mine : Logic Labyrinth. With a strong influence from Rick Dangerous, my brother imaged one vicious puzzle screen where a hover-tank would avoid traps and cleverly activate switches to reach its goal. Since I wasn't too happy with the "hover tank" idea as a character, i started investigating a funnier team: a blue ball and a tall guy with a cap. This all took place years before we met Piek and it could be viewed as the very first step towards Bilou and Bouli the way we know them today.
Over the years (I was roughly 10 at the initial attempt on Logic Labyrinth), I reviewed the concept several times, being somehow a fan of puzzle platformers. Drawing inspiration from Misadventure of Flink or Pushover, the game has been renamed "Mo, the sorcerer apprentice" or "Nono in the Maya Zone", but it never grew bigger than a dozen of lines of code.
première tentative, Bouli en "négatif couleur" de Bilou, mais tout aussi rond que lui, qui apparaît parmi les ennemis d'une "technical zone" très largement inspirée de la "Chemical Zone" de Sonic 2 (découvert début '93).
C'est peut-être un peu trop "cheap". C'était bon du temps de Mario Bros. ou de Chip & Dales sur la NES, mais plus à l'époque de Sonic & Tails où même Mario et Luigi commencent à ressembler à Laurel & Hardie.

Second essai à peine plus ancien: Bouli en tant que "Superlapin", sans doute inspiré de Mr. Nutz. Mon frère n'aime pas. On oublie. A noter qu'à l'époque, Bilou porte des gants et a encore des bras.

C'est à Sparenduin, notre "pépinière de jeux vidéos" que naîtront les habitants de la "Pipe Zone". Il ne manque plus qu'un sourire au Pipe Meccano pour se transformer en Bouli tel que nous le connaissons.

Et pour revenir au jeu Logic Labyrinth, il aura été "revu" à plusieurs passages successifs à Sparenduin, une fois en "Nono in the Maya Zone" (en avril '96, influence probable de Push Over) puis en "Mo, l'apprenti sorcier" (influencé par Misadventure of Flink"), mais je n'en ai encore jamais commencé une tentative de programmation "sérieuse".

Still on the 'historical' side, can show you the very first spritesheet of Bilou (still named 'Boudy the Bubble' when drawn, though the name 'Bilou' appeared that very day) that Piek brought us on September the 25th, while i was working on a "maze race" game. Just above, you can see a collection of "alternative designs" for Bouli, first as "color opposite" of Bilou (plus hat), then as "über bunny". None of them were kept (hopefully ^_^) and i'd be tempted to say that de "pipemans" designed to be baddies in the 'Pipe Zone' might be announciating the current design.

Quant au nom "Bilou", c'est au moment de sauver les premiers essais de course dans les labyrinthes (précurseurs de "Bilou RPG") sur diskette qu'il apparaît. Piek m'avait affublé de ce sobriquet tout au long de l'après-midi, il deviendra officiellement le nom du personnage quelques heures plus tard.

Dernière pièce de musée, donc, cette "planche de sprites" dessinée et apportée ce jour-là par Piek, où Bilou s'appelle encore "Boudy" ou "Bubule".

PS: Oui, désolé, je suis dans un trip nostalgico-historique cette semaine-ci. Je promets le retour du développement sur DS prochainement ...

edit Découvrez M.G.T, la source d'inspiration de Logic Labyrinth, dans Pix'n'Love #13.