Tuesday, January 04, 2022

Puzzles in Rayman Legends

 

*deline (re)jouait à un niveau de Rayman Legends, pour changer un peu. En l'occurence "Encordé". On y joue pas mal sur des cordes à couper à l'aide de la grenouille volante. et sur la manière d'apprendre au joueur d'éviter la précipitation pour faire un meilleur score.

Rayman Legends may not be the game you expect to pick if you're looking for hints about how to put puzzles in your platformer, granted. Yet, watching my daughter playing 'encordé' level made me realize that lots of things that are obvious to me aren't for less trained players. The simple mechanics of cutting ropes has been used to create design patterns where player has to anticipate the outcome of their actions and avoid acting hastingly if they want a high score.

Je trouve intéressant  travers sa manière de jouer le fait qu'une petite action (couper les cordes) capable de transformer le niveau rend certains "puzzles" un peu moins évidents: il faut parvenir à imaginer ce à quoi le niveau ressemblera une fois l'une ou l'autre action exécutée pour pouvoir choisir la meilleure.

C'est une chose que j'aurais eu tendance à sous-estimer sans elle, tant j'ai pris l'habitude de ce genre d'anticipation en jouant à un jeu de plate-forme.

The interesting part of it is of course when cutting the rope transforms the level. Sometimes the outcome of such a transformation is obvious, but it was completely new to her, so I spotted many "oh ? zut. I should not have cut this" or "ah! yeah, if I cut that, I'll get a bridge to there".

On retrouve aussi ce côté-là dans les transformations de niveau de HoB et les rotations de FeZ. FeZ rend une erreur de jugement moins punitive en permettant de défaire n'importe quelle rotation par une contre-rotation (et du coup permettant de construire des puzzles plus complexes à partir de ces actions simples).

HoB, comme Rayman, favorise les actions définitives, mais le plus souvent les actions sont indispensables et agissent comme une clé/porte plutôt que comme un véritable morceau de puzzle.

Thinking about it, there are similar level transformations in e.g. FeZ and Hob, although not quite identically. "Puzzles" here are more or less one-time challenges. If you don't get it and miss to act as needed, your chance is gone. In FeZ, transforming the level typically involves world rotations which can be undone and redone at will, just like sokoban let you roll back last actions at will.

Hob, on the other hand, has once-forever transformations, but won't let you do a 'wrong' one. There is only one option (the good one), and the game waits for you to find it. They are mostly fancy locks, but still they meet their puzzling goal in that what come next was hidden, and you have a chance to guess it before it gets revealed.

It's a nice trait, leading to fun/satisfying 'Eureka' moments, which I'll have to find a way to inject into Bilou as well ... somehow... some day.

Il faudra que je réfléchisse à une manière d'importer ce genre de moment-Eurêka dans Bilou aussi ...

Après tout, même Super Mario pouvait y prétendre avec ses blocs-briques qui peuvent servir de plate-formes mais peuvent être détruites par un joueur trop impatient (ou imprécis).

Monday, January 03, 2022

Attaquons 2022

 Le changement d'année coïncide plus ou moins aussi avec un changement de journal-agenda, un truc qui m'accompagne depuis 2019. C'est là que le trouvent la plupart de mes "todo lists", maintenant, que ce soit pour les outils, le jeu ou la VTJ. Inutile de dire qu'à la page 169/185 du cahier en cours, il me reste encore un paquet de cases à cocher. On va juste transférer ça dans le nouveau cahier, hein ;)

Il y a aussi des thèmes de posts possibles:

  • "your first mushroom", pour faire écho à "your first koopa", vu que SMW nous met le 1er dans un bloc volant ...
  • les plates-formes de DK:TF (avec potentiellement un intérêt pour la Peaks Zone)
  • parler de l'absence de prévisibilité des dangers dans Toki
  • parler des lanternes de The Messenger, les comparer avec les piquets d'Aladdin et le dash-slide de Megaman
  • parler des éléments de puzzle de Rayman Legends

Ouais, en fait, je pourrais juste me faire un signet "Blog Me" et le passer de page en page quand je fais vraiment quelque-chose avec tous ces sujets.

Ah, par contre au niveau de la fréquentation du site, on est vaguement dans les même genre de chiffres qu'en janvier 2021, mais il faut creuser pour commencer à trouver du contenu de 2021 dans les posts, le trio de tête étant tenu par des vieux posts liés à des réponses dans des threads twitter en vue.

Mais que ça ne nous déçoive pas, en 5eme position, on a quand-même le lien vers le téléchargement de School Rush. ce n'est pas énorme, mais c'est toujours ça.


Friday, December 31, 2021

Les jeux de l'année 2021

Allez, on va imiter le frangin et faire un topo sur les jeux de l'année dernière, même si le #1 incontesté du temps d'écran sera celui sur lequel il y a le moins à prendre dans Bilou: j'ai nommé Ring Fit Adventure. Eh oui. Le jeu qui détrôna BotW de mon slot carte switch.


Toki

Je ne pouvais pas ne pas l'essayer dans la mesure où Philippe Dessoly avait essayé d'essayer Bilou. Mais le jeu n'est toujours pas plus facile. C'est même un exemple de vicelarditude de level design des années '90. Mais bon, de temps en temps j'ai vraiment la hargne sur le VPN en fin de journée et dans ce cas-là, Toki est juste le genre de défouloir qu'il faut.

Cybershadow

Un autre qui marche encore bien comme défouloir, mais qui tout en étant hardcore-dur, est rempli d'excellentes idées de game design. Je suis bien content par contre d'avoir suivi son développement parce que j'avance tellement un p'tit coup à la fois que je n'en découvre pas grand-chose par mois. (Et régulièrement, je découvre après coup que j'aurais pu me simplifier la vie en comprenant un truc comme exploser les lasers)

Gris

Indubitablement le jeu-claque de l'année. Mais ça je l'ai déjà dit.

AER

Une sorte de 'wind waker' où on a pas besoin de bateau parce qu'on peut se changer en aigle. Il y a un potentiel énorme, mais malheureusement une gestion de caméra très Nintendo64 qui rend les phases au sol un peu pénibles. Il avait bien tapé dans l'oeil des enfants, cela dit ... enfin jusqu'à ce qu'un certain Link se réveille. Très sensible au joycon drift, ce qui n'aide pas des masses.

Fe

L'environnement à explorer numéro 2. Aussi nominé pour les visuels les plus déconcertants. Plus zen et plus dense en action que BotW qui avait un peu tendance à tourner au "oui, je mets le jeu sur la table, le temps que la météo change un peu". Mais Fe aussi, j'en ai déjà parlé. Deux fois, même.

Celeste

C'est un classique et j'adore sa bande son (enfin, la face A, en tout cas). Terriblement exigeant, par contre. Trop exigeant pour mes mains. Le temps d'être sur le point de passer un écran (vu l'endroit atteint), je frise la tendinite.

 

Whipseey

Au départ je me sentais mal d'avoir ce titre pour seulement quelques Euros. C'est aussi un titre dont j'ai suivi le développement sur Twitter.

C'était avant que je ne l'aie en main. Il faudrait un entrainement pour Megaman pour parvenir à jouer à celui-là. J'arrive à avoir quelques vies en stock au 2eme boss quand je repars du début du jeu, mais ça ne change rien: je me fais applatir.

Hoa

Un autre poême vidéoludique qui fait de son mieux pour donner la réplique à Gris. Bien plus coloré, tout aussi captivant, mais avec un gameplay qui manque de dégrossissage. Trop souvent, ça chipote pour une action aussi simple que sauter sur un bloc qu'on a devant soi. Je suis allé sans grand soucis jusqu'à la fin, mais les enfants on fini par s'en désintéresser avant d'en avoir passé la moitié.

J'adore la manière dont le jeu revisite les canons du jeu de plate-formes comme les plate-formes temporaires, les mobiles, etc. Avec une direction artistique aussi remarquable, j'aurais apprécié des personnages plus grands à l'écran.

Mon seul avertissement à ceux qui sont séduit par les graphismes du jeu ? Il est court. Même Gris est potentiellement plus grand.

Eagle Island: Twisted Mode

Je vous avais déjà présenté Eagle Island. Le "twisted Mode" n'est rien d'autre qu'un nouveau jeu construit (surtout) à partir des mêmes graphismes. Par contre, l'approche a complètement changé. On est pas du tout dans le trip "Super Mario : The Lost Levels". On est plutôt dans ce que ça aurait donné si toutes les idées "ah non, ça c'est pour Zelda" avait quand-même été reprises dans un Mario.
Plus précisément, le jeu de base construit ses niveaux au hasard et attribue des récompenses au hasard. Et il faut reconnaître que Pixelnicks avait été plutôt inspiré sur les variations possible autour de "je lance mon animal de compagnie pour attaquer les monstres". Dans "Twisted Mode", on retrouve certains de ces power-ups les plus originaux combinés à des niveaux construits sur mesure pour maximiser le fun. Exit la récupération progressive des pouvoirs, mais en contrepartie, certains pouvoirs se retrouvent "verrouillés" dans certains niveaux. Le complément parfait à l'aventure originale, quoi.

The Last Campfire

Le petit dernier qui me faisait de l'oeil dans le Switch Store. Un jeu d'exploration avec une petite dimension "ramasser les objets pour les utiliser plus tard" (mais on est loin d'un point-n-click, hein). ça, c'est pour l'ambiance. C'est "l'overworld". Pour réveiller les PNJ inanimés, on aura droit à un niveau-puzzle à faire pâlir Sokoban et Boulder Dash eux-même. Le tout avec des graphismes très soignés.

World of Goo

Lui aussi, je ne l'ai pris que tout dernièrement (un jour sombre ?) quand j'ai finalement découvert que ah bin oui, il est sur switch. Le premier monde s'est avéré aussi amusant que prévu. Je devrais même pouvoir y jouer sur mon vélo d'appartement, tiens.

Unbound (worlds apart)

Un autre dont j'avais suivi (avec un peu plus de distance) le développement et dont j'ai pu essayer la démo. Mais qui ne m'avait pas plus convaincu que ça. Quelque chose dans les contrôles que j'ai trouvés trop raides et les challenges qui demandent trop vite d'enchainer des actions comme un malade fan de super Meat Boy.

De leur côté, les enfants se sont essayés à FeZ, ont repris un peu de Rayman Legends et fini Yono. Kirby: Stars Allied reste une valeur sûre tandis que (comme prévu), Just Dance est tombé dans les limbes de l'oubli...



Dreamland: on fait le point

 La deuxième année de développement de "Bilou Dream Land" tire à sa fin. Il n'y a pas encore de nouvelle maps, mais je pense que les outils sont maintenant prêts à l'emploi.

Ce qui n'était qu'un brouillon avec quelques notes est maintenant une démo exécutable sur DS. Bugguée, certes. Incomplète, tout à fait, mais une démo tout de même. Je me donne l'année 2022 pour continuer d'ajouter des mécaniques de jeu dans ces trois pièces (branches rebondissantes, de l'eau où on nage, des plate-formes mobiles et des écrabouilleurs pour la pyramide, etc). Après 2022, il commencera à être temps de construire les niveaux eux-même avec tout ça, et de réfléchir à la technique pour faire les boss.

Au niveau du contenu du jeu, j'ai un premier projet de niveau dans la pyramide (depuis Aout) -- gardé au secret, évidemment -- et la zone-montagne commence à se dessiner peu à peu. Le "goomba-like" et les "bricks-like" sont venus compléter le bestiaire de la pyramide: je ne devrais plus avoir besoin de rien de ce côté-là. Ce qu'il me faut maintenant, c'est convertir tout ce petit monde en pixels.

Well, why not swapping the years with a flash back on what has been achieved. I almost did it last year. With 2021 closing, it's been 2 full years working on my "Bilou Dreamland" objective. The cornerstone of the year was introducing the "3 rooms" milestone. I'm proud to announce that as of today, that milestone sketched in March is now a demo, of 3 interactive environment packed into one (huge -- 2.7MB) .nds with swapping songs and shared contents for Bilou.

Beyond those got-them-working steps done, I've got most of the monster design for the Pyramid zone covered ... and starting to get idea for the final "Peaks zone". So stay tuned: 2022 will be the year for implementing all those fancy mechanics within the 3 rooms before I start doing full-fledged levels. Maybe I'll even be able to prototype the NPCs.

Il y aura encore eu quelques gros bug-de-murs pendant l'année, mais tout semble indiquer que Bilou supporte convenablement son nouvel environnement, maintenant. En tout cas, on peut essayer les maps de J.L.N sans devoir redémarrer à tout les coins de couloirs.

Euh ... donc en fait ... mise à jour de la Démo.

Edit: J.L.N me rappelle qu'il y aura des boss en plus des 4 mondes. J'imagine que mon prochain milestone (en plus de remplir ces salles de tests), ce sera de faire un proof-of-concept avec au moins un boss. N'importe lequel.


Thursday, December 30, 2021

Color Cycling.

Being able to animate things just by changing entries in the color palette is one of the reasons why I'm loving old school programming that much. The amount of pixels you can affect with this technique with just a few memory writes has so much hex appeal! Yet, you wouldn't find anything animated that way in Apple Assault or in School Rush. Flowing ink could have used some, though.

Technically speaking, one key thing to fix to get it working with my setup is to ensure that the palette writes happen in a Vertical blank handler, and the other is that we bring the video memory holding the colors as freely-accessible video memory ( aka LCD for the Nintendo DS) while updating it, and then return it as extended palette bank.

So with all that coded, I could replace the lengthy 16-frames animation of the waterfall with just one static frame. And I have a comfortable homework to create as many tiles of flowing-wafer-slopes as I could need. I used a sort of "rainbow raster" to be able to draw those animations properly, which makes them look a bit strange in the level editor and in runMe, but I should be able to fix that by having the raster be on a secondary palette shot and a "static preview" on the main (and animated) slot.

Yeah, that's the major drawback: I don't see how to get it customizable from the level scripts by now, so I prefer keep it as some custom code running in Dreams.nds and leave runMe alone for now.

Là, je m'attaque à un morceau iconique du développement 16-bit: l'animation des palettes. Un truc que je connais depuis le BASIC mais que je n'ai encore jamais eu l'occasion de pratiquer sur DS (c'est dire si les petites animations sont à la traîne dans mes jeux DS :-P. Le principe ? les graphismes en mémoire vidéo ne contiennent pas directement des couleurs, mais des références à ces couleurs. Les pieds de Bilou seront faits avec la couleur n° 24 alors que sa main aura la couleur n° 79 et le blanc de ses yeux la couleur n°3, etc. Une partie de la mémoire vidéo est dédiée à retenir la correspondance entre ces numéros et les couleurs RGB à utiliser: c'est ce qu'on appelle la palette. Du coup, si vous changez une de ces valeurs, vous avez la possibilité de modifier simultanément une grande quantité de pixels à l'écran.

Une sous-catégorie de ces animations concernent les boucles de palettes. Vous n'ajoutez aucune nouvelle couleur, vous n'en retirez aucune non plus, vous vous contentez de les changer de place. du coup, un dégradé bien construit peut devenir un tapis roulant, une chandelle vacillante, une mare de lave ou une jolie cascade. (Mark Ferarri étant le champion de la discipline, cf. ci-contre).
 
If you look closely at the blue ramp between the two rightmost waterfalls on the gif above, you'll note that palette cycling is working there (backwards, but working). The waterfalls are still 'frozen' because I haven't applied my palette effect on the background layer yet. Oh, and if you wonder why half of the background is pink on those green zone captures, greenbg.spr is 32x32 and CommonMap expects a 64x32 map instead ... so half of it is 'blank'.

Mais pour que le chip graphique puisse pomper les valeurs de la palette assez vite pour tenir le rythme de l'écran, on doit régulièrement caser la palette dans une mémoire dédiée, avec un protocole d'accès un peu plus compliqué que BG_PALETTE[index] = rgbValue; C'était le cas avec le VGA, c'était le cas avec la SNES, c'est toujours le cas avec la Nintendo DS (plus simple à coder, mais pas forcément à expliquer).

Bref, ça marche, mais vu que ça ne peut se produire que pendant le 'temps mort' entre deux rafraîchissements d'écran, et vu qu'il y a cette histoire de va-et-vient entre la configuration où on sait écrire dans la palette (mode LCD) et celle où on sait l'utiliser pour afficher les couleurs (mode EXTENDED_PALETTE), je vais juste garder ça comme un 'petit extra' de Dreams.nds et vous aurez le fond des cascades statiques quand je ferai une démo IRL avec runMe. Vendu ?

edit: pour que ça tourne rond, j'avais eu besoin de me faire une petite map de où-est-quelle-couleur dans le code de la démo. Je vais reprendre ça ici aussi, parce que je me repose la même question deux ans plus tard et que twitter, hein ... on verra bien où il en est dans 2 ans.


Tuesday, December 28, 2021

Libérer l'eau

Dans le niveau dessiné par mon frère il y a longtemps, on a une clé "à attraper au premier passage" et une porte verrouillée dans untrou. Dernièrement, j'ai décidé de laisser tomber mes idées de faire pousser un haricot magique pour quelque-chose de plus direct.

Comme j'envisage déjà d'avoir un niveau d'eau qui monte ou qui descend dans un autre niveau de la green zone, j'aimerais bien pouvoir résoudre le problème en faisant monter l'eau assez pour que la clé devienne accessible.

I have some design to fix if I want to reuse my brother's Green Zone Level 1 in DreamLand. Whatever the revision, the map can get you locked in a pit with a door that needs a key that is higher than the pit. Originally, we were meant to dive in and find a sunken door that brings back at the surface where we can try to catch the key on a second fall.

That would have worked because Bilou was supposed to swim freely in that game, but only for some limited time (the Blue Power would then allow to extend that with magic collectibles). But in Dreamland, we should instead expect water to push the player up, forcing them to float rather than to swim anywhere.

Evidemment, il faudra que le niveau redescende automatiquement après, parce que tout comme dans Fury of the Furries, j'envisage que Bilou ne puisse pas plonger librement dans l'eau pour ce jeu-ci, mais flotte obligatoirement.

Il restait à trouver un moyen de faire venir l'eau d'une manière qui colle à la fois aux mécanismes de Bilou et à l'environnement 'green zone'; un peu comme l'histoire de la vanne à encre déjà discutée l'an dernier.

In an earlier revision, I had thought of introducing a sort of 'fast-growing vine' that the player could trigger, but I'm not that fan of using such an indirect mechanics like 'water-the-bean' or 'make sure the bean is no longer drowning'. If I'm to play with water, I'd rather let the water rise high enough so we could reach the missed key. Sounds like a nice, more direct, way to do things. All I was still needing was a way to trigger that water rise that would integrate nicely with Bilou's world. I may have found something working based on push-me blocks. phew.

Prince of Persia

J'avoue que quand j'ai vu "le making of de Prince of Persia" chez Third Editions juste avant Noël (dernier), je me suis dit que je n'avais pas besoin de chercher plus loin un cadeau pour mon frangin. Il m'avait avoué avoir aussi commandé quelque-chose pour moi chez eux, donc j'étais convaincu qu'on allait s'échanger le même bouquin au pied du sapin. Tellement convaincu que j'ai laissé le sien bien au chaud dans son emballage, histoire de ne pas gâcher le plaisir de la lecture *du mien*.

Sauf que non. J'ai eu quelque-chose d'autre. Et la lecture du making of aura attendu encore et encore, le livre continuant d'être sur la table de chevet de mon frère. Jusqu'à ce Noël ou j'ai réussi à le convaincre (nouvelles  BD à l'appui), qu'il parviendrait bien à s'en passer une semaine ou deux.

I know: I could have read Jordan Mechner's notebook years ago ... and I did read some snippets. But having it published in french meant that I could offer it to my brother: he's the collecting one in the family. I thought he would offer me a copy but it turned out he offered something else. So I had to wait until I could borrow him his gift ^^".

Deux ans après avoir numérisé les premières séquences vidéo où son frère court et saute, Jordan Merchner prend conscience qu'il manque quelque chose de fondamental dans son prototype de Prince of Persia: des objectifs.

La princesse à la fin du jeu n'est qu'un trophée. Il faut des récompenses dans le jeu comme battre un garde dans Karateka, attrapper une pac-gomme dans Pac Man ou compléter un niveau dans Lode Runner.

A ce moment-là, son jeu autorise l'exploration libre de grands niveaux (plus d'une 20aine d'écrans). Il n'y a pas encore de combats. Il n'y a pas moyen d'anticiper à quelle distance on est encore de la sortie du prochain niveau. Si on tombe dessus, on se dit "ah ok ? c'est la sortie, alors". Pour qu'il puisse y avoir sentiment de récompense, il faut que le joueur ait pu anticiper qu'il avait quelque-chose à réussir.

On peut se retenir pour la tâche suivante, attendre le bon moment avant de se dire "Ok. Maintenant!" et se plonger dans une période de tension plus forte, avec une grande chance d'avoir un contretemps ou un succès. Prince of Persia n'a rien de tout celà pour le moment (12/11/1988). Si le sous-objectif est de finir le niveau, il faut un indicateur visuel de où on en est.

Il faudra que je sois attentif à ce genre de chose dans Bilou. La bonne nouvelle, c'est que les bonus-à-ramasser donnent facilement des petits objectifs intermédiaires. Il se pourrait que ce qui ne m'a pas plus dans les collect-a-thons, c'est justement cet absence d'objectif (ou alors un objectif caché, du style "bon, il reste 8 Lums dans ce niveau. génial. Où est-ce qu'on achète une boussole à Lums ?)

#collect: at some point in 1988, Jordan Merchner realises that it is important in an action game that the player knows what are the next goals they're after. What is the next reward I can get (a power pellet ? completing a level ?), and how far am I to reach it? That was obvious in games like Lode Runner or Pac-man, and by that time, there was no such feedback in the Prince of Persia prototype (before he adds swords fight to the game). There cannot be satisfaction of reaching a goal if there is no way to anticipate the goal.

I'll have to be careful about that in Bilou, especially regarding the use of collectibles as a progress indication. It could be what made collect-a-thon uninspiring to me: okay, you got a feedback that you haven't found everything, but that's an incomplete feedback because it doesn't show you what the next objective is. It's like if pellets in pac-man were actually invisible. Same for the 'remaining Lums' in Rayman 2: I have no Lums compass to find them!

edit: okay. Bouquin fini. Bonne histoire, bonne lecture, mais il faut reconnaître un truc: Jordan ne s'est pas particulièrement étendu sur les aspects techniques du développement. Pas beaucoup plus sur les niveaux eux-même. Ce n'est pas si étonnant. Quand il bosse, il bosse. Il ne prend pas des notes sur "pourquoi on met une potion l et pas ici". Il prend des notes quand il rumine. Et pour tout ce qui est 'bon comment on va faire ça sur 8-bit', voyez plutôt le portage C64. (par contre, le code source est publiée sur github)

On y retrouve les schémas expliquant comment les graphismes sont découpés dans le bouquin, et deux ou trois autres trucs du genre, mais on ne s'y attarde pas. Pas de regrets, donc: c'est un bouquin taillé pour CJ et PYH plus que pour moi.

Bon, Jordan, si tu me lis un jour, je n'ai jamais vu PoP en magasin. J'y ai un peu joué en version MS-DOS, mais je n'ai jamais réussi à passer le 3eme ou le 4eme niveau. Mais t'as fait un super travail quand-même. Ton jeu reste un mètre étalon de la discipline. Et merci d'avoir publié tes carnets.