Showing posts with label aouch. Show all posts
Showing posts with label aouch. Show all posts

Wednesday, August 25, 2010

Manoeuvre d'évasion β-1 !

Autre petite expérience en cours: les manoeuvres d'évasions. Afin d'éviter les chocs enchaînés, Bilou dispose à présent d'un court laps de temps au moment où il touche le sol pour mettre à profit l'entraînement physique draconien des pilotes de la Stellar Assembly et se mettre hors de portée des coups suivant.

Une variante à l'invulnérabilité temporaire, inspirée des commentaires de KirbyKid (eh oui, encore) qui met l'accent sur les réflexe et le timing du joueur pour échapper à son destin.

Following KirbyKid's advice, I'm also giving a try to an alternative to the typical "temporary invulnerability" of platformers game that -- I think -- would negatively impact challenges I intend to put into Bilou's Adventure. Welcome evasive moves: by pressing A or B with the proper timing when Bilou hit the ground after being hurt, you can dodge the next hit by doing a sommersault that brings you to a safer place. Of course you won't be hurt again while dodging.

It isn't clear, however, that such things do not suffer the very same defects as "regular invulnerability": you could use an evasive-B-move to quickly hop through a funky funghi after being hit by an appleman, for instance.


L'ennui, c'est que même comme ça, un contact volontaire avec un "petit" ennemi (p.ex. un appleman) permet d'utiliser une manoeuvre d'évasion (horizontale) pour passer à travers un ennemi-obstacle (p.ex. Funky Funghi), puisqu'aucune zone de collision n'est définie pendant l'évasion >_<

todo: ajouter une sélection du niveau de difficulté (easy/normal) dans le "niveau 0" ...

Wednesday, August 18, 2010

Apple Hit Combo

Un petit jeu comme Apple Assault, c'est l'occasion de tester des "choix" de game design plus ou moins intentionnels, histoire de voire s'ils sont viable ou non pour le "vrai jeu". En l'occurence, lors de l'introduction de Funky Funghi, je me suis rendu compte qu'il fallait ajuster la gestion des "blessures" de Bilou de manière à éviter qu'il ne puisse le traverser.
Dans un jeu comme Mario ou Sonic, les éléments essentiels du gameplay sont les réflexes et la dextérité. Continuer à avancer malgré un choc avec un ennemi est donc naturel, voire exploité dans des speedruns. J'ai l'intention de centrer davantage "Bilou's Adventure" sur l'exploration et la résolution de puzzle, sans pour autant aller jusqu'à un Braid ou Johnny Biscuit.

Dans ce genre de jeux (y compris Fury of the Furries et Commander Keen), il est fréquent de rendre le moindre contact fatal, de sorte qu'un monstre puisse faire office d'obstacle incontournable et forcer le joueur à résoudre le puzzle proposé. Pour Bilou, je souhaite garder le côté "incontournable", tout en laissant au joueur la possibilité de commettre des erreurs et de corriger le tir. Je suis donc parti sur un nombre relativement élevé de "points d'énergie" (5 -- plus proche de Kirby que de Mario) mais sans période d'invulnérabilité en cas de choc. Au contraire, Bilou est projeté en arrière et le joueur ne peut reprendre le contrôle avant qu'il n'ait touché le sol.

Apple Assault is not Mario or Sonic. It isn't about flowing through levels towards a goal. So Mario design decisions like "if you get hit by a monster, you can still run through that monster if you had a power-up. And through a few more hazards if you're quick enough". Sorry for anybody who had hopes about doing damage boosts in my game.

Given how the levels look like, I'd rather have Bilou's Adventure focus on exploring and puzzle solving. If there's a monster blocking your path, you should come back with a solution or show that you're ready to make it through without taking damages. Yet, I don't feel like pushing it to the point where any single hit means instand death like in Fury of the Furries or Commander Keen. So

  • let's have a rather large amont of hit points (5 for Apple Assault)
  • let's not have any invulnerable while blinking state
  • when hit, Bilou is knocked back. He can't be hit again until he touches the ground, but player can't move forward again until he touches the ground.

Dès que les applemen ont fait leur apparition, un soucis est alors apparu: un appleman ayant repéré Bilou fonce vers lui bien plus vite que le déplacement d'un woodworm, ce qui lui permettait alors d'enchainer les coups portés à Bilou sans laisser au joueur aucun espoir de réaction : c'est le Apple Hit Combo. D'une certaine manière, ce type de comportement me plaît: ça fait de l'appleman un ennemi hargneux, plus dangereux qu'un simple goomba. A condition que sa hargne puisse être tempérée.

En raffinant le moteur de gestion des collisions, j'ai pu faire en sorte que l'appleman soit "repoussé" lors de collisions. Ouf! Le joueur gagne ainsi un court répit qui peut lui suffire à échapper à la charge suivante s'il est assez vif et attentif. Les coups enchaînés sont donc toujours possibles mais deviennent un challenge et plus une fatalité "vraiment trop injuste". Le combo inévitable existe toujours, lui aussi (par exemple quand la première collision a lieu alors que l'appleman tombe sur Bilou, ou si celui-ci est acculé contre un mur ou pris en tenaille par plusieurs applemen. Là aussi, le résultat me plaît: par simple application des règles de base, on obtient des "dégâts critiques" qui forceront le joueur à développer une stratégie dans laquelle il évite les situations à haut risque.

These seemed to be reasonable rules during the 999-demo, but with Apple Assault, there are more applemen and applemen (unlike woodworms) can move fast enough to knock you again barely before you regain control of your character into an Apple Hit Combo. There is something I like in that: Appleman is more willing to defeat you than a goomba. But that must be moderated. So when there's a hit, the appleman is knocked back too.

That means the player now has a small time window to react and escape the endless combo, with dexterity. Chained hits become a challenge to overcome rather than some too-unfair-fate. You might still be chained to K.O. in critical case where you let yourself cornered, but with proper strategy, you can avoid that.

edit: 15 people have now tested Apple Assault with those hit combo rules. Out of them, 

  • 71% found the mechanic fun
  • 26% found it challenging
  • 33% found it frustrating
  • 20% found it really too much annoying 

Sauf qu'il reste des situations où le "bon vieux hit combo", imparable, continue à réapparaître, comme l'ont mis en évidence, Gédéon, Nathan et Laurent, moins habitués au contrôle de Bilou. J'ai me fais tout doucement ma petite idée sur les raisons à la base de ce petit bug ... affaire à suivre.

PS: si vous avez essayé le jeu, un petit sondage vous invite à partager votre réaction face aux "hit compote" : fun (71%) ? challenge (26%? frustrant (33%) ou franchement gonflant (20%) ?

(PPS: votes non-exclusifs sur 15 participants)

Wednesday, March 31, 2010

- * aouch * -

I'm not going to claim that 'it works! I can't believe it". It's a little too early for that, but at least I've got the framework set up and the boring stuff done. I can have little stars shot away from Bilou when he's stomped by Funky Funghi. There are still weird things to be investigated such as "why doesn't they disappear as expected?" or "why do they look like coming out from Funky Funghi rather than from Bilou?"

Il est encore un peu tôt pour crier victoire, mais ça prend forme. Ces petites toi-toiles s'échappent de Bilou lorsqu'il se fait écraser par Funky Funghi ... les éléments permettant de gérer des objets dynamiques s'assemble ... l'objectif "apple assault" se rapproche. Il me reste à comprendre et corriger quelques effets curieux. Ce serait aussi bien qu'elles disparaissent lorsque leur animation est terminée par exemple ... et qu'elles proviennent effectivement de Bilou.

Source-checking and cross-checking doesn't seems sufficient. I'll have to meditate this.

edit: les petites étoiles sont supposées rebondir quelques fois sur le sol puis disparaître grâce au code suivant:

state19->state19 on fail [v1 $20 >] (v1 $40 - ~ :1)
state19->nil on fail [t]
mais curieusement, ça ne marche (presque?) jamais avec [v1 $40 >] comme gardien et seulement de temps en temps avec le code ci-dessus. Je viens de réaliser que le contrôleur "gravity" ajuste la vitesse verticale lorsqu'on rencontre le sol de manière à ce que la chute se termine sur le sol. Ca casse évidemment tout mon beau mécanisme puisqu'au moment de l'évaluation des transitions, ce n'est plus la vitesse de l'impact étoile-sol que je lis, mais la distance à laquelle l'étoile se trouvait par rapport au sol. Je vais réviser ça. Ca pourrait bien expliquer quelques autres bugs dans le comportement de Bilou et de l'Appleman.

Oh, and btw, here's a small UML snippet of the classes involved in such "extra actions". The 'red path' show interactions when an action definition is parsed, and 'blue path' how the actual "shooting" occurs.

Saturday, June 06, 2009

tromp ... tromp ... tromp

Entre deux couches de latex au plafond, je profite d'une heure de répit pour bidouiller la machine d'état de Bilou et affiner les collisions. Comme prévu, en court-circuitant la lecture de la croix directionelle lorsque Bilou se fait toucher, il n'y a plus moyen de passer "à travers" Funky Funghi.

J'en ai profité pour ajouter aussi un test "écrabouillé" qui bloque Bilou sur place un moment. Autant dire que dès que j'aurai commencé à décompter les points de vie, ça va faire mal ;)

I took a little hour off while the painting in my bathroom is drying, and reviewed collision transitions in Bilou's state machine. By giving "hit" its own state and disabling the D-pad there, it's no longer possible to "walk through" Funky Funghi.

He's now even more dangerous than ever thanks to the new "stomp" collision area that will flatten Bilou and make him stunned for a while. Needless to say that it's gonna hurt pretty much as soon as "hit points" will be coded.

Saturday, January 10, 2009

-*- intermission -*-

J'ai de nouveau des Bilous plein la tête, et évidemment une dead-line de premier choix qui se rapproche... Au fait, vous ne vous étiez jamais demandé ce qui permettait à un perso de jeu vidéo de revivre ? ou pourquoi on récoltant 100 gouttes d'eau (ou carottes ou pièces d'or, c'est selon) il avait droit à une chance supplémentaire ?

Allez, une petite idée sympa pour le jeu Bilou sur DS : à mesure que vous affrontez de nouveaux ennemis, vous aurez la possibilité de vous entrainer contre eux dans un mode "training" ou vous créez en direct la salle et la peuplez d'ennemis ... histoire de se faire la main ou de tenter un passage un peu délicat sans risquer vos précieuses vies ... Une sorte de holodeck, quoi.

(c'est vaguement inspiré du "Zoo" de Yoshi's Island, sauf que là, vous ne pouvez que les regarder, mais pas toucher)

Oui, parce que j'ai bien l'intention de faire en sorte que l'on ne joue pas à "oh, ben non, finalement j'ai perdu trop de vie sur ce niveau-là ... j'éteins la console et basta."
(^ edit: bon, évidemment, il y aura quand-même des "check-points" pour reprendre ailleurs que là où l'on s'est arrêté la dernière fois ... genre après avoir passé un donjon, avec le nombre de vies etc. par défaut)


edit: Moui. C'est décidé. Je laisserai tombé les "niveaux tutoriels" au profit d'un "playground" prééquippé de quelques obstacles classiques dans lesquels le joueur pourra ajouter les différents éléments qu'il rencontre pour s'entrainer, etc. J'aurais envie de dire "et il pourra aussi découvrir en explorant les niveaux des moyens de débloquer certains monstres, etc. pour le playground", mais ça fait fort Little Big Planet ... j'hésite un peu.
Sauver un playground et l'échanger par Wifi avec d'autres joueurs, vous dites ?
Ah ... Ca, ce serait intéressant, oui.