Saturday, October 29, 2016

Le journal de Link : Cher Bouclier

Je n'oublierai jamais le jour de notre rencontre et je te promets de ne jamais te perdre dans l'estomac géant d'un bibedum.
On en a vu des belles et des pas mûres, tous les deux, et tu m'as sauvé la vie à bien des reprises.

Quand je repense à tous ces squelettes et hommes-lézard qui traînent dans les donjons de cette terre désolée, je frémis rien qu'à l'idée que tu n'aies pas été à mes côtés pour bloquer leur attaques meurtrières. Avec toi, ce n'est qu'une question de patience d'en venir à bout: choisir la bonne distance, ne pas plonger tête baissée, et porter un coup d'estoc lorsqu'ils reprennent leur esprits. Ils peuvent bien tenter de passer par-dessus moi, tu suis leur mouvement encore mieux que Navi.

Heureusement, ils sont trop bêtes pour se mettre à plusieurs pour m'attaquer. Sinon, il faudrait que je commence à me déplacer dans la pièce pendant le combat, choisir un emplacement stratégique parce qu'évidemment, si je me retrouve vraiment au corps à corps, tu ne me seras plus d'un grand secours. garder la bonne distance: tout le secret est là. Assez loin pour que tu sois efficace, et assez près pour que je sois efficace aussi :)

Il n'est pas encore forgé le canif qui nous séparera.


Wednesday, October 19, 2016

Pause Ahead

Très sympathique petit jeu que ce "pause ahead". Un petit labyrinthe, un personnage qui se cherche, et un mécanisme de gameplay tout à fait intéressant de manipulation du temps. La mise en pause n'agit pas complètement sur le personnage: il conserver son inertie et "dérive" sans que plus aucun danger ne puisse les blesser. Un mur pourra par contre annuler leur déplacement horizontal ou vertical.

Au bout de quelques niveaux, malheureusement, c'est devenu trop dur pour moi. La marge de manoeuvre pour construire la bonne vitesse, et le timing autoriser pour y parvenir devient trop juste pour un "casual gaming" du soir.

PS: le temps d'écrire ceci, de finir d'écouter ma fée, mon laptop s'est mis en mode "powersave (800MHz)" et le jeu s'est du coup ralenti au point que j'ai pu avancer jusqu'au boss (final?). que je n'ai quand-même pas pu finir. "Don't dumb it, slow it down", qu'il disait.

Tuesday, October 18, 2016

sprck || fail.

Good news: I managed to reproduce in a controlled environment the corruption of a spriteset. Bad news: because I had no idea what was the possible cause of such corruption, I just went through a random set of deletions and then a random set of recycling of the released blocks. And repeating the process from a sane initial spriteset until the "checker" tool reports something abnormal

One interesting thing, though: what's abnormal is abnormal twice: not only I shouldn't have "cross clusters" in my sprite pages (two slots on two pages actually referring to the same tiles), but I possibly shouldn't have "0" at all (it is reserved on most spriterams) and I definitely shouldn't have some odd tile number since the smallest allocation unit so far is 4 tiles.

edit: Another curious thing, on the "animations" subset: one page makes reference to tiles that are not in the spriteset! possibly unused things that were inserted when the page was first created and then deleted before first saved into the spriteRAM. I guess I'll need to make sure I have some automated test that do something like that, too.

edit++: I think I got most issues fixed now. I'll have to give it a run on a real device and see whether I accidently broke something with all the "refactoring"  ...

Sunday, October 16, 2016

Spongebop-lifts

Entre les améliorations de mes outils de base pour qu'il redeviennent fiables, le tri de mes listes youtube et la lecture de ce chouette texte sur Mario World, je récolte les idées en vadrouille succeptible de faire un bon dernier-niveau-vertical pour cloturer School Rush.

Not being able to immediately start with the new level gives me the opportunity to let comments from "reverse design" and miscellaneous youtube video percolate in my mind to come up with building blocks for the vertical level of School Rush. For instance, Spongebop "moving platform" doesn't really fit a one-screen-wide level. It would be better to have it as an elevator. Good thing is that I actually have all the core logic ready, and just need at most one extra controller.

Ici, c'est SpongeBop qui s'y colle, reconverti en ascenceur ... la logique qui lui permet de se balancer en arc de cercle offre déjà tout ce qu'il faut pour détecter s'il faut accélérer ou décélérer le mouvement. L'ascenceur aura un mouvement un peu plus élastique qu'une traditionnelle plate-forme d'un Mario, mais ça ne me gène pas vraiment.

Friday, October 14, 2016

ngised emaG

C'est une pépite que je découvre et dévore grâce à Kirby Kid: le ""reverse design" de Super Mario World ... comprenez une analyse poussée d'un de mes jeux de plate-forme favoris, ce qui le rend unique par rapport aux Mario précédents (moins d'inertie au sol, physique des sauts simplifiée, etc.) et une quête pour la compréhension du niveau de difficulté et de son évolution au sein du jeu.

Thanks flies to Kirby Kid for re-tweeting something that made me discover The reverse-design of Super Mario World (a.k.a. debriefing a statistical analysis of the game's challenges based on Mario's jump). How high can you jump, and what do you need to get that high ? How large is the death zone (aka d-distance) of a specific jump ? what is the penalty for failing ? is the height difference making the jump simpler or harder ? and how large is the safe landing zone on the target platform ?

Je n'ai pour l'instant que la version "web" du document, mais qui étudie déjà fort numériquement les capacités de Mario dans le jeu, avec les hauteurs (4, 5, 6, N blocs) et longueur (5, 8, 12, N blocs) de saut et propose la notions de d-distance -- la distance horizontale que Mario doit franchir en sautant pour éviter un obstacle mortel -- en plus du différentiel de niveau entre la plate-forme de départ et celle d'arrivée... ou de la distance entre le premier ennemi sur la plate-forme et le bord de celle-ci. Des chiffres qu'il me tarde de comparer avec ceux de Bilou que j'avais décrypté après le play-testing de mes deux premiers niveaux (pour ajuster la difficulté du jeu, justement).

I remember collecting similar figures about my own games between the original two levels of School Rush and the more complete gameplay I have now. But the authors do not only focus on how the difficulty curve evolves over the game. They're also interested in how a gameplay element (e.g. rotating platform or torpedo launcher) can be simplified into its most elementary instance (the standard challenge), increased numerically according to their metrics (aka "expansion": denser ennemies, larger death-distance, etc.) or evolved into something different (where e.g. route planning is involved) that requires additional skills after the standard challenge is sufficiently mastered. They also point out that a challenge may often just be mutated -- that is, turned into something different but that isn't any harder by any metric we can think of. Just the same challenge, but without being annoyingly repetitive.

Les auteurs présentent de manière très juste Mario à la rencontre de l'action pure (atteindre des cibles) et de la plate-forme pure (passer par-dessus des trous). Son mouvement fétiche -- sauter sur les koopas -- combine en une seule mécanique les deux pilliers d'arcades sur lesquels il est construit. De tous les costumes du dernier épisode sur NES, Super Mario World ne retient que 2 power-up: celui qui tire Mario davantage vers l'action (la fleur) et celui qui améliore nos possibilités de manoeuvre en matière de "plate-forming" (la cape). Une dualité qu'on retrouve finalement aussi dans les power-ups de mon petit "School Rush".

La grille d'analyse qui nous est proposée s'ajuste aux "thèmes de gameplay", axés soit sur le timing ou la vitesse, et soit sur l'action ou la plate-forme. Sauter au bon moment, ce sont les plate-formes mobiles. Frapper au bon moment, ce sont les ennemis périodiques. Sauter pour aller vite, c'est le thème de la "conservation du moment cynétique" (pardon pour la lourdeur de traduction).

Based on the fact that Mario's gameplay is a mix between pure action (hitting targets) and pure platforming (mastering gravity to leap over pits), they propose a reading matrix to Mario World's challenges, depending on whether they're requiring timing skills (jump/fire at the right moment) or speed skills (keep jumping because platforms are falling, for instance). I'll need to read more of their examples on periodic ennemies and intercepts to accurately understand why they put one in either category ... I hope it will help me coming with good design for my climb-to-the-source-of-all-ink level ^_^./

Reste l'intercepteur, cet ennemi dont la trajectoire croise celle du saut le plus naturel pour aller d'un point A au point B et qui en module du coup significativement la complexité. Typiquement (mais pas uniquement) un koopa volant par-dessus un trou entre deux plate-formes... mais que j'ai du mal à associer à l'interaction "vitesse et action", personnellement.

A noter que "vitesse" ne signifie pas forcément "bouton de saut" et peut s'appliquer même dans un jeu comme Commander Keen: dès qu'il y a quelque chose qui nous oblige à rester en mouvement (comme des plate-formes qui tombent au bout d'un moment), on est du côté "vitesse" et pas du côté "précision/timing".

Sunday, October 09, 2016

./sprdo && ./sprck

Bon, ç'aurait dû être un post illustré avec Bouli en train de déplacer des morceaux de code et de trancher des dépendances foireuses "comme dans un donjon de Zelda" avant de découvrir dans un coffre le nouvel objet ultime (en forme de grappin) pour aller explorer plus loin dans le code et vaincre le Bug Final.

Mais bon j'ai trouvé suffisamment de mini-bugs avec les deux premiers tests (effacer une page de sprites ou copier un page de sprites) pour m'occuper pour ce week-end.

Maybe I'll eventually illustrate this with Bouli-the-Hero crawling into the Dungeon of Technical Debt, moving blocks of code to separate model from view/controller, attacked by unneeded dependencies as he tries to get his hands on the Unittest Fairies Hookshot, which is mandatory to access the Bug's Lair.

But I'm already deeper into that dungeon, in epic (?) fight against mini-Bugs and trying to collect as many small keys as I can to get hints that will hopefully allow me to solve the dungeon's ridle.

Tuesday, October 04, 2016

HoB-style

The game I'm looking forward to play this season isn't the latest Zelda, it's HoB by runic game. Gorgeous look, explorative gameplay ... on a planet that contains even more secrets than I'll ever be able to pack on Bilou's crash site. And perfectly readable visuals.

I love this mix of huge stone constructions and technology. This architecture made of sharp angles and (arcs of) circles ... this world that looks like a gigantic jigsaw waiting to come back into a single piece.

Ooh ... j'ai vraiment très envie d'y jouer celui-là! HoB par Runic Game. Sans doute même plus que le prochain Zelda. Une planète entière qui est un mystère. Un gameplay fluide et presque parfaitement lisible. une ambiance de mystère, un design intriguant pour le décor qui mélange nature sauvage et ruines technologiques, un mélange combat/énigmes (comme dans un Zelda ?) ... et une de ces mise en scène !

Voyons un peu ... est-ce que je peux utiliser quelques éléments de cette architecture magique, mélange d'angles droits et d'arc de cercles pour pimenter un peu ma propre "Castle Zone" ? Est-ce que ça marchera dans une vue de profil en 2D? Est-ce que je peux moi aussi me permettre des morceaux de tours qui se déplacent sous l'effet d'une technologie qui n'aurait pas dû être là ? ... à cogiter.

I wonder ... Is there some way to use somehting like that to make my own Castle Zone more interesting without making it look like a HoB-Zone ...
- damaged architecture is more interesting than completely built
- there may be some people still surviving in that environment, chances that they're struggling and will be hostile to Bilou
- and such environment also attracts wild life.