Tuesday, October 22, 2019

Ori and the Fantastic Beasts

Je crois avoir trouvé ce qui me dérangeais dans le bestiaire d'Ori. Ori lui-même et les deux NPC majeurs (sa 'mère adoptive' Naru et Gummo/Gollum) sont fortement exotiques à nos yeux. Et quelque part, ça a créé chez moi l'anticipation de jouer dans un monde onirique et exotique (au sens différent de tout ce qui m'est familier). Ce caractère est rencontré par certains des monstres, mais pas par la majorité de ceux qu'on rencontre au début de l'aventure. Les oiseaux et les araignées, notamment, sont à mon avis trop proche de ce qu'on peut avoir dans notre monde.

Ensuite il y a les blobs. Ils sont effectivement absent du monde réel, mais ils sont tellement présents (et cliché) dans les jeux vidéos que j'ai l'impression qu'eux aussi ne collent pas avec l'effet exotique attendu.

It took me time to pinpoint what was bothering me with the monster design in Ori and the blind forest, but I think I finally figured out. Ori, his "mother" Naru and Gummo-the-Spidey-Gollum have strongly exotic design -- by exotic I mean far away from what we could find in our world. Maybe "alien" would be a better term. Some monsters share this exotic trait, but others don't and tend to take me out of the "wow ... another world" feeling. Sometimes (e.g. for birds and spiders), they feel too close from what we can find in our world. Sometimes it is because they are too cliché (especially the blobs).

L'effet exotique est rencontré par contre dans les "frogillas / fronkeys", mélange de deux animaux tels qu'on pourrait le voir avec les pégases. L'effet est malheureusement réduit par le fait que cet ennemi est souvent vu "ramassé", en embuscade.

L'effet est maximal avec l'espèce d'orbe qui sert de mini-boss dans l'arbre et qu'on retrouve dans le volcan. Là, on est complètement dans un autre monde. L'effet est réussi aussi avec l'espèce de micro-rhinocéros auquel on peut faire perdre la carapace (si on découvre qu'il peut la perdre) et avec l'espèce de grenouille-cracheuse, parce que si elle gonfle son ventre comme une grenouille, elle se promène la bouche vers le haut, vers ses quatre patte telle une sorte de plante mobile. Mais tous ces personnages sont arrivés bien plus tard face à moi, et à part dans le "col du chagrin", ils restent minoritaires.

The most exotic ones are likely the shooting orb in the fire areas (and met once in the tree, for some reason --  This one even almost feel alien to Ori's world -- and the fronkey / frogilla, an efficient pegasus-like merge of two existing animals. The effect on the frogilla is however diminished by being too hard too read when crouched.

After closer analysis, what initially looked like "just a rhino" turned exotic when you realise you can make it lose all its armor (which only occured after I completed the game once), and when you note that the other frog-like monster (the one that spits at you) looks like a flower bulb on legs...


Even the crows were actually quite alien with their four eyes (spotted on some artwork). But honestly, who did notice that while playing ?

Je constate à posteriori qu'ils avaient dotés les "corbeaux" de 4 yeux (+exotique) mais c'est malheureusement indistinguable à la résolution choisie pour le jeu: on dirait juste des yeux obliques fâchés.

Dans l'ensemble, le jeu reste grandiose. Et si l'apparence des monstres a pu être décevante, la variété des interactions n'a rien à envier à commander Keen

C'est une image que j'aurais dû blogger depuis des années, où les monstres de "Shadowland" ont été triés selon leur niveau de résistance au tir de Keen (horizontalement, gauche = facile, droite = impossible) et de leur mobilité (verticalement. Haut = presqu'immobile, bas = peut occuper de très nombreux emplacements différents).

Deux coins y sont vides:  le supérieur gauche qui correspondrait à un ennemi quasi-immobile et éliminé en un tir -- donc inintéressant au niveau du challenge proposé. Ils sont pourtant présent dans Ori (via des blobs immobiles et passifs) et font office de cachette-à-bonus en début de partie. Le coin inférieur droit correspondrait à un ennemi invincible et succeptible de suivre le joueur dans toute la map. Un cauchemar, quoi. On pourrait y caser le "dopefish", celà dit, et c'est uniquement sa taille et sa lenteur qui permettent au joueur de s'en accomoder.

So finally, some monsters could have benefit from less detailed but more readable design, and only the blobs are truly lacking distinctive look. Unfortunately the blobs are from far the most ubiquitous monsters. Good news is that the design space for the interactions is varied enough. Some chase you, others don't. Some have a weak point to some of your other techniques, other don't. Some shoot things you can bash, other shoot spikes you *must* avoid, etc. I don't have yet a map to show all that as cleanly as with Commander Keen 4, but it still convinced me.
 
(that Commander Keen map had mobility on the vertical axis and stunnability on the horizontal axis: top-left corner = limited mobility and stunnable: given that SHOOT can be done from 4 directions at screen distance).

When I did the monster analysis of Keen, I noted the lack of monster in the "does not move, can be stunned" area. Such monster would offer no challenge, and the correspondant design space is thus empty in Keen. There is such monsters in Ori, though, and they serve as "coin blocks" and destructible walls. bottom right corner = free mobility and invulnerability, usually empty except ... Oh yeah, there should be the dopefish. Only its large size and slow speed make it manageable.

Friday, October 11, 2019

gameplay: les éthers

Je suis retombé sur un vieux document (~2005) présentant une mécanique de jeu qui n'a pas vraiment trouvé sa place dans Bilou : les Ethers. Je venais à l'époque de jouer à Minish Cap, Kirby: Amazing Mirror et à Cave Story et je cherchais quelque-chose succeptible de fournir un gameplay intéressant tout en intégrant la "progression" des pouvoirs de Bilou.

On aurait donc commencé le jeu avec un personnage capable tout juste de marcher, lancer des trucs ou faire des sauts d'une taille modeste. On aurait aussi eu dans le jeu des petits éléments à la forme indéfinie, mais brillants et colorés, qui influencent les actions possibles.

Here are sketches that pre-date NDS development by a few years. A colleague had just got me playing Cave Story after I had played Kirby Amazing Mirror and Minish Cap. I had found the way Cave Story introduced experience bits a great game design idea, giving you not-so-permanent upgrades for playing well. The sketches are all about adapting the idea to Bilou's Grand Adventure. I wasn't so fan of how Cave Story requires you to equip low-power weapons so that *they* get upgraded. Instead here, the experience bits -- dubbed 'ethers' -- would come in different hues, each corresponding to a category of moves that benefit from their collection.

Comprenons-nous: les pouvoirs évolutifs font partie intégrante du synopsys depuis sa première écriture en '94, mais à l'époque ils concernent essentiellement des "pouvoirs technomagiques" comme un tir laser, voler, paralyser les ennemis, etc. Et en plus, ils "consomment" de l'énergie magique que l'on doit ramasser ici ou là.

Les éthers doivent bien être ramasser pour octroyer le pouvoir correspondant, mais ils n'auraient pas été "consommés" quand on s'en servaient. Ils devaient aussi servir de points de vie (pour les Ethers bleus) ou invoquer Bouli (ethers jaunes) et utiliser des attaques combinées (ethers rouges). Les autres (cyan et verts) devaient principalement permettre de booster les capacités de mouvement de Bilou, plus que ses facultés d'attaque.

They should have replaced 'magic meter' that the BASIC-era game required to use the special powers acquired by defeating bosses. Comparatively, you don't consume ethers when you use them (e.g. running at top speed does not deplete your power meter), but you lose some of them if you get hit. And the harder you get hit, the more you lose.

à la place, ils sont perdus quand on se fait toucher ... et plus le choc est violent, plus on en perd. L'objectif étant de récompenser le joueur qui parvient à passer un obstacle sans dégats en mettant certains ethers uniquement avant l'obstacle et un secret/bonus nécessitant ces éthers de l'autre côté -- de la même façon que Kirby va nous inviter à traverser une zone tout en gardant un marteau qui sera nécessaire pour débloquer un coffre dans Amazing Mirror.


Seulement voilà. Je n'ai jamais trouvé un moyen convainquant de faire "gagner" des ethers à Bilou. Contrairement à Cave Story, ici, on est pas attaqué par des vagues de mini-monstres qu'il faut dégommer à toute vitesse. On est plutôt dans un jeu où "les bonus se dandinent à environ 1m du sol". Et les idées pour en obtenir à partir des p'tites pommes et des fleu-fleurs m'ont semblé 'anti-Bilou' sur le principe ... donc le tout est tombé dans l'oubli.

There's one issue I never solved, though: there aren't as many ennemies to defeat in Bilou's Adventure as there are in Cave Story. If ethers are needed e.g. to recover health, that means previous collectibles like apples or letters should somehow provide ethers. And well, I couldn't find a way to make that happen that wouldn't make Bilou fall into the dark side.

edit: Plus, "defeat, move, collect" formula works nicely with gameplay where defeating foes can be done at distance, like in a run-and-gun game. In Bilou, you need to be close to defeat anything anyway, so having then to chase bits of whatever to gain experience would be broken design (my opinion, 2023)

Wednesday, October 09, 2019

[done] remove import statement

Bion. Voilà une chose de presque faite. On pourra donc faire le nettoyage des commandes "import" (définissant les ennemis, etc) directement à partir de LEDS. De quoi permettre un peu plus facilement de passer d'un type de niveau à un autre en mode 'gamedev nomade'.

Je suis encore loin d'un outil qui soit "game-jam friendly": c'est pas avec SEDS+LEDS que vous allez remporter la Ludum Dare (mais si vous y arrivez, postez-moi le lien vers votre jeu, hein ^_^), même comme ça. Et avant de mettre ça sur ma DS, je devrai au minimum prévoir un message du type "êtes-vous sûr" ([done]), parce qu'en revanche, je n'ai encore rien pour permettre de rajouter des blocs définissant les machines d'états (ou autres) dans LEDS ^^"

---

Ah. Vous êtes toujours là ... je vous dois peut-être bien des excuses, du coup. C'est vraiment du micro-posting, je le reconnais. Le fait que j'aie commencé à parler de la feature il y a deux mois ne rends pas ceci beaucoup plus intéressant. C'était du micro-coding, aussi. Je dois m'y faire. Euh, bon, c'est vrai: je joue beaucoup à la switch ces derniers temps. Et j'ai repris une série de bouquins (Hyperion / Endymion) que j'adore depuis près de 20 ans, vu que ma collègue-et-les-méthodes-de-la-rationalité ne les avaient pas encore lus...

Tuesday, October 01, 2019

Ori and the Blind Forest

J'ai des screenshots d'Ori and the Blind Forest dans mon répertoire de fonds d'écran depuis Septembre 2015... Ce jeu est tout simplement une pépite, et depuis ce week-end, je peux enfin y jouer sur ma switch. Youpie.

Que ce soient les graphismes, l'animation ou la bande son, ce jeu est juste sublime. Le personnage se contrôle assez agréablement, à l'exception des atterrissages sur des zones étroites que la physique du jeu rend assez ardus (d'autant qu'il s'agit généralement de plate-formes suspendues qui se mettent à se balancer quand on arrive dessus).

Ori and the blind forest is another of those indie (?) games I've been longing for, hoping that one day it might be ported onto a system I'd own. I've been in love with the game's look since September 2015 (according to my Pictures/backgrounds/ timestamps) and now at last, I can play it. After watching some speedruns of the game, I even tweaked the screenshots I had so that they start giving me advices to be a better programmer.

Les enfants étaient sous le charme, évidemment, mais la progression de la difficulté est particulièrement éprouvante pour eux. Faire un saut à partir de la course, ça demande mine de rien pas mal de timing et de confiance en soi. *deline, du haut de ses 10 ans, restait régulièrement immobile pendant plus d'une minute avant de se lancer pour un saut délicat.

Autre petit clin-d'oeil: pendant que j'attendais de pouvoir jouer au jeu, j'ai progressivement "customisé" les économiseurs d'écran pour qu'ils m'aident à prendre de bons réflexes de développeur en équipe, à adopter les "coding guidelines" de mes collègues quand ce n'était pas automatique pour moi.

J'ai évidemment mitraillé le jeu pendant mes premières heures. J'espère revenir dessus en mode "pixel study", même si je risque de souvent être dépassé. Le seul point qui me déçoit un peu, c'est le "bestiaire", principalement constitué de blobs ou de choses qui vont trop vite pour qu'on les distingue ...

I'll have to make more detailed posts about it later on. So far, I can just confirm that the kids loved it (10yo. girl + 6yo. boy), but struggled with almost every new obstacle to pass, be it a jump over a deathly pit, climbing a wall or whatever.

Saturday, September 28, 2019

owlboy: monkey feedbacks

J'étais arrive au continent volant, convaincu qu'avoir pris conscience que je jouais à un shoot-em-up allait enfin rendre le jeu plus facile à aborder. Malheureusement, ça n'a pas suffi. Je me débats avec le tir explosif du personnage secondaire, je peine contre des mouches carnivores invisibles pendant des heures pour finalement découvrir dans un let's play (après avoir laborieusement passé la zone) qu'en réalité elles sont juste déclenchées par un timer quand on reste trop dans le noir, et qu'il faut trouver d'autres torches pour les tenir à l'écart, et non essayer de les vaincre.

Je ne peux pas m'empêcher de penser que quelque-chose lié au temps devrait clairement indiqué comme tel au joueur. Ok, l'idée des mouches carnivores est merveilleusement intégré à l'histoire, mais rien ne les lie au temps, au fait d'être dans l'ombre, ni même ne nous renseigne sur ce qu'elles sont réellement.

d'autant que juste après ce dialogue sur la peur des mouches, on tombe sur un buisson avec des insectes qui tournent autour et qui se mettent à nous tourner autour. On ne sait pas les toucher, mais si on brûle certaines lianes (le personnage au "briquet" vient de nous dire qu'il ferait de son mieux pour les tenir à l'écart, c'était assez gros comme tutoriel déguisé), elles quittent les lianes pour se réfugier dans le buisson voisin.

Mais non. Ce n'était pas ça.

Le mouches en question sont noires, et invisibles dans le noir. Et je ne suis pas le seul à m'être tout d'un coup dit "eh ? que se passe-t'il ? pourquoi je perds ma vie, tout à coup ?". On aurait pu être dans une impasse, et être forcé d'apprendre. Les mouches auraient pu être visibles si on est mis game-over. Mais en réalité, si on va suffisamment vite, et qu'on va de l'avant, on reste assez proche des lucioles innoffensive jusqu'à ce qu'on atteigne un 'fruit-lumière'. On a donc pu passer et les mouches vont passer au second plan. Le problème se reproduira plus tard dans le niveau, quand les fruits-lumière se feront plus rares. C'est là que j'ai dû faire appel à un wiki pour comprendre de quoi il retournait, à quoi ressemblaient ces "mouches", etc. personnellement.

Je suis tenté de raccrocher ça au fait qu'on est en face d'un jeu indé, avec une équipe trop restreinte pour qu'à un moment quelqu'un de suffisamment influent et avec assez de recul sur le développement ait dit "non, ça ne va pas. Les joueurs ne comprendront pas". Peut-être bien l'origine de ce que Kirby Kid appelait "that indie feel" ...

Tout ça me donne l'impression que la communication des objectifs et des avertissements n'est pas aussi claire qu'elle le pourrait. Et le deuxième boss dans la lave a tendance à me renforcer dans cette idée. Ici, on se fait régulièrement attraper par un des singes et plonger dans la lave, ce qui met fin au combat. 30 à 40 minutes de jeu plus tard, ça n'avait toujours pas changé. Je ne m'attend plus à passer un boss du premier coup dans le jeu: je sais qu'il faudra que je sacrifie d'abord quelques vies pour comprendre ce qu'on me veut.

Ici, il aura fallu une vidéo youtube pour que je réalise qu'il était possible de se libérer de ce genre de prise. Et non, je n'aurais jamais pensé utiliser le bouton "Saut" pour ça! Ni qu'un tel mécanisme puisse être introduit si tard dans le jeu sans un indice sur l'action attendue. D'autres évènements en cours de combat (comme le fait d'être enflammer) sont annotés avec l'action à faire pour se "soigner". Pourquoi pas ici ?

Iconoclasts perdait peut-être parfois un peu en immersion avec ses icônes, mais au moins les intentions des développeurs étaient claires. Ici, on dirait qu'il manque le message "RELOAD" d'un rail shooter.

Et ce genre de problème de communication va se généraliser jusqu'à ce que l'on trouve le troisième personnage et que le jeu s'écarte un peu du fait de tirer sur des cibles. Mais Alphonse et son arme dont on ne voit ni la portée ni la direction de tir va nous faire passer un désagréable milieu de partie...

https://www.spriters-resource.com/fullview/78065/ {alphonse}
https://www.spriters-resource.com/pc_computer/owlboy/sheet/84737/ {monkey}

Thursday, September 26, 2019

Charly et le Poisson-Rêve des playmobils

Link's Awakening, c'est peut-être bien mon jeu préféré. C'est en tous cas mon "Zelda" préféré depuis 25 ans et j'y ai rejoué à de nombreuses occasions. Donc oui, évidemment que je me suis chopé une cartouche du jeu dès que possible. Bien entendu, que j'avais l'oeil sur sa date de sortie dès qu'elle a été annoncée. Naturellement, je bidouille nettement moins mes p'tits éditeurs DS le soir.

Ce mois-ci je joue à Link's Awakening dans son incarnation switch... "au pays des Playmobils", comme je dis avec J.L.N et *deline. En mode héroïque (pas de p'tits coeurs à part au village, pas d' petites fées à part dans les fontaines), vu que j'en étais arrivé sur GB à essayer de finir le jeu sans épée L2 et sans boomerang. Mais un Zelda, c'est quand-même plus intéressant quand on doit chercher plus que quand on doit chercher moins.

Et je me suis même fait un 'fork' de la partie où je ne m'autorise les sauvegardes que si j'ai réussi à débloquer un objectif sans perdre de vie.

I'm not 100% sure this is my favourite game ever, but it is clearly my favourite RPG ever. Next month will be #linktober for me. And I'm collecting some screenshots to improve my pyramid level if I can.

I realize with this re-play (and watching kids playing the game) that one of the key strengths of Link's Awakening is how the initial village -- your exploration headquarters for almost the first half of the game -- is a cozy place. There is no time pressure, you can recover health, items, and even money as long as you want. There are people to talk to, ways to help them even without having to leave the village. There are minigames that can dry your money as long as you have some, meaning you can put yourself in an endless loop of lawn-mown-for-money-to-play-games without ever facing any danger.

There is no such "safe spot" in Link to the Past (the screen where your home stands is crippled with shadow soldiers), Occarina of Time (you're almost told you'll never return to Kokiri Village by the time you're out for Hyrule) or Wind Waker (your island is at the edge of the map, and you don't really need to return there unless you need grandma soup). The closest would be Phantom Hourglass, but there the village is also the front door of the Temple of the Ocean King, which isn't quite cozy to think of.

Adventures in LVM

I had issues resizing the / partition of my system some time before creating the last VM I was using at work, so apparently I though "oh yeah, I'll enable Linear Volume Management (or whatever LVM stands for) this time".

Everything worked fine as long as I was running on that VM. And I don't remember having to grow the partition (I'm unsure the disk backing it would have allowed it to grow a lot, anyway).

But then I had to make the same virtual disk working on a new root filesystem, likely because the new VM has UEFI boot enabled by default and the previous disk image was for MBR-boot only... https://www.svennd.be/mount-unknown-filesystem-type-lvm2_member/ helped a lot to recover stuff.

Do you think that would make it.

No. Of course not. I managed to screw my enlightenment window manager configuration, and end up with nothing but black-on-black windows (with nice blue shadows when I switch focus, though). Since all the enlightenment configuration files are "encrypted" now, I unfortunately can't vim me out of this mess, so I thought "never mind: I'll mount a second instance of that hard disk and recover files from there ... haha. Nice try.

Of course, the two disks have the same LVM identifier, so none of lvscan and friends allow to use both at the same time >_<

some shutdowns later, I copied back my configuration and have a working window manager again. pfew.

Next time, I'll remember to archive contents of ~/.e/ before feeling adventurous... enlightenment nicely makes up to 10 backups of your files, but when one more is lost about everytime you start a new session, apparently. And one quickly makes lots of sessions while trying to fix such issues :-/