Showing posts with label maze. Show all posts
Showing posts with label maze. Show all posts

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...

Thursday, November 11, 2021

Slurp'n'Burp

At some point between '97 and '99, my brother suggested that we make a 2-players cooperative (?) pacman clone: Slurp'n'Burp. Of course, by then I had no idea how the original ghosts 'AI' was coded, so I came up with this complex algorithms where every hallway is a sensor.

While the ghosts wanders around the maze, they 'poll' hallways to know whether they have seen a player. If the hallway has seen a player, it can tell which direction to go, the ghost then goes hunting; at corners, the hunting ghost polls which branching hallway has suggestions to find the player. If none has, the ghost is "lost". It picks a branch, goes to the other side of it and polls again. if nothing works, it takes back the route it had found and picks another branch. 

I have no clue whether it would have worked, as I've never coded more than the sound configuration menu of Slurp 'n Burp. The actual pacman AI is much more cleaner and elegant, of course. (and has been extensively discussed, including here) 

Of course, my bro's blog has precise logging of when it happened, since he immediately wrote songs for it and logged the date.  knowing that Greedy is out in September '97 and that we track demoscene pretty frequently through #PossePresse magazine at that time, I still think it is perfectly possible that Eclipse prod inspired us.

(recovered from tweets posted in November 2021)

Sunday, March 17, 2019

Labyrinth flavours ...

Oh mazes. Amazing Mazes. I quite love maze games, and as you may have guessed, I would like to delegate parts of the level design of my next game to a maze generator. I've written a few of them so far, including some that needed little resource, but most of them were creating so-called "perfect" mazes, where two locations in the maze are always linked by exactly one path .

Bon, j'aime bien les labyrinthes. Depuis longtemps, et j'aimerais bien que le prochain jeu de Bilou puisse se dérouler dans un niveau plus labyrinthique. Mais j'ai envie d'y jouer moi-même aussi, du coup ce serait sympa si le jeu pouvait partir d'un générateur de labyrinthes et les maquiller en niveaux de Bilou. Par contre, tous les générateurs de labyrinthes que j'ai fait (ou fait faire) jusqu'ici produisaient des labyrinthes parfaits, c'est à dire des labyrinthes dans lesquels il n'y a jamais qu'un et un seul chemin entre deux endroits. Et du point de vue du gameplay, j'ai peur que ce soit loin d'être génial.

 Imho, this is not ideal for gameplay. It creates maps that are essentially trees, with lots of dead ends and narrow hallways. I believe it will reduce many of the gameplay opportunities. it means that you can hardly dodge monsters. In some way, in such mazes, you hardly have any real choice once you stop seeing it all: you merely guess which might be the correct path and turn back a lot.

I have the feeling that interconnected loops will provide more interresting behaviours. we see them in PacMan - as well as in Phantom Hourglass. They provide interesting backtracking and let you chose between fighting or sneaking when you encounter a monster.


Parce que s'il n'y a qu'un seul chemin, ça implique qu'il y a de nombreuses voies sans issues. Sans une vue globale de la situation, il est extrêmement improbable de parvenir à "trouver" son chemin, et donc pas de réel choix à faire pendant la navigation. En plus, la plupart des obstacles ne pourront pas être contournés: ou bien on les affrontes, ou bien on ignore le chemin sur lequel ils se trouvent. Bref, mieux vaudrait un environnement proche d'un niveau de pac-man, avec de nombreuses boucles, où le défi est moins de trouver le chemin que de choisir celui qui offre le meilleur rapport récompenses/risques.

So how can I make levels than feature such loops? I gave it another try this week-end, by first laying out loops of random size on the map, making their center "unbreakable" and then setting the rest of the map as cells ready to be processed by a regular "perfect maze" algorithm. 

But this time, I do not need to push the execution to the point where the maze becomes all-connected. Instead, it is sufficient that all rooms get connected. Some cells will then remain obstacles, which I'm fine with.
Je n'ai pas encore d'algorithme idéal pour ce genre de labyrinthe. Je fais quelques essais sur papier quand j'ai un peu de temps les week-end... Une des idées serait de commencer par créer un certain nombre de boucles de ce genre dans une grille avant d'y faire tourner un algorithme de "labyrinthe parfait" sur les cases restantes jusqu'à ce que toutes les boucles se retrouvent inter-connectées.

Thursday, October 11, 2018

Amy Zing

It only took Ant a few days to include my little "Amy Zing" sprites into his neat labyrinth crawler homebrew, actually. For some reason, I completely missed it by then (March '18) and only realised that the game was released thanks to some anonymous internet folk who followed a link from simian zombie web site to mine, leaving a mark into the logging system which I tracked backwards to hit the page with the release.

So I grabbed the game, enjoyed it, enjoyed again, tried the various resolutions (normal is my favourite one) and smiled: that was my first ever homebrew collab as a spriter ^_^. And then started to wonder... Could such simple labyrinths work for Bilou, under gravity ?

I traced some of them in a notebook and started to check where I would put collectibles or hazards and why. In a platformer, you shouldn't (imho) try to make your labyrinth with individual blocks, because the player will need some room to manoeuver. If I pick 4x3 Bilou-sized blocks as a "maze cell" (3 blocks being a standard jump height), the maze now scrolls over 4x3 screens. You can no longer plan your move easily with that limited visibility, so you'll end up more often in dead ends and will have to back-track. Hence the rewards and hazards.

And well, Imho, with properly tuned jump distances and some wall-kick mechanics, you might not even need fancy ladders or similar tricks to support those labyrinths.

That's not quite "infinite pyramid", but it could be a nice step towards it.

edit: good news: my 5-year-old J.L.N wasn't afraid of the half-dead monkey and accepted the maze game as something to do when he's bored.

Friday, August 03, 2018

Rolling Random Number.

I decided to map every known token of the GobExpressions onto the ASCII charset some other day. And it struck me that there was a pattern like "upper case for mostly side-effect actions" and "lower case for mostly functional actions". To some extent, the x being used to call eXtra functions such as spawning new game objects, triggering sound effects and the like should be replaced by X. Tracking that in all the command files won't be trivial, though.

It could be tempting to use S(for score) as a function since we have i(ncrement counter) and d(ecrement counter), but unlike game counters, the score cannot be read again. It's more a side effect to change it than really some functional extension to the core arithmetics.

So where should "roll a dice to get a random number" go ? likely r. What should be used to "get/set game state bit %n". That could be g and s. Pretty handy map.

edit: For long, I have delayed introducing OP_ROLL, and that was partly because I had no clear idea of what implementation to pick. Here is the one from Tetris, according to some gamedev talk. What is good for Tetris is good for me.

Wednesday, March 22, 2017

Pico8 spacemaze generator

J'avais bien aimé le jeu "spaceman 8", un petit jeu d'arcade pour Pico8 consistant à ramasser des gemmes dans des dédales en micro-gravité. Kometbomb, le développeur, a écrit dernièrement un assez sympatique article sur son blog pour expliquer le fonctionnement du générateur aléatoire de niveaux. Contrairement à un générateur de labyrinthe, il n'est pas souhaitable ici d'utiliser l'entièreté de l'espace, et contrairement à un générateur de donjons, les longs corridors ne sont pas franchement un plus.

Weeks ago, I gave "spaceman 8" pico8 arcade game a try and I quite enjoyed if. You spelunk for gems in a maze-like cavern using your jetpacks and your mental compass.
I loved roughly as much reading kometbomb's blog post on the random level generator they used. It had to be simple, and yet it does a great job at hiding items on a network of interconnected galleries by emulating dwarves digging dirt and stealing each others' treasures.


At each turn, one dwarf will pick a random wall, dit it and hide one of the N items there. Additional rules restrict which wall can be dug, but there is no need for de-speckle or whatsoever. Giving the caverns a chaotic look is then the job of the tileset. Could I replace dwarves by ... Bilou?

Le concept de base est d'avoir N objets à cacher dans le labyrinthe, et de les placer initialement tous dans la seule case vide (au centre de la "mine"). On va ensuite jouer aux nains creuser:
- à son tour, chaque nain choisit un trésor et le vole;
- il une dalle non-creusée voisine d'au moins une (et au plus 2) dalles déjà creusée, creuse et y dépose son trésor.

kometbomb rajoute une contrainte supplémentaire sur la présence de cellules creusées en diagonale de la cellule choisie (au plus une). Une sorte d'heuristique, j'imagine.

Je serais curieux de savoir si ce genre de mécanisme peut s'adapter pour remplacer les nains par ... disons ... des Bilous ?

Oh, et au passage, on salue Ilkke de pixelation qui assurait les graphismes de ce titre ;)

Monday, February 27, 2017

Au fond des pyramides ...


J'ai enfin un deuxième élément pour meubler la "pyramide infinie", prochaine idée de jeu que je voudrais utiliser pour Bilou. Une sorte de mélange entre les blocs-l'hermite de Toki Tori 2 et les crabes de Donkey Kong Returns...

I'll need some monsters in addition to traps if I want to make an interesting pyramid/labyrinth. But I also still want to feel alien, and not just "oh, this is Egypt in 2000.A.D.". This crawler is not yet named, but I like the look of it. Codename 'InfinitePyramid' starts here

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.