Friday, July 10, 2020

Eagle Island


I've been following the development of Eagle Island since its author (@Pixelnicks) announced his crowdfunding campaign. The animations were tempting, and I finally decided to join the adventure. Okay, I might not be that much into metroïdvanias nor roguely-inspired levels, but it was about a boy and his owl, and I've been an owl-lover for quite some times.

not exactly the type of gameplay I'm after ...
What truly decided me to join was the "Nintendo Switch port". I knew I wouldn't be playing the game on any other device, but I had already the #sijavaisuneswitch hashtag in the back of my mind.

When the development finally was over, and that the switch port hit the shop, I had a bitter surprise: the redeem code I had received in exchange for my contribution wasn't available for the Nintendo Switch.
I understand why, of course: the port has been coded by a third-party studio and the indie author doesn't have direct control over whether they will donate copies of their work or not. So for one year or so, I owned the game, but couldn't play it unless I bought it again.

If only I could scroll up to see the top of those trees! ...
But I kept following Pixelnicks' posts and somewhere around mid-May, I noted that the background trees drawn by @skittlefuck were exactly the kind of references I needed to polish the graphics of Bilou's Green Zone.

And so I made the jump. I the very day I purchased it, I was publishing snapshots that triggered some level design thoughts.

It took me some time to get used to the gameplay. (A) to jump and (Y) to fire isn't exactly what Mr. Thumb is used to. There is an option to remap the buttons, but unfortunately, it also remaps the "OK" and "Cancel" actions for the whole menu system. I finally thought that it would be easier to adapt to a new game than to a new 'OK' button. I'm still messing up from times to times, but I got it mostly in the muscle memory, now.

I was tempted by the '360° aiming', too. It helps at start, because you can shoot where you want, Yoshi Island-style. But as soon as the challenge curve ramps up, it stops being helpful. You see, many of the actions in Eagle Island expect you to shoot from mid-air, and to chain successful shots. If you miss a target, your penalty is an "recovery" delay for your owl (who acts as a boomerang) before you can shoot again, while you can easily chain "hits" shots. Unlike Megaman or Super Mario, Quill and Koji don't have big functional blind spots. But being limited to 8 directions for aiming requires you to mix JUMP and SHOOT to reach your target.

Well. With its interesting mechanic where the #1 way to regain health is to chain 3 hits in a combo, there is really much I could say about Eagle Island's gameplay. I've only started understanding the mechanics of the game.

But I'm making a pause (as I reached the 2nd big boss encounter) to review the screenshots I made. They might help populate the 'pyramid zone' too, after all.

But I'll have to come back to those trees and analyze them better than my "big mustache made of socks" current comments, because I definitely see that style fit better in Bilou's woods than any other trees I collected for pixel study those last months (years ?)

@arcadeHero@RianKamos#EagleIsland

Thursday, June 25, 2020

Le retour des Meta-Boutons

Bon, la bonne nouvelle, c'est que j'ai repris le travail sur l'éditeur de niveau: il faut bien qu'on puisse profiter des nouvelles possibilités offertes par le moteur "newmap", vu qu'il a passé le premier round de tests automatiques.

J'ai attaqué avec la révision des "méta-boutons", cette palette d'outil qu'on peut faire apparaître sur la droite de l'écran pour définir si le sol est solide, pentu, préciser si les graphismes sont des bonus, etc. Il est encore trop tôt pour balancer un "ça avance plutôt bien", disons juste que je n'ai pas encore été immobilisé.

There's some good news: I resumed working on my level editor. Having a brand new game engine supporting more slopes and more physics won't be very sweet if I can't make level for it, right?

Well, I started with fixing 'meta-buttons', that widgets palette on the right of the map edition that let you define blocks properties. It is still too early to claim "good progress has been made". At this point, the best I can say is that I haven't been stopped yet.

There's some bad news too, unfortunately. If there is progress, it is even slower than Wintergatan's marble music machine. I'm happy if I managed to work 3 or 4 hours a week on the topic. I started my todo list in my notebook so that I can plan the things to happen even though I might not be ready for more screen time by the end of the day.

La mauvaise nouvelle, c'est que ça avance encore plus lentement que la machine musicale à boules de Wintergatan. Si je "travaille" dessus 3 ou 4 heures par semaine, c'est beaucoup. Heureusement, donc j'ai mon calepin pour y cogiter quand j'ai un peu de temps libre, pas d'épisode de Castle en retard, mais que je ne suis plus trop d'attaque pour me coller devant un écran.

Pour situer, j'ai même carrément commencé un thread twitter avec des p'tits bouts d'avancée parce que je sais parfaitement bien que quand je serai finalement devant le bon PC (plantage de desmume pendant que j'essaie de faire tourner l'éditeur sur le PC plus souvent disponible), j'aurai probablement oublié le calepin à côté de mon téléphone dans mon "cubicle" au premier qui me sert de bureau depuis que je suis en mode télétravail.

I had initially thought that once planned, I could crunch the thing in a couple of evenings, but no. This has turned so much into micro-development that I even started a twitter thread to post my screenshots and track "what's to do next". Left foot (one fix). Right foot (another bug discovered). Left foot(another fix). Right foot (yet another bug).

Not that ugly code got written, but the dependencies of what I had foreseen to need changes was of course imperfect. Sometimes more buttons means I start trashing the VRAM with my "back-up memory". Another time, I notice that the 'autorun.nds' used for tests doesn't know how to clear the screen (and turns it all red). Every step takes only an hour or so, but since that's all I can afford per sprint evening, it starts remembering me of how it felt to write code when I was 12 and my parents told me "that's it. 55minutes. Now save your work and wash your hands: the dinner is ready". (except that I'm one of the parents and that I'll have to make the dinner ready ;)

"Tiens c'est quoi, cette barre verte" ... une petite heure d'investigation. un commit qui corrige le mauvais positionnement de l'espace de backup dans la mémoire (oouhhh). Je déclenche accidentellement un "mur rouge" en voulant vérifier que tout va bien mais il est trop tard: ce sera pour un autre jour.

Et cet autre jour, je constate qu'un peu de refactoring serait le bienvenu avant de chercher l'erreur. Paf, une fois le refactoring terminé, il est déjà temps de refermer le laptop. Jour suivant, je fais les recherches avec gdb. Mais une fois le problème identifié, bardaf, il est temps d'arrêter.

Bref, je crois que vous voyez le tableau. ça rappelle un peu les conditions de programmation BASIC de quand j'avais 12 ans, tiens.

Well, let's not get disappointed, shall we ? I finally got translation-on-loading repaired yesterday. I refreshed how-autorun-checks-VRAM in my brain. Maybe I'll be able to fix one more bug tonight? Or I'll watch some more of Castle, S5 with my Fairy.

Friday, June 12, 2020

Cachette Secrètes ...

Il y avait quelque-chose de bien fun dans Prehistorik 2: de nombreuses cachettes dans lesquelles on trouvait plein de bonus plus farfelus les uns que les autres. Pas trop à se tracasser, celà dit: ça fait juste monter votre score. Mais ça fait aussi quelques clins d'oeil rigolos. Quand on tombe sur un pacman ou une cocotte en papier, par exemple.

J'avais eu dans l'idée d'ajouter des objets étranges à collecter dans Infinite Pyramid, qui serviraient de témoignages des années qui ont vu naître Bilou. Une K7 audio qui déclenche un jingle de l'inspecteur Gadget, par exemple. Ou un pixel art de Fury of the Furries. Ce genre de chose. Repenser aux parties de PRE2.EXE et à sa casserole géante (élément sympa qui nous rappelle le niveau qui vient de s'écouler) me donne l'impression que des objets hétéroclites sont plus fun qu'un gros tas de bananes, aussi Rare soient-elles.
Don't trust what's being said in French: it all happened because I was playing Eagle Island, and couldn't help but trying to smash the owl into walls just in case there'd be hidden things. Only then I recall that I grew this habbit while clubbing around in Titus' Prehistorik 2.

But granted, the thing about K-7-shaped bonuses in the pyraputer that would play Inspector Gadget jingle is a true trivia that has been suggested to Cyborg Jeff for approval. And indeed, bringing that together with the "nostalgia" for clubbing into walls made me realize that collect-a-thon are more fun if you don't know in advance what you'll collect and when designers break your expectation about what may comes during the hunt. It's another way to "make gaming moments memorable" when your game doesn't really fits an epic scenery.

Par contre, je n'avais toujours pas de bonne solution pour faire la chasse au bonus. L'effet préhistorik est drôle parce qu'on peut prendre les attentes du joueur à contre-pied. ça marchera moins (imho) si il a vu les bonus approcher depuis le bord de l'écran. Alors, bien sûr, je peux donner des coups de tête dans les branches pour faire apparaître des trucs. ça se transpose moins bien en dehors de la Green Zone. Je peux lancer des taille-crayons dans les murs, mais ça limite les endroits où chercher.

Je peux aussi essayer de faire une animation de Bilou à 4 pattes, qui permette de rendre la recherche des cachettes dans les murs un peu plus excitantes, mais entrer dans la cachette n'est que le début. ça ne nous donne pas l'effet "bonus surprise" de PRE2.

Puis en gribouillant, je suis tombé sur une idée mélangeant PRE2 et SMB3. Pourquoi ne pas permettre à Bilou de passer à certains moments derrière le décor. Là, il peut utiliser le bouton "GRAB" pour essayer de fouiller et faire sortir tous les bonus cachés ^_^

it brought my attention to the fact that I still don't have a good candidate for PRE2.EXE's club (or DK ground-pound attacks) to investigate things when you haven't been provided a blador/koopa/DK barrel to hint you that there is a secret nearby. I've been scribbling some options, starting with the obvious "jump and hit things repeatedly", continuing with "crawl under a lower (secret) passage into the wall. Nothing really convincing.

Taking a step back, why does clubbing-for-secrets work in PRE2 ? Partly because you'll clubbing all over the time. That's why blowing on things in DK:R doesn't work as well as rolling into the grass in DK:TF. What could Bilou do ? So far, his bare abilities are JUMP and GRAB...

We all know how JUMP can be used to reveal hidden goodies, right ? How about GRAB ? You sure could do it the SMB2 way. Not only you lift up defeated baddies, but you can strip goodies out of the ground after you found a suspicious thing protruding from the ground. You could also do it the DK:TF way, grabbing a root, holding 'GRAB' for a bit longer and finally you reveal the hidden stuffs. But both are for obvious secrets. Mechanically, they're not that different from the hit-me-plants of Rayman Origins (or DK:TF, by the way)

But I could turn them into PRE2-hit-the-unexpected-spot if I combine that with a mechanics from SMB3: hold up/down to switch to the background layer. Only then, you'd start digging for secrets by using GRAB again and again. There won't be the "smash-smash-smash" sound, but it could be made equally funny, I think.


Je sens que ça va être rigolo. On peut aussi le faire dans la pyramide là où il y a du sable, ou en passant derrière un pillier / une statue plutôt que par devant.

Sunday, June 07, 2020

Infogrames

Regis Monterrin et Florent Gorges ont obtenu une interview avec un ancien designer de jeu chez Infogrames durant la période SNES à N64: Vannara Ty, interview qui est rediffusée sur la chaîne "les petits secrets de la playhistoire". On y discute entre autres de l'évolution du projet "Schtroumpfs 64" -- un projet ambitieux, mais qui doit faire face à une période où la société ne sait pas encore sur quelle machine 3D miser et où il est donc nécessaire de faire toute la phase de pré-concept sur "ClaireFontaine Engine" parce qu'il n'est pas possible d'acheter une license de 3DStudio Max pour travailler sur un projet qui n'est pas encore validé. Mais la déclaration qui m'a retenu est la suivante:
[Peyo] n'a jamais vraiment eu de feedback négatif sur tout ce qu'on produisait. Déjà, de base, ils n'étaient pas gamer donc ils nous faisaient vraiment confiance.
Bien sûr. On a beau parler de Peyo-fils ici, le gars a la quarantaine quand le projet démarre. Pas loin de l'âge de mon e-Papou, qui ne se sera jamais vraiment à l'aise joystick en main. Alors le chasseur impérial qui sert de contrôleur à la N64 ou même les 6 boutons colorés de la SNES ... ils préfèrent sans doute laisser les spécialistes du testing (ceux qui à la fin du développement finissaient Tintin au Tibet en une vie, donc, avec des défis speedrun) de chez Infogrames leur montrer que tout marche bien que d'essayer le jeu eux même. 

Autre révélation-choc: quand Vannarra fait le design de Tintin au Tibet Le Temple du Soleil - ce titre techniquement impressionnant mais à la jouabilité difficulté monstrueuse (?) - il vient d'être engagé chez Infogrames juste après la fin du développement de Tintin au Tibet : c'est son premier jeu. C'est son stage (période d'essai?).
J'avais règlé les niveaux tellement durs que même les testeurs n'arrivaient pas à les passer. [...] Puis un jour [en revenant de vacances], les réflexes étant moins top, j'ai découvert les atrocités que j'avais faites subir aux testeurs et j'ai revu la difficulté pas mal à la baisse.
 Il nous avoue aussi qu'une fois le jeu fini, après un marathon de 10 mois uniquement là-dessus, il n'a évidemment qu'une seule envie: ne plus y toucher. Ce qui expliquer que ce soit un p'tit jeune qui ait travaillé sur le nouveau jeu, et pas le "chef" de l'équipe de Tintin au Tibet (pour peu qu'il y ait eu des chefs d'équipe à l'époque).

Saturday, June 06, 2020

Petite cascade

Bon, c'est pas énorme, mais ça faisait un moment que ça n'était pas arrivé. Je me suis pris une heure ou deux cet après-midi pour faire un p'tit montage de ce que donnerait une cascade sympa au milieu de l'environnement de Bilou.

C'était chouette, mais perfectible. En réimportant quelques trucs venus d'études précédentes, je finis par avoir quelque-chose de plus riche et qui s'intègre mieux avec le reste des décors (je trouve)

J'aime bien la possibilité de faire tomber l'eau verticalement en bout de plate-forme plutôt que de devoir me farcir un arc-de-cercle presque sans épaisseur. ça donnerait mal au crâne de celui qui devrait essayer de modéliser ça en 3D, mais soyons honnêtes: qui s'en tracasserait ?

Bon déconfinement à tous ;)

Saturday, May 30, 2020

Yo Yo Shuriken par Dr. Ludos

Un p'tit coin de web bien sympa, où Dr. Ludos nous raconte l'aventure de son homebrew SuperNES: "Yo-yo Shuriken". On est dans un jeu de type 'arcade / clean-them-all' qui n'est pas sans rappeler les ambitions simples d'Apple Assault.

Le jeu est orienté autour d'un mécanisme qui titillait Dr. Ludos depuis un bon moment: un jeu de tir où on a droit qu'à un seul projectile. Après quelques essais où il faut aller récupérer son shuriken en bordure d'écran, Dr. lui ajoute un mode boomerang et le sort du cyber-ninja est scellé: il se fait voler la vedette par son shuriken. Le voilà condamné à une éternité d'anonymat.

En plus de nous raconter la genèse et le développement de son jeu, Dr. Ludos nous parle aussi du développement pour SNES version 2020.
I used [PVSNESlib] to make Yo-Yo Shuriken, so I could code it in C language. For graphics, I drew BMP images that were converted to the SNES graphics format. For audio the framework accepted wav files for sound effects and .it files (Impulse Tacker format) for music. It was still quite a challenge to make a game running on the SNES, but PVSNESlib made it a "hard but fun challenge"!
PVSNESlib, c'est le travail de papy Alekmaul, un ancien de dev-fr qui a embrayé sur les consoles 16 bits une fois que la fièvre des DS est retombée. On lui doit des portages de jeux Amiga, un assez sympathique jeu de puzzle (qui avait fait parler de lui à une compo, si ma mémoire est bonne) et la partie technique de Sidney Hunter, un homebrew original dans la veine de Rick Dangerous.

In the end, even if you use a tool like PVSNESLib, you'll need to be familiar with how the SNES works in order to make actual games for it. Hopefully the wonderful homebrew community have consolidated some very extensive documentation. I'll recommend:

Pour ma part, je n'ai pas encore commencer le développement sur SNES, mais j'aimerais que mon prochain jeu ("Bilou's Dreamland") puisse envisager un portage sur la reine des 16-bits. Je vais donc garder bien au chaud les recommandations de Dr. Ludos. Mais ce ne sera pas simple partant avec 80 ennemis à l'écran (hors des 128 possibles pour le hardware) pour ses premiers tests, Dr. Ludos doit redescendre à 40 une fois les tests de collisions ajoutés (pour tenir les 60fps), puis de nouveau à 24 pour prendre en charge un deuxième joueur et la gestion de la musique. Soit un total de 38 sprites si on compte aussi les joueurs, leurs shurikens et les explosions.

Il va devoir malgré tout ruser un peu, comme convenu avec ce genre de machines: contrairement au joueur, les ennemis ne seront déplacés qu'une frame sur 2, ce qui permet d'étaler les tests de collisions sur 2 frames. (Curieux de voir ce que PVSnesLib a dans le ventre pour gérer ça, tiens ...) Il va falloir équilibrer ça avec le temps de mise à jour disponible pendant la période de VBlank, aussi -- seul moment où on peut faire une mise à jour de la mémoire graphique sur la SNES -- faute de quoi certains éléments graphiques seront tout simplement manquants à l'écran.

Mais Dr. Ludos ne s'est pas arrêté à faire une ROM de son jeu. Il nous fait la totale, avec une boîte, un manuel et une cartouche physique soudée à la main! Amis amateurs de tubes cathodiques, vous voilà avertis ...



Thursday, May 28, 2020

Twisted Dreams and the level designer contract.

As I'm going deeper into level design analysis, I realize that there should be a sort of "contract" between the level designer (hereafter denoted "I") and the player (hereafter denoted "you"). Something that will at least feature the following items:

  • Art. 1°: I will not tease you with collectibles that are impossible to collect.
  • Art. 2°: Whenever you will die, you will know that it was your fault.
  • Art. 3°: I will not put you in a situation where the only way to keep on playing is to die.
I'm afraid we can't do that.
Many earlier games infringe those rules, at least partly. Whoever has played Commander Keen IV has at some point wondered how one could collect all those 1-UPs in the deepness of the lifewater Oasis... or that impossible-to-grab diamond at the end of Level 2 in GGS.

When you do observe art. 1° of the contract, however, placing an item somewhere that looks out of reach can be perceived as the signal that the player is missing some nuance in the gameplay mechanics. This happened in Donkey Kong Country, but I wasn't aware of the contract before I forced my way through the lost levels of DKC2 and discovered the roll-jump move.

Yes, you can!

It happened to me when playing Giana: Twisted dreams, too. There are two modes in that game: punk or cute. The punk Giana can DASH (even mid-air) and the cute Giana can HOVER. Let me call "TWIST" the mechanic that switch between punk and cute.

Black Forest did merge both TWIST and DASH mechanic into one convenient action button. If you press that button, you DASH, and if you weren't punk, you TWIST as well. Same for the HOVER button. That makes them more direct than e.g. Mickey Magical Quest approach where you use L+R to select a power, then activate it with X and finally use it with B. What I had not discovered (and almost made me drop the game) when my brother let me try the game, was the trigger that TWIST without performing any action. When you look at this gameplay video, it also becomes clear that you can TWIST while HOVERing without losing the ability to HOVER ... which is pretty un-intuitive. It can however be suggested to the player by an appropriate layout of cute-gems and punk-gems.




Sunday, May 24, 2020

Toujours dans les pentes ...

Eh oui ... on a passé la mi-mai, et je suis toujours occupé à faire tourner ces tests automatiques des pentes et à corriger l'algorithme doslopes et son intégration.

J'avais introduit un mécanisme "maxMove()" pour pouvoir obliger l'algorithme doslopes à ne pas essayer d'aller plus loin que ce que l'animation permettrait. Dans le cas contraire, il y a un désaccord entre le mouvement vertical prévu et le mouvement effectué, ce qui conduit le personnage à finir en l'air ou encastré dans le sol.

S'en est suivi une refonte de selfmove pour qu'il puisse retenir s'il y a eu un maximum appliqué (et forcer le même maximum au moment de la lecture de l'animation). Puis je me suis rendu compte que tout ça ignorait superbement les décisions du type "il ne peut y avoir aucun déplacement là-tout-de-suite", avec à nouveau des déplacement incohérents. J'essaie de le corriger, et du coup tout bloque à la première pause.

Bref, J.L.N me demandait si j'avais déjà commencé à faire des niveaux pour la pyramide, mais j'ai l'impression que ce n'est pas pour tout de suite.

edit: trouvé. Un excès de zèle au moment de lire l'animation...
edit++: les tests passent! il était temps! Je suis dessus depuis la mi-janvier... et à 23 minutes près, j'y était encore en Juin!

Sunday, May 03, 2020

Tortoise Shelve

C'est le frère jumeau de "jigé" qui m'a fait découvrir cette fonctionnalité ultra-pratique qui dépasse de loin ce que j'arrivais à faire avec mercurial en ligne de commande et l'éditeur EMACS: l'opération "shelve" de TortoiseHg.

L'idée est de passer en revue le contenu d'un futur "commit", et de choisir, patch par patch, s'il doit être appliqué ou s'il doit être gardé pour plus tard.

Confinement oblige, c'est surtout ma fée qui utilise son PC portable en soirée, du coup, j'ai un peu perdu le fil des modifications que j'avais tentées (et qui n'ont pas marché), mais il y a quand-même de bonnes choses dedans.

Ici, je peux aller à la pêche aux bons plans (les anglophones appellent ça du "cherry-picking", mais bon, ils ont aussi le piggy-backing, donc...)

Et ... oh, bin puisqu'on est là à parler de mercurial. Je viens de tomber sur un article impressionant de détails à propos des conversions requises suite à l'abandon de mercurial au profit de git par BitBucket... 

Wednesday, April 22, 2020

vannes à encre

Il y a bien eu quelques "vannes à fermer" dans School Rush mais la plupart des autres niveaux avec des zones d'encre dont la hauteur est variable, l'idée est plutôt de provoquer un transfert d'une zone vers l'autre, ou de déclencher la montée de l'encre qu'il va falloir prendre de vitesse.

J'aurais bien pris un mécanisme à la Fury of the Furries (un bloc à tirer pour créer un passage), mais il ne s'agit pas d'eau ici, mais d'encre-qui-blesse. Le plus prometteur serait d'utiliser un "accident" provoqué par un pendat qui se serait mis en chasse de Bilou.

Le retour de Bangbash ?

 Il y a eu un "grand absent" dans les niveaux de la School Zone jusqu'ici : Bangbash. Pourtant, il avait plus ou moins été le pillier central du redesign de la School Zone jusqu'en 2010.

Mais au contraire des pendats, jusqu'ici j'avais pensé qu'il me faudrait obligatoirement utiliser des modèles 3D pour pouvoir les afficher. Pourtant, pour "dreamland", j'aimerais bien pouvoir en mettre quelques-un dans le "niveau de rémi". Mais est-ce que les polygones sont vraiment indispensable pour son animation ?

Maybe you still remember BangBash ? If you do, I sure owe you something for it's been nearly a decade that it's been collecting dust. Back in 2010, BangBash was more or less the cornerstone of the SchoolZone redesign. Unfortunately, I had planned to use 3D meshes to render it, in a sort of New Super Mario Bros style, but neither the game engine nor the DS game tools have evolved to a point where that would happen. And it's quite a shame, because it means none of the "newer" levels can be used as planned.

idée d'animation de 'recovery' après une attaque.
La motivation principale pour un bangbash en 3D, c'était le mouvement où il attaque par rotation autour de son point. Appelons ça l'attaque latérale. Elle était essentiellement intéressante dans l'optique d'un jeu en 2.5D où elle pouvait applatir Bilou contre un mur ou l'envoyer sur un plan de jeu plus proche ou plus lointain, permettant de prendre volontairement des dommages pour rejoindre une zone secrète.

The signature move of bangbash is the front bash, where it tries to smash directly what is in front of him. The reason why I had planned 3D was that the whole game was supposed to be 3D when Bangbash was first introduced (2006). And because it had a secondary -- spinning -- attack, which would be tricy to render in 2D. But the only "interesting" game mechanics I could think of based on this spin attack was to throw Bilou into a more distant layer.
l'attaque frontale (image d'archive)

Bon, tout d'abord, c'est discutable au niveau du game design -- similaire à des faux-pics ou de la fausse-lave. Je serais tenté de dire, avec le recul, que si le "damage boost" est une technique valide en speedrun, ça ne devrait pas faire partie de l'expérience de jeu "normale" de se faire volontairement toucher par un adversaire.

But by today's gameplay standards, I don't think it would be a good idea to ask the player to take damage in order to progress -- or even to find a secret location full of goodies. That would be no different from fake spikes, which I decide I'd no longer use. So maybe I should just do it in plain pixels. After all, pendats were also supposed to be made of 3D models, and they work quite well with mere sprites. The thing will be to ensure that BangBash is sufficiently interesting while being 'only' 2D.

Ensuite, conditionner la technique du moteur de jeu pour juste une idée de passage secret, c'est franchement douteux comme équilibre effort/retour. Surtout si on projette de faire son propre éditeur de modèles 3D en plus.

Bref, Bangbash devrait pouvoir rester un adversaire intéressant même si il ne peut faire qu'une attaque frontale (ou il frappe droit devant lui, dans le plan de l'écran). Je dois faire des essais d'animation pour trouver le rythme de mouvement qui colle. A partir de là, on verra bien si le support des rotations de sprites est utile ou pas pour l'animation.

Bangbash's movements are sufficiently different from pendats, bladors and recto/verso (bouncing erasers). It moves around by hops. I've been sketching some interactions with bladors -- now the major mechanics for the SchoolZone -- including the possibility that Blador might turn back bladors at you if it see them coming.

Je dois aussi trouver une place correcte dans l'espace des comportements possibles pour BangBash. On sait qu'il peut faire trembler les crayons et certains livres au point d'en faire tomber Bilou. On sait qu'il marque un temps d'arrêt avant de frapper.

Sa vitesse de déplacement n'est pas aussi élevée que celle d'un pendat qui court et la hauteur de ses sauts n'est pas comparable avec celle d'une gomme qui saute.

Unlike other "monsters in the school zone, I also plan to make BangBash a permanent baddie. You may stun it, but I wouldn't let it be dismissed and leaving the level like you can do with pendats. That's its defining trait: BangBash is strong.

Son atout (et son "originalité") tiennent dans sa résistance. Au moment du design de BangBash, il n'était pas encore question lancer de taille-crayon. C'est devenu un des mouvements-clé de la School Zone. Il serait logique qu'on puisse mettre BangBash hors-jeu d'un coup de taille, mais ce serait aussi sympa de réduire le champs des attaques possibles. Par exemple en permettant à BangBash de nous renvoyer un taille-crayon qui serait lancé de face.

Autre élément possible: ne pas permettre l'élimination complète de BangBash, uniquement la possibilité de l'assommer pour quelques temps.

Finally, one thing that I must make sure I implement is BangBash's ability to shake some parts of the level -- up to the point where Bilou could fall from them and becomes exposed to BangBash again. Unlike the 'spinning attack' that was sketched, but never used in any levels I designed (unsurprisingly, since level design happens on paper :-P), there are a couple of places in some levels where BangBash is placed in such a way that it "protects" some lone pencils. Those would stop being interesting gameplay elements if BangBash was to be replaced by e.g. a pendat there.

Sunday, April 19, 2020

3 ... 2 ... 1 ... Smile!

C'est tout simplement énorme. Je lance le décompte. Okay, ça fera sans doute pas le poids contre le kit 'dream(s?)' sur PS* et on a 8 ans de retard par rapport à 'Petit Computer' prévu pour les stores DSi.

Mais ce coup-ci, l'Europe a accès à la chose. Merci aux contacts des Taikenban et la communauté des cartmodders pour avoir attiré mon attention là-dessus. On en reparle, promis.

J'attends ... entre impatience et excitation. Ce sera peut-être le premier langage de programmation que je vais acheter. Incroyable, non ?
PS:

  • SmileBasic 4 a quand-même quelques nouveauté syntaxiques par rapport au MS-BASIC des années '80 ('70?), comme la possibilité de récupérer plusieurs valeurs en une commande avec le mot-clé OUT.
  • SmileBasic était le langage/interpéteur utilisé dans PetitComputer. Il reste des "Petit" à gauche et à droite dans certains exemples
  • Il y a une sorte de 'guide de l'utilisateur' dans les programmes téléchargeables, en plus des mini-tuto intégrés à l'outil. Et une documentation en ligne (encore un peu légère par rapport au SmileBasic de la 3DS).

Saturday, April 18, 2020

Link's Awakening -- un nouveau regard sur Koholint.

Je croyais tout connaître sur Koholint, à l'exception peut-être des techniques de speedrunners. Mais les enfants sont maintenant équipés de palmes Zora et J.L.N. s'est retrouvé sans que je ne m'y attende dans la région du "temple du nord", celui qui donne la clé-masque (pour le donjon 6) alors qu'il sortait à peine du donjon 3 (la cave au clés). En temps ordinaire, ça se serait terminé par un demi-tour mais ce serait compter sans la détermination d'un gamin de 7 ans qui a farmé 999 rubis dans le village (et quelques coffres) au point d'affronter le génie dans sa grotte l'arc à la main. Sans jamais avoir volé quoi que ce soit au village.

Il a donc traversé le dédale des Armos et s'est retrouvé face à face à un boss bien trop dur pour lui. Vu l'effort accompli pour y parvenir j'ai fait une entorse à la méthode de la tortue et j'ai affronté le boss pour lui. Puis c'est *deline qui est entrée "par erreur" dans le donjon 5 alors qu'elle cherchait le collier de la sirène.

D'ordinaire, quand vous terminez le donjon 4, vous ne savez pas enchaîner directement sur le 5 parce qu'un fantôme vous hante jusqu'à ce que vous terminiez une mini-quête. Rien de ce genre ici...

J'avais recolorié la carte de Koholint pour montrer quel item permet d'aller où, pensant en réalité "quel donjon permet d'aller où". Mais avec le non-conventionalisme des loustics et mon entraînement tout frais à évoluer avec un nombre réduit de coeurs je me rends compte qu'en réalité, dès la fin du donjon 3, on est en mesure de faire des rush dans les donjons pour chiper l'item-clé, ressortir sur la carte et débloquer le donjon suivant. Et oui, j'ai poussé jusqu'à aller chercher la baguette magique dans le donjon 8 alors que je n'ai encore vaincu aucun boss au-delà du donjon 4 (ce serait le 3 si je m'y étais pris plus tôt).

J.L.N était un peu déçu de ne pas pouvoir conserver le toutou pour continuer au-delà de la prairie... l'idée d'utiliser le coq volant pendant la plus grosse partie du jeu semble lui plaire, à défaut de faire des bomb-jumps comme dans le marathon caritatif de l'automne dernier.





Sunday, April 12, 2020

Tropcial Freeze

La série Donkey Kong Country est clairement une de mes préférées en jeu vidéo. Aussi bien comme référence de gameplay que comme passe-temps. DKC1 a été le premier jeu de plate-forme que j'ai pu finir (okay, en grande partie grâce au B.A.R.R.Y.L. de Maniak). Puis DKC2 le premier jeu que j'ai complété à 101%. DKC3 m'avait un peu déçu avec un character design discutable, mais ça ne m'a pas empêché de faire la chasse aux oiseaux-bananes dans ZSnes pendant de nombreuses soirées.

Puis arriva "Donkey Kong Returns". Si je le trouvais très plaisant visuellement, j'ai par contre été assez déçu par son gameplay. "Agacé" serait plutôt le mot juste. Ma petite prise en main de Tropical Freeze chez mon frère m'avait plutôt plu mais n'ayant pas de WiiU, j'en étais plus ou moins resté là. Jusqu'à ce mois-ci: mon frangin m'ayant offert le jeu pour switch.

La bonne nouvelle avec la Switch, c'est que je peux plus facilement mettre le jeu en attente même au milieu d'un niveau. ça évitera déjà les problèmes de saturation liés aux trop long niveaux des platformers modernes.

Les graphismes sont évidemment plus détaillés que sur le malheureux petit écran de la 3DS qui peinait à rendre la version Wii de DKR. Il y a malgré tout de nombreux moments où j'apprécierais de pouvoir choisir un zoom plus rapproché pour mieux voir où je retombe.

La présence de Cranky-Duck-Tales et Dixie-hélicoptères sont les bienvenus pour offrir un peu plus de souplesse au gameplay, et je crois que l'inertie de DK est un peu plus légère que dans DKR (je rate nettement moins mes sauts). Mais la véritable pépite, c'est la possibilité de jouer avec Funky Kong, ce qui offre le triple de points de vies (en mode 2 joueurs), la possibilité de planer à tout moment (ce qui s'avère par contre désorientant quand on s'est mis Donkey dans les doigts), et on ne craint plus les pics (moyennement intéressant, vu l'omniprésence des trous sans fond dès le 2eme monde). Un plus tout à fait appréciable quand J.L.N veut faire une partie avec super Papa Bros.

Il y a un truc avec lequel j'ai encore du mal. Je trouve les niveaux moins mémorables que mes bon vieux DK. Je n'ai pas encore réussi à mettre le doigt sur ce qui ne colle pas (ni si c'est dans ma tête ou dans le jeu, du coup), mais quand je me refais la bande son "en aveugle", il est rare que j'arrive à revisualiser les niveaux à partir de leur musique. Leur nom n'aide généralement pas beaucoup plus. La longueur des niveaux joue sans doute là-dessus, la construction à partir de structures 3D fait aussi qu'on sait moins facilement s'abstraire du graphisme pour retenir la structure générale (escalier, mur, plate-forme isolée, etc.) de tel ou tel morceau de niveau. Les bananes mobiles nous distraient encore un peu plus (plus besoin de reconnaître les murs creux ou les cachettes de bonus dans le sol). Par contre, il y a quelques éléments uniques très sympathiques -- presque Raymanesques -- comme cet instrument à vent géant au milieu de la montagne des hiboux ;)

Mekappleman

Le rythme 'confinement' me laisse paradoxalement moins de temps pour bilouter que mon rythme habituel. Malgré l'absence des activités de fin de journée des enfants, malgré l'absence de trajets en voiture. Entre les repas qui sont rallongés (intervention parentale oblige), les ballades de santé qui se transforment en promène-le-gamin, les mises au lit plus tardives et les débuts de soirées amputés d'un jt pour se tenir un minimum informé ...

Bref, dans tout ça, j'ai quand-même fait tourner un pseudo-dumblador sur le terrain simulé pour tester les pentes du nouveau moteur de jeu. Et je me suis retrouvé bloqué. Dans certains conditions, le code de gestion des pentes le fait entrer dans le sol plutôt que de le faire monter sur la pente. En cause, le mécanisme qui permet de 'mettre en attente' un déplacement le temps que l'animation soit prête pour un déplacement (qui peut être de plusieurs pixels d'un coup).

Là où ça se complique, c'est que le DumbBlador mélange ce genre de déplacement et des pauses. Difficile de s'assurer que les correctifs fonctionneront pour tous dans ces conditions. J'ai donc ressorti un personnage à l'animation 'plus simple', inspiré de l'Appleman.

J'ai aussi revu le mécanisme qui capture l'évolution des personnages, me basant sur l'idée que si ça ne t'aide pas à trouver les erreurs, ce n'est pas un unit test. Jusque là, testme BasicSlopesTests pouvait juste me dire que ça n'allait pas, et à quelles coordonnées le meka s'était arrêté. Le reste, c'était à faire dans le débuggeur.

C'est un début, mais c'est clairement perfectible. J'ai donc un nouvel objet GameObjectState destiné à capturer tout ce qu'il faut savoir du meka pour les besoins des tests (à la discrétion du programme de test) et un ensemble de ces objets en guise d'historique (plutôt que 2 tableaux de coordonnées et un de vitesses). J'ai pu aussi intercepter les rapports destinés au ChiefInspector (relai vers l'InspectorWidget) et les capturer dans les GameObjectState correspondant. C'est un peu  
laborieux à décoder, mais ça devrait réduire tout de même le travail de mise au point. Par exemple ce '$/ffff0001' est émis par doslopes qui échoue un déplacement (-1, 1) et 'S/0' que GobWalkerController reprend la main avec des vitesses nulles dans les deux directions.

Tuesday, April 07, 2020

Ori et la Baignade Interdite

J’avais réussi à finir Ori et j’avais été surpris de voir que je parvenais à repasser le niveau final (la poursuite de la chouette géante dans le volcan en éruption) en seulement 2 essais.

J'ai voulu refaire pareil pour la première séquence à m'avoir sérieusement bloqué: l'escalade de l'arbre version "baignade interdite”, surtout que j'ai maintenant beaucoup plus de points de vie et le mouvement optionnel du "dash”. Et une semaine, plus tard, je suis toujours dessus.

I had beaten Ori and the Blind Forest, but I wanted to show the final escape to the kids (or they wanted me to show them. Who knows). I have been surprised to beat it again in only 2 tries while it took me not far from 50 of them to succeed a first time. So I wanted to try something similar with the Ginso Tree escape. It was especially appealing since I now managed to find the optional DASH mechanism. Well. It's been 1 week, and I'm still trying to beat it again.
  1. il y a plus de micro-patterns ici, et il est plus difficile de reconnaître les lieux.
  2. ça fait nettement plus longtemps et je n'ai plus la mémoire aussi fraîche...
  3. à ce stade, les possibilités de se rattraper si on loupe son coup sont plus faibles:
    • pas encore de triple saut
    • pas d'escalade
    • pas de plume de chouette
Several things make the Ginso tree escape different from the final escape. The final escape can be clearly perceived as a collection of "room", and in each room, you have to perform a chain of tricks to get back to safety. There is no such "safety spot" in Ginso tree, and after a few "room-like" places (where you use wrapping trunks to change "room"), we get to a point where challenges blend into each others.

Remembering solution is only helpful if you can easily recognize the problem. Granted, my memories of the Ginso tree are older, but they weren't as good either because my memory was confused about where I had to do what.


C'est particulièrement contraignant parce que l'escalade dépend encore beaucoup de boulettes / ennemis à utiliser pour la mécanique du "bash”. Quand on rate un cycle, on est pénalisé par une longue attente qui peut se révéler fatale .... En plus, j'ai la nette impression que l’eau monte plus ou moins vite selon qu'on a été plus ou moins rapide, et qu'il n'est jamais possible de vraiment la distancer - quelque chose que j'avais envisagé pour School Rush.

Then, there is an additional difficulty because when you reach Ginso tree, your character don't yet have most the skills that makes the game more forgiving about a mis-timed jump: no gliding feather, no wall-climbing and no triple-jumps. As a result, beating the level depends a lot on using ennemies / shots to bounce with the BASH mechanics. If you miss a cycle, you'll have to wait a lot for the next one, and that may be more time than you can waste.
Refaire l'escalade des bois brumeux sur une partie "où je suis mieux préparé" après avoir débloqué les radars à upgrade de vie et de "mana" s'est révélé beaucoup plus simple.

  1. Au contraire de l'eau, les ennemis ne me one-shottent pas, et j'ai le double de points de vie par rapport à la première fois.
  2. la mécanique est bien rôdée. Le sprint aérien récemment débloqué permet de simplifier une partie du challenge
  3. avec plus de mana, j'ai pu refaire des sauvegardes juste avant et juste après l'obstacle. Alors que la "baignade interdite" est tout entière une zone dangereuse - sauvegardes interdites.
There is another part of the game that almost made me drop the game, and that is the impossible climb in Misty Woods. Trying to beat that again on my "better prepared" save slots (especially because I unlocked health-containers and mana-containers hints on the map at the cost of any other 'materia' upgrade) turned to be much more simpler.

  1. Unlike water, baddies doesn't one-shot you, allowing my health upgrades to be meaningful.
  2. The are is open space, meaning that the DASH (and especially the AIR-DASH) moves can significantly shorten the challenge.
  3. I've got more mana, meaning I'm free to make save spots just before and just after the challenge, while the whole Ginso Tree escape is a "dangerous area - can't save here".

Then came the forlorn ruins -- also a don't-save area -- which only took me some 3 or 4 tries. One-shots are frequent here, but strategies to beat the challenge are easier to express -- and therefore, easier to remember, as far as I'm concerned. Spots are easier to remember too (that turn after the door), which means I don't have to re-learn the whole sequence.

Puis j'ai refait l'évasion des ruines éplorées -- elle aussi en sauvegardes interdites -- qui ne m'a demandé que 3 ou 4 essais. Les one-shots y sont fréquents mais les stratégies plus simples à formuler -- et donc, à retenir, en ce qui me concerne. Les emplacements sont plus mémorables (le tournant après la porte), ce qui évite de devoir ré-apprendre toute la séquence d'une fois à l'autre.
ça va péter!

Je me suis rendu compte aussi, dans les ruines, que j'avais appris à reconnaître les signes avant-coureurs de certains évènements. Notamment cet éclairage particulier qui annonce un "laser de froid" mortel. Oh, pas que l'annonce demande de l'astuce pour être reconnue. Mais la taille et la durée de la hitbox correspondante -- ainsi que le délai entre annonce et hitbox -- ne sont pas aussi claires que si on était en mode 8-bit.

I also realised that I had learnt the telegraphic events warning about 'ice beams'. Not that you could miss it, but the timings between the warning and the event, the duration of the event and the size of the corresponding hitbox are more subtle than if we were on an 8-bit system. Once I realised that, I wondered what should I have learnt about Ginso Tree that I still don't know. I've watched a few let's-plays of that escape and finally noticed that monsters behaviour are triggered by our location. There is no master clock there. If you don't want baddies to have unpredicatble behaviour, you must train yourself to have a stable path. Then, at last, you can master the details of what spot you can reach with a BASH and what spot needs double-jump first to beat the level with a reasonable amount of effort.

Du coup, je me suis refait quelques vidéos de la baignade interdite en cherchant qu'est-ce que je devrais apprendre pour passer facilement. La clé, c'est de réaliser que de nombreux monstres réagissent en fonction de notre position. Contrôler sa position précisément, c'est forcer le jeu à refaire les même patterns plutôt que d'avoir un comportement imprévisible. On peut alors maîtriser les délais et les emplacements que l'on sait atteindre par un 'bash' et passer avec beaucoup moins d'embrouilles.

Sunday, April 05, 2020

Ori et les tutoriels

Après autant le stress et les efforts de ce que je considérais comme le boss de l'arbre, je me serais attendu à une petite cinématique de détente. Que nenni. Me voici pris au piège dans un "évènement" de montée des eaux qui nous met sous pressions, avec une nécessité d'avoir maîtrisé la nouvelle compétence "BASH" à un niveau encore supérieur, alors que les terrains pour la prendre en charge deviennent progressivement inaccessibles. C'est l'inconvénient de cette nouvelle génération de platformers aux sauvegardes contrôlées et aux vies infinies: si vous n'y prenez pas garde, vous pouvez vous retrouver condamnés à passer un pic de difficulté avec une quantité insuffisante d'équippement ou d'entraînement. Il m'aura fallu pas loin de 40 tentatives étalées sur tout une semaine pour en venir à bout.

With all that stress in the ultimate puzzle room of the Ginso Tree (up to the point that I thought I had beaten a boss), I was expecting a sort of congratulation cinematic or at least a quiet time. How fool I was! Here I am, trapped into an "event" with rising water. Even more pressure, requiring to master the BASH move up to another level, with floor estate to use it shrinking again and again.

To some extent, it shows one of the limit of those 'new-generation' platformers with controlled save spots and infinite lives: if you aren't monitoring how much equipment/health/training you have, you may end up with no alternative but fighting against the same difficulty cliff again and again, with no other things to explore in the game. Here, it cost me almost 40 tries.

Un peu plus tard dans le jeu (les bois brumeux), je tombe sur une séquence d'escalade où il va falloir cette fois maîtriser BASH exclusivement dans l'air. Le coup de la longue traversée en propulsant les projectiles des adversaires, c'est déjà chaud. Mais ici, il va falloir le faire tout en planant d'un projectile à l'aurtre pour laisser le temps à leurs lanceurs de se manifester et de préparer leur nouveau tir.

Cette fois c'est dit: j'y vois un défaut dans la conception de la courbe d'apprentissage du jeu. Les phases d'apprentissages libre étaient à coup sûr insuffisantes!

A bit later, I stumble upon another climbing challenge (in Misty Woods) where you need to have mastered the mid-air BASH move. A long set of BASHes using ennemies' bullets is already tricky to do. Having to do so while gliding from one baddy to the next so that they have enough time to prepare their next shot pushed me close to my drop-the-game limit. 

At that point, I was convinced that there was a huge issue with the game's difficulty curve and the lack of free-to-play tutorial areas for the newly gathered skills. Before you grab BASH, there have been other mechanics to master. That makes sense: we're somehow in a metroïdvania game. But both were mere extensions to the JUMP mechanic: against walls or double-jumps. They are introduced in the now-classical dead-end that you can only leave using the new mechanic.

Avant BASH, il y avait déjà eu d'autres mécaniques à apprendre (logique: on est dans un métroïdvania): le wall-jump et le double-jump. Elles sont présentées (coup classique) dans un cul-de-sac dont on ne sait ressortir qu'en ser servant de la nouvelle mécanique. Si c'est un poil trop classique, ça signifie que pendant qu'on s'adapte à la nouvelle mécanique, on est en terrain connu et stable. Les mécaniques sont classiques elles aussi, et viennent assez naturellement, puisqu'il suffit de presser davantage sur le bouton de saut.

Pour arriver jusqu'au BASH, il aura fallu traverser tout une première partie de l'arbre Ginso .. une série d'épreuves qui demandent essentiellement la maîtrise de la dernière compétence acquise: le double-saut. (inattendu pour moi qui suis habitué aux donjons Zelda où la première phase est assez neutre en termes de mécaniques à maîtriser)
Une fois BASH acquis, il y a bien une série d'écrans-tutos avec aussi des boîtes de texte du style "presse X pour attrapper un ennemi et te projeter". Ah. Autant pour mon impression d'avoir été jeté dans la mélée sans préparation.

L'écran suivant va un cran plus loin, avec le mécanisme de projection des boulettes. Ici on peut non seulement se propulser mais aussi "tirer" dans la direction opposée. A défaut d'être en terrain connu, chacune des "salles" est assez petite pour qu'on ait la situation claire sous les yeux. On devrait donc être en mesure de voir ce qu'il y a à faire et se concentrer sur les manipulations nécessaires pour y parvenir.
Puis les choses deviennent plus sérieuses: tentacules tireuses (qui réagissent à notre présence, contrairement aux tireurs de boulettes périodiques), disparition du sol stable, téléporteurs à anticiper, ... Il faudra gérer la portée du BASH en l'air (apprendre une distance implicite), combiner le bash avec le double saut. Et la présence de tous ces pics nous décourage de créer un nouveau point de sauvegarde intermédiaire.

Then you face that "half-boss" monster

Il ne restera plus que la confrontation avec un ennemi qui fait demi-boss où l'on apprend qu'on peut renvoyer les tirs de n'importe quel adversaire.

Je dois bien revenir sur ma première impression après avoir refait cette section-là: il y avait bel et bien une phase tutorielle (même si essentiellement maquillée au notuto) et on y apprend bel et bien tout ce qu'il faut savoir avant d'attaquer la grande montée d'eau dans l'arbre Ginso.

Et si je compare avec la vitesse à laquelle on est supposé avoir maîtrisé le "charged wall jump" (qui arrive sur la fin du jeu) l'entraînement et l'exploitation étaient assez clairement découpés.

Ici (mont Horu?) on doit dès la deuxième utilisation utiliser des suites d'actions relativement longues et complexes. (wall jump suivi d'un double jump et on s'accroche pour escalader la paroi). Mais il est vrai que comparer à BASH, le nombre de paramètres à apprendre est réduit: pas de timing, pas de distance de capture de l'action, pas de précision à acquérir. Juste la portée résultante.

No precision to master, this time