Showing posts with label pendat. Show all posts
Showing posts with label pendat. Show all posts

Saturday, August 26, 2023

Apple Bop ?

Une pomme qui vous fonce dessus, ça fait mal. Forcément. Une qui vous tombe sur la cafetière également. Surtout quand elle est aussi grande que vous. Si vous lui tombez, dessus, là, c'est elle qui tombe dans les pommes. En disant ça, j'ai couvert 75% des interactions possibles entre Bilou et les Applemen dans Apple Assault.

If you get an apple on your head, that hurts. If you're thrown an apple in the face, that will hurt too -- especially if the apple is almost as large as yourself. Chances you won't get hurt if you stomp on an apple while falling but that will likely do the apple no good. All these cover 75% of the interactions between Bilou and the Applemen in Apple Assault.

Now, what if Bilou run into an apple. Should he still get hurt ? I know it is the default behaviour in platformers: if Mario runs into a koopa, it gets hurt no matter what direction the koopa was facing. You can only kick a koopa shell if you stomped the koopa first. You can create stories about it like "yeah, as you kicked the koopa, it clawed to the ground, turned back so fast you couldn't react and bite you. You're dead", and by '86 standards, they would work. But does it mean we should continue like that ? Can't we find something more fun ? It's an apple, after all. It's not all covered with deathly spikes!

Mais si c'est Bilou qui arrive dans le dos de la pomme ? Est-ce que le choc devrait aussi lui faire mal (à Bilou) ? dans Apple Assault, la réponse est "oui". Dans la plupart des jeux de plate-formes, la réponse serait "oui" aussi. Un koopa qui bouge, c'est un blesse, qu'on l'approche par-devant ou par-derrière. Mais est-ce que c'est forcément la bonne chose à faire ? Est-ce qu'il n'y a pas moyen d'être plus *fun* que ça ? C'est une pomme, après tout. Pas une chataigne couverte de pics.
En plus, maintenant, il y a un précédent avec les Pendats de School Rush: on est blessé quand ils nous foncent dedans ou quand on tombe sur leur pointe. C'est plutôt logique. on est blessé aussi quand ils font demi-tour, mais de nouveau, vu la violence du mouvement, un mauvais coup est vite parti. Par contre, tant qu'on est dans leur dos, on pourrait presque les pousser, on ne se fait pas mal. Alors si c'est vrai avec des soldats, ça devrait aussi être vrai avec des pommes, non?

When you consider that, in School Rush, pendats -- despite their aggressive and spiky appearance -- will not harm Bilou (only block him) if he comes in their back, it would make the whole game more coherent if we would equally have the back of Applemen harmless. Plus, it could actually be pretty fun to see an Appleman slightly bounce forward on such a collision, as if Bilou had kicked him in the back while walking, and only then actually turning back, being surpised to see Bilou and finally attacking.

Voilà donc ce que j'ai envie de faire pour Bilou: Dreamland (et la green zone dans le futur): si Bilou bouscule un Appleman dans le dos, c'est l'Appleman qui fera un bond et Bilou ne subira aucun dommage ... dans l'immédiat. Parce qu'en revenant sur le sol, l'Appleman fera alors demi-tour et, voyant Bilou, lui foncera dessus (comme il fait depuis 2009). Ce qui n'empêche pas le joueur de sauter par-dessus l'Appleman, peut-être même suffisamment tôt avant que celui-ci ne se retourne, et qu'il ne se rende donc compte de rien. ça,, ça a le potentiel pour être bien fun ^_^

Sunday, November 06, 2022

Scorpeye... Enfin!

 Oui, je l'avoue, j'ai été lent. J'ai été distrait (au sens attention détournée). J'ai été démoralisé par cette "carapace" qui ne voulait pas faire demi-tour à chaque fois ou qui faisait des demi-tours intempestifs. J'ai douté, de cet empilement de couches qui devait me permettre de laisser des personnes non éduquées au C++ de bricoler aussi leur propres personnages. Sauf que tout ça, c'est bien joli mais que quand vous avez un dysfonctionnement quelque-part, le débugger vous balance des instructions machines alors que le problème est dans le bytecode qu'elles interprètent. Et mon "inspector widget" (pas encore fonctionnel dans le projet 3 rooms) est loin de valoir ddd.

It's been a long time, I have to admit. I've been slow to get things running; I've had lost the hope that I could get that scorpio-shell turning back when it hits a wall... and only when it hits a wall. It felt like I had built a Jenga stack of complexity in order to have a 'simple' interpreter for state machines. But a language is never less complex than the tools you provide to debug it. And Inspector Widget fell short when trying to explain the issue (partly because it is surprisingly not yet working on Dreams.nds)

Une intuition pendant mes vacances ... j'ai retracé la machine d'état de mon scorpion-cyclope. J'ai bien identifié deux ou trois incohérences, mais rien qui ne conduise au bon comportement une fois corrigé.

Oui, je sais aussi, par rapport à ce que je bricolais sur le côté pendant mes semaines de vacances, c'est maigre. C'était des vacances un peu ... particulières.

Puis hier, j'ai repris la machine d'état de pendat. Lui aussi, il réagit quand il fait demi-tour en se prenant un mur. Et il n'est peut-être pas parfait, mais il marche en général bien mieux que cette satanée carapace.

Alors que scorpeye tentait de reconnaître l'absence de sol à l'aide d'un testpoint, pendat se contentait de "dire" "ah bin si la vitesse horizontale est tombée à zéro, c'est qu'on s'est pris un mur. Sinon, c'est qu'on a plus de sol. C'est forcé."

I found only a small evening of ndsdev during my summer holiday this year, and I used it to map the state machine of Scorpeye. It helped me finding a few weird stuff, but it would not make things run properly enough, unfortunately. Then I realised past Inktober that I already had a 'working' monster that bounced off walls. That was the running pendat. And I started mapping its state machine too (granted, after all these years of dsgametools, I should have given myself a tool to make that automatically). To my surprise, it almost never used the same tricks to perform the same task.

For instance, I used a TestPoint below scorpeye to tell me whether there was ground underneath when it claims it failed to slide on the ground. But this is unreliable because it checks only one point to decide for ground while the WalkController checks the whole surface. Instead, the pendat would test whether it came to a halt horizontally. If it did, that means there has been a wall. Otherwise, it bets there's no ground left.

Same with fall/slide transition: the scorpeye tried to use a testpoint to know whether it FAILed because of a ground. Pendat code author (past self) knew the only thing that can make GobGravityController FAIL was a ground. Being stopped by a wall triggers an event. That means no testpoint validation is required.

Finally, I gave myself an extra variable (there are still plenty available for scorpeye) to remember the sliding speed so that we can bounce walls without having to rely on an ImpactController to save the last speed, because so far I don't think GobWalkerController is an ImpactController. It requires to double some states (like left-thrown vs. right-thrown), but that should not be a big deal.

Still, there's one thing that I'll need to fix with unit testing: from times to times, being stopped by a wall while 'walking' doesn't make the move FAIL, but it does clears the speed. Pendat doesn't suffer for that because it has an "increase horizontal speed" statement in its running states that prevents the speed to stay null. I had to add the same statement to the shell, but it shouldn't be required. that's a todo item for XMAS, I guess.

Il me fallait un double-état pour la carapace lancée, une variable supplémentaire pour retenir la vitesse à la place de la 'variable d'impact'... ce genre de choses. Mais il y a un élément suspect. Pour qu'il n'y ait aucun soucis, je suis obligé de mettre une instruction forçant la carapace à accélérer. Sans ça, il reste des situations dans lesquelles je retrouve ma carapace toujours dans l'état "on glisse vers la droite" mais avec une vitesse nulle est un mur juste à ça droite.

Comme si GobWalkerController avait un bug qui l'empèchait parfois de signaler l'échec (FAIL) même si la vitesse tombe à zéro. ça, ce sera une tâche pour un test unitaire.


Sunday, December 16, 2018

One last fix.

I'm pretty pleased to hear my 5-year old asking me to play School Rush. But for some reason, j.l.n has a fascination about power. And in School Rush, he wants to get the power-ups. He knows the pendats hold them and so he wants the pendats down.

"Papa, je peux jouer à Bilou?" .. Celle-là, je l'ai attendue ! Et voici donc J.l.n qui, du haut de ses presque-6-ans s'attaque au niveau qui avait été dessiné sous la direction de sa grande soeur. Mais pour une raison que je n'ai pas encore identifiée, mon p'tit bonhomme est plus ou moins fasciné par la puissance. Et dans school rush, la puissance, c'est le power-up du "gros poing". Il veut l'avoir et donc il veut éliminer les crayons qui le détiennent ...

remember your first pendat ?
But the thing is, the first encounter was designed to let the player easily avoid the pen, not to easily dispatch it. So he tries, again and again, asking for help when he's out of bladors (amno) because he's so scared to get down in the pencil' lair, grabbing them back. He's wishing so hard that you could throw a sponge at the pencil instead, wich would turn its harmful spike into a friendly moving platform (yeah, he's been watching me playing some Rayman, too).

Oui, mais l'endroit où on rencontre son premier pendat n'a pas vraiment été pensé pour qu'il soit facile de vaincre le pendat. Bien que ce soit tout à fait possible, on nous invite plutôt à le contourner en passant par les crayons. Mais ça, J.l.n ne veut pas en entendre parler. Il me demande de l'aider en lançant le taille-crayon pour lui (jusqu'ici j'ai refusé) ou d'aller récupérer le taille-crayon tombé à côté du crayon (le "trou" du crayon lui fait peur. Il m'invente des solutions où on peut lancer une éponge -- moins effrayante -- sur la pointe du crayon pour le transformer en une inoffensive plate-forme mobile (je garde ça pour l'encourager à essayer de faire du gobscript lui-même l'an prochain), etc.

I'm not going to grant that wish, partly because that could affect the gameplay balance too deeply, and partly because doing that himself could be a powerful motivation to learn letters, words and numbers...
But there is one more thing, something I can -- and did change : fixing a collision bug with the pendat. See, every time J.l.n makes a successful throw, the game never triggers the collision. He always manages to throw the blador at the exact time where the pendat bounces back and before it turns back. And during those few frames, the pendat is unfortunately unvulnerable in "aftermaths" version.
This is clearly a bug, an easy to fix one, and I'm quite surprised that it never annoyed anyone else so far. Anyway, that makes one more release to make one little kid's life easier.


Mais bon, il y a quand même un truc que je peux -- ai que j'ai -- corrigé: un bug de collision jusque là passé inaperçu et qui permet au taille-crayon de passer à travers le crayon sans le toucher quand celui-ci est dans son animation "rebondit en arrière après s'être cogné à un mur en courant".

Wednesday, November 01, 2017

Rendez-vous avec la S-Team

Ah. Enfin l'occasion de faire tester mon niveau vertical à la S-Team au grand complet! Et de plus entouré de p'tits n'veux de 8-10 ans qui ont fini par venir s'agglutiner autour de L (la benjamine) tandis qu'elle s'entrainait à aller le plus haut possible dans le niveau final. Les ainés auront eu du mérite puisqu'ils se sont accrochés pour aller jusqu'à la dernière section (rouge) malgré un kolossal bug qui permettait aux pendats de laminer Bilou en un seul contact, faisant fi de ses 5 points de vie ...

A défaut de la photo de famille, donc, un petit aperçu des différentes sections du niveau en question. Mon frangin, hier, avait réussi à frôler le dernier écran et approuvé la difficulté avec la mention "vache, mais pas trop". (il avait atteint le haut de la zone jaune et je l'y ai ré-emmené pour qu'il voit la fin)

Un playtesting bien utile puisqu'il m'a permis d'identifier quelques coins piégeux de la map: images qui font penser qu'il y a une plate-forme alors qu'il n'y a rien, voie à suivre peu claire qui a conduit A (la cadette) à se lancer dans l'encre à plus d'une reprise, trop confiante de la distance que Bilou pourrait parcourir en un saut sans se douter que le bon chemin était en réalité derrière elle. Après 3 ou 4 essais, elle parvient au passage critique "des gommes" (zone jaune) où il faut enchaîner les rebonds avec très peu de "filet". Heureusement, en général, à ce stade-là, on a pris suffisamment d'avance sur l'encre pour pouvoir réessayer quelques fois. Et à mon grand soulagement, elle a passé ça en une seule vie. Ni elle ni L n'aura eu de difficulté avec le duo d'éponges de la section orange (re-ouf).

I got the opportunity to have the final level of School Rush heavily play-tested (at last) and got many small things (and other-not-so-small) fixed. It is always a pleasure to see kids and teenagers challenging each other on my game. I'm impressed they kept doing their best despite I had an awful bug that allowed pendats to one-shot the player almost everytime. Nonetheless, the best trained of the testers managed to climb almost to 3/4th of the final level, beating the "bouncing erasers climbing" part at her first attempt.

Thanks to those playtest, I had fixed some phantom platforms here and there, ensured idle inkjets (those that don't shoot by default, as on the title screen) always notice you when you jump into them, allowed to swim-up to escape the ink even when you don't end up in the final depth of the ink, got the "torchlight feature" rendering correctly ... And before you ask, yes, I took the week off ;-)


Même N. s'y sera réessayé, alors qu'il avait plutôt snobbé Bilou au profit de ses jeux sur smartphone ces dernières années (bah, il a genre 17 ans, l'ainé, maintenant). Un cycle de 3 vies lui aura été nécessaire pour reprendre un peu le jeu en main, mais après ça, il atteignait sans problème la zone verte avec 2 power-up mais n'aura pas poussé jusqu'au jaune, L. insistant pour faire un nouvel essai.

Par contre,

Wednesday, August 02, 2017

On reprend les crayons

(enfin, le porte-mine, plutôt). Les aspects techniques pour avoir une petite image originale au chargement de chaque niveau sont réglés. Je gribouille un peu pour avoir les 4 images qui me plaisent pour raconter l'histoire de School Rush (invasion des crayons-soldats, résistance, déroute et vengeance des soldats en question).

Let's pick up pencils again and draw some 'cutscenes' for SchoolRush to be shown while the level loader is parsing the characters behaviour descriptions again. I had initially planned to recycle those choose-your-difficulty pictures, but the story they're telling shows the pendats defeating the inkjets (comic book's scenario) while I actually need the opposite...

Ce qui s'avère être plus ou moins l'opposé de ce que j'avais prévu de faire raconter au cancrier dans la BD, en fait ... donc il va me falloir encore au moins une dernière image.

Thursday, March 24, 2016

Bon pour le son!




Ok les gars: accrochez-vous bien à vos baskets, voici toutes les captures animées dont mon frangin aura besoin pour me faire la "palette sonore" de School Rush, ré-appliquant le procédé qu'il a mis au point avec Lazy Cow pour son jeu "PowerGlove" récompensé au concours de RGCD.

I tried several ways to get the right sound effects for Bilou: School Rush, and I ended up with the following observation: it must be tested both against the background soundtrack and against the in-game timing (and possibly the look) of the action. On the other hand, I'm not convinced that "playing" it is actually needed. So, following the advice of my brother, I captured an avalanche of animated gifs to be used as basis.








On va dire que ça compte comme "release d'anniversaire", mais j'espère avoir pour le courant des vacances de Pâques une release stable avec un vrai menu de sélection du niveau de difficulté.

Given the real-life interference of the last days (Brussels attacks seems to have damaged my laundry machine), this will be my birthday-gift-to-the-Internet for this year... but I now have all the pictures I wanted to implement the "difficulty selection" bottom screen, and I should have that built somewhere next week.

edit: quicklink to the latest download if you enjoyed this


Thursday, May 28, 2015

Pendat turned dizzy (done)

Got it working ^_^ Pendats turn dizzy when they're jammed at some place they don't belong, and while they dizzy-walk backwards, they either fall to their doom or return to a place where they can safely walk.
Now I need to ensure they react to ink pits and don't try to walk there.


Nous y voilà. Forcez un crayon-soldat à quitter son chemin de ronde et le mode "titubant" lui permettra d'y retourner (ou de tomber encore plus bas). Le dernier hic, c'est le comportement ridicule lorsque le crayon atterit dans l'encre en bas du niveau. Je voudrais qu'il puisse alors s'y enfoncer et disparaître (comme les taille-crayons) mais sans pour autant sombrer dans l'encre qui monte à moins d'en avoir jusqu'au yeux.

remaining todo items:

  • [done] ink droplets no longer stopped by spongebop ? why? wrong flags for collision test
  • [script] Pendats drown in ink
  • [done] Bilou can grab with DOWN+HAND even when facing left
  • [code] Bilou don't get that deep in the ink, please.
  • [done] Fix carried bladors
  • [done] Show Bilou's hands when carrying SpongeBop
  • [code] Intuitive difficulty selection
  • [code/gfx/script] Some sort of scoring

Monday, May 25, 2015

Pendats get dizzy

Première étape vers des crayons "plus autonomes": le compteur de désorientation est implémenté. N'ayant pas encore transféré l'animation "titube", j'ai repris celle où le crayon est éjecté (quand il cogne un mur, par exemple). Le résultat n'est vraiment pas celui attendu :-/

I wrote some gobscript to enforce a "dizziness counter" on pendats. They should be able to walk for 2 blocks after they turned back if they don't want to end up dizzy. But since I haven't transferred the animation itself to my PC, I used "stunned bounce" as a placeholder. The result is some very emergent behaviour, possibly due to some incoherence in body-boxes of the pendat.

Saturday, May 16, 2015

pendats in the detail.

 Avant la release finale de School Rush, il faudra que je corrige un glitch dans le comportement des soldats. En ajoutant la possibilité aux crayons de prendre Bilou en chasse, je leur ai aussi donné la possibilité de quitter la petite cage dorée dans laquelle le level design les avait placés. Du coup l'approche "façon frogatto" de faire dans le simple plutôt que de chercher à faire des personnages ayant une IA capable de s'en sortir dans toutes les situations.

I believe the game engine issues are now fixed. That gives me the time to go through the remaining gameplay issues and glitches. One thing that may easily occur is to get Pendat stuck at some ridiculous place when he's beeng chasing Bilou, jumped off its designed platform and lands in some place where it cannot walk around. That could either be because the place is too small for a full walk cycle or because it is some area designed to force the pendat to turn back.

Pourtant, il est évident qu'un crayon-soldat devant un intrus ne s'arrêtera plus à son petit chemin de ronde. Difficile de faire en sorte que l'ensemble du niveau puisse accueillir un pendat atterri par erreur quelque-part. Je me retrouve avec des crayons-soldat qui font la toupie parce qu'incapable de se mettre à avancer sur un sol trop incertain.

At first, I thought it was something wrong with the state machine but no. It's just I'm missing an "escape move" that would be valid in place where the regular walk doesn't work, and that can be perceived by the player as a valid excuse for seeing the pendat doing silly things like jumping down a cliff, reaching either safety or sink. Being dizzy could explain that. I have temptative animation in the pipeline.

J'ai commencé une animation d'un soldat ayant la tête qui tourne, donc incapable de se rendre compte s'il y a ou non du sol sous ses pas, et donc pouvant quitter la zone inconfortable même si c'est pour se jeter dans le vide.

Good thing, I don't necessarily need to add new test-points: I simply need to add a sort of "temperature counter" that increase after each turn back and cool down while walking.


Saturday, March 07, 2015

BigPunch for free ?

In last week's post, I was suggesting that giving some power-up "for free" earlier in the level might be the best way for the player to experiment them. I was especially thinking about "big punch" power-up, that allows Bilou to dispatch school supplies without having to rely on carrying dumbladors around.

Je pensais avoir trouvé la bonne technique pour amener les joueurs à s'intéresser un peu plus à l'interaction "ramasser un blador et l'emmener jusqu'à un pendat pour le dégommer", la semaine dernière. L'idée aurait été de mettre un power-up "Big Punch" visible, dans une sorte de cage au début du niveau. De cette façon, on avait un peu plus de chances que le joueur se rende compte qu'il y a un intérêt à se débarasser des pendats, et ça, même s'il n'est pas encore très à l'aise avec le lancer ballistique de taille-crayon. Sauf qu'à bien y réfléchir, j'avais sans doutes tout faux.

 That might work, but not for the intended purpose: show players that they can stun pendats, and that it's a cool thing to do (after all, pendats are the invasion force trying to ensure that mathematics are the only canon knowledge taught in the school, or something similar). By giving the power-up for free, will the player ever learn that she can use dumbladors for that purpose ? Won't I put her into believing that power-ups must be found in the level and that without them, there's no way to dispatch a pendat ?


Ben oui. Mettez-vous à la place du joueur qui entre dans le jeu, voit un truc qui ressemble à un bonus, l'attrape, et peut ensuite éliminer les crayons. Qu'est ce que vous feriez au prochain taille-crayon, vous ? L'emmener en voyage ? Et si finalement, vous perdez quand-même votre pouvoir du poing-marteau ? Considérerez vous qu'il doit y avoir un autre moyen d'éliminer les crayons, ou simplement vous direz-vous "Arf! Je vais devoir les éviter jusqu'au prochain power-up!" ? La plupart des jeux pousseront plutôt le joueur à adopter la deuxième attitude (cf. Super Mario et ses plantes-piranha).

Maybe I should try another approach. Maybe the power-up shouldn't be granted *at the start* of the level, but prior you enter the level. And the first thing you'd encounter in the new level is a dumblador/pendat pair that you can dispatch with your freshly-acquired BigPunch (tm). Dispatching the pendat would then grant you another power-up. The next few screens should then be harmless enough so that the player can experience new abilities before putting them to work.

Par contre, il pourrait être intéressant de mettre le "power-up gratuit" en fin de niveau. En particulier si le niveau suivant commence par un terrain d'expérimentation idéal pour dégommer des crayons. Un passage avec le power-up pour apprendre qu'un crayon, ça donne un bonus. Et un deuxième passage dans des conditions idéales pour lui lancer un taille-crayon sans prendre de risques. Pas d'éponges ni de structure pour faire obstacle à votre jet. Rien qui ne puisse vous distraire entre le projectile et la cible... Je suis même prêt à utiliser les "passages secrets" du premier niveau pour disséminer des indices sur ces possibilités.

 Would she eventually fail, she'll start over that level, with no power-up. She'd face the same blador again, and now she knew there's a power-up available if she knocks out the pendat. I can also arrange the level terrain so that the player can stay safe and still throw her blador at the pendat.

Par contre, je préfère ne pas tomber dans le classique panneau "interdit aux taille-crayons" placé sur le chemin de ronde du pendat. Trop éculé.

If that's still not enough, I plan to use those chalk boards and other areas of level 1 to hide some schoolish tags showing pendats taking over the school and bladors offering resistance due to their tough nature. I want to hint, but I don't want to enforce tutorials. I also don't want to use the typical "don't do XXX" to hint the player to exactly do XXX.

Tuesday, December 09, 2014

Leçon de tuning: la théorie


 
Tune it well ...
Animating a running pendat within restricted pixel space turned out better than I initially expected. Now, I have to tune that additional move to ensure it improves the gameplay. The speed at which it moves, the distance from which Bilou is detected and the acceleration were all arbitrarily picked while writing the script. They work rather well, but they can surely be tuned for maximal results.

Bien. J'ai rajouté une animation pour que le crayon-soldat puisse charger Bilou quand il l'aperçoit. Reste du coup les questions de tuning à régler:
  • à quelle vitesse doit-il courir ?
  • à quelle distance peut-il "sentir" Bilou ?
  • combien de temps doit-il mettre pour atteindre sa vitesse maximale ?
L'enjeu de ces règlages ? faire en sorte que les réflexes puissent continuer à tirer le joueur d'affaire et éviter de se retrouver dans une situation à la Rick Dangerous où le joueur doit mémoriser tout le parcours pour pouvoir jouer.
Bilou and Pendat positions over time
The issue with arbitrary values is that they can twist the gameplay towards a state where players can no longer react to what happens and have to memorize the level just to complete them. I have been convinced by Kirby Kid's blog that this is not the way platformers should be built and that they should instead allow to be "played while reading" once we mastered core skills (estimate trajectories, press buttons, read timings) and learnt game's physics. As our player has reaction time to the walk/rush transition of the pendat (a) and that Bilou needs some time e.g. to reach a height where collision no longer occurs (b) -- and possibly only keeps that height for some time (c), values exists where player cannot possibly escape. These must be avoided.

Je me suis donc donné deux cas d'étude: "Bilou tombe devant le pendat et doit s'échapper en courant" et "Bilou doit passer par-dessus le crayon en sautant". A partir de là, on peut représenter la distance Bilou-crayon au cours du temps et voir s'il y a ou non risque d'avoir une collision.

T_player_reacts + T_Bilou_reaches_speed < T_pendat_clears_distance
T_player + T_Bilou < Pendat_Detection_Distance / Pendat_max_speed

A sa vitesse actuelle, le pendat met 81 frames (1" 36 centièmes) pour aller de sa position actuelle à celle de Bilou. Bilou, lui, met 30 frames (1/2 seconde) à atteindre sa hauteur maximale (b) et on peut compter qu'il y reste 20 frames (c), pendant lesquelles le Pendat aura avancé de 30 pixels ... Assez pour se croiser sans accroc. J'ai vu la plus jeune testeuse de la S-team réussir ce saut d'instinct. Celà signifie qu'elle a un temps de réaction d'au plus 600ms ... Hmm ... Oui, le pendat actuel est loin de demander des efforts de réactivité puisqu'on estime à 200ms un bon temps de réaction à un stimulus, pouvant descendre près des 100ms pour un sportif entrainé. Et puisque Bilou est quasiment au centre de l'écran, celà signifie que si on voit le pendat quand il fait demi-tour, il nous attaque sitôt qu'il se retourne. Rétrécir la distance de détection et la compenser par un "sursaut" du crayon pourrait améliorer la situation

While my testing-nephews were giving it a try, I went through to "escape case" -- run away or jump over -- to map where would time go. Not even the youngest player had issues with the original timings, which left a generous 600ms to the player to dodge the rush. That's about 3 times the delay usually presented for fast reaction. It "turned" out that direct rush of the pendat is not the most dangerous -- so I can easily shorten the detection distance and have pendat entering the screen walking and only start chasing Bilou when at a distance close to 1/3 of the screen width. What is truly dangerous is that bounce when he enters a wall, and then quickly turns back. It means if you're waiting for him at the top of that wall, your window to sneak behind is small. In fact, the thing that may prove more stressful is to shoot him down with a blador. But that should simply tease you to get the straight-throw power-up ;)

En fait, le rebond contre le mur est beaucoup plus piégeux. J'imagine que c'est dû à la cassure du mouvement, plus difficile à estimer. Et l'atteindre avec un taille-crayon affecté par la gravité sera plus délicat, mais pas trop quand-même puisque le crayon a le bon goût de rester dans la zone active du taille-crayon pendant sa courbe. Ouf.

Avec tout ça, le "croco-désagrafeur" retombe dans l'oubli ...

Tuesday, November 18, 2014

Economiser des pixels

Imaginons un instant que je tente de faire l'animation du crayon-soldat qui court derrière Bilou juste en pixel art ... Il me faudrait avant tout gagner assez de place sur mes planches de sprites. Heureusement, les "1002/1024 tiles used" sont un peu surfaits. Si je visualise le contenu de la VRAM, les sprites colorés en rouge sont ceux dont je n'ai en fait aucun besoin. Ceux en vert sont ceux qui pourraient bénéficier du système d'animation par copie qui est à la base de l'encre-qui-monte.

This is the current content of the 64K of sprite sheet in the School Rush game. Sprites in red are unused and could be dismissed. Sprites in green are those who could benefit from the streaming technique (updating VRAM content as the frames advance. Given that I used only 6 16x16 blocks for the pendat so far, I could have the room for a pixel art running pendat, after all ...

Friday, June 20, 2014

Petit voyage dans le temps.

Petite image de ce que donnait la School Zone en QuickBasic en 1997... Que dis-je "image" ! presqu'une animation.
Côté Pixel Art, on regrettera évidemment les briques rouges rendant le crayon-soldat quasiment invisible. Côté animation, c'était impossible d'accélérer la démarche du crayon. Je ne suis pas mécontent du progrès réalisé ces dernières années.

Look! That's what the school zone looked like on its first implementation, in QuickBasic for MS-DOS in '97. I'm glad I took time to digest advise from Pixelation folks. 

I swear I'll never use plain red as a background colour in later games.

 

Thursday, February 20, 2014

Vieux coups de crayon...


2005
 En vrac, quelques petites illustrations bilou-esques qui s'étaient glissées parmi mes documents de doctorant, et qui correspondent justement à la "zone creuse" de Bilou: L'encrier en 2005 pendant que je reluquais surtout les graphismes de petitcarreaux.fr pour améliorer mon trait,

I think I mentioned that idle timeslice between 1998 (Badman III) and 2006 (the pencil and the sharpen-her), where I mostly focused on operating systems design. While cleaning up my office, I dug a small collection of easy-to-date sketches of Bilou-related characters. 
2006
We see an inkjet from 2005, while I was attending a conference on grid computing, some pendats covering empty space between some IXP microcode in March 2006 (PhD years, just before starting the comics, afaik) and some standalone emotions of Verso-the-eraser which I would date from 2002 (or possibly late 2001 when I was finishing my master thesis ?)

2006
Un de ces crayons qui peuplait les ébauches de level design dans l'ambiance "bibliothèque 3D" de 2006 (pendant ma phase BD-couleur-photoshop). En mars de la même année, j'avais essayer de l'imaginer se déplacer en 3D avec du "tilting" pour la marche et de la rotation pour la course.
2002
Plus vieux (à mon avis vers 2002), quelques réactions de "recto-verso" dont les gags ne voulaient pas prendre, marquant ainsi la fin du "Bilou's Book".

2003
2004 ?
2003
Et pour clôturer, malgré leur arrivée tardive, voici enfin quelques gribouilles de Bilou et d'autres personnages de la School Zone datant avec précision de 2003. Curieusement, Bilou se remet à faire des grimaces qu'on ne lui connaissait plus depuis les années '90.

Plus délicat à dater, une tentative de mise en page du retour-éclair de Bilou dans la Green Zone où il devra "recharger les pouvoirs de la gemme dans le deuxième monde". Rien que ça. Le croquis est tracé au dos d'un document présentant Reiser4 (paru en '2004, et j'ai des raisons de penser que je suis tombé dessus assez rapidement après sa sortie). Côté scénaristique, ça ne marche pas suffisamment, et je reste donc calé du point de vue "Bilou's Book".


Saturday, December 28, 2013

Prise en main.

Entre courses de Noël et les soins pour son p'tit frère, les nerfs de *deline commençait à devenir sérieusement tendus. Et moi, j'étais trop naze pour pouvoir la distraire dans Epic Mickey fraîchement prété par mon frère ou sur ce "bon vieux" Zelda: Link to the Past ... Heureusement, quand j'ai proposé "et si on faisait un niveau de Bilou spécial que tu pourrais finir toute seule ?" la réponse a été "oh ouiii!"

A much more cozy first encounter...
J'avais ma petite idée au préalable de ce que je voulais obtenir: quelque-chose basé sur un fonctionnement simple (mot-clé "avancer") avec un petit quelque-chose de "Bilou Origins" dans son design simple de plates formes qui se suivent mais ne se ressemblent pas trop. Je voulais aussi que le niveau puisse servir dans un jeu de course contre la montre où on aurait eu de l'encre dont le niveau monte pour forcer à progresser -- ce qui permet au passage d'éviter un effet "tutoriel" en offrant suffisamment de diversité d'action pour qu'un joueur expérimenté puisse traverser le niveau rapidement et avec fun.

Playing "Epic Mickey: Power of Illusion" reinforced (if that was ever needed) the feeling that I want a no-tuto game, where things can be learnt while playing. But right now, the "school zone, level 1" (aka anniversary level) fails to provide an environment for that. So along with my 4-year-old *deline, we crafted a level where each monster and mechanics are introduced one at a time. 
The resulting level layout is very unusual for a Bilou level, being all-flat-go-to-the-right, which is somewhat reminiscent of Pierrick's "Bilou Origins" game mentioned this summer. It's not yet perfect: the very first jump proved fairly difficult to clear for *deline, her younger cousin and for my fairy, but after a few more attempts, all of them -- none being used to Jump/Run games -- managed to go to the middle of the level. Elder kids (including Remi who previously snobbed the anniversary level) managed to reach the GOAL, after which they seem much better prepared to face the anniversary level. I still have some edges to polish before releasing, but I'd say the mission is already a success.

Au final, le niveau se joue assez bien, encore qu'il reste un peu cru et peut-être finalement trop dur sur la fin, avec un effet "interro surprise" qui rebutterait un enfant qui parviendrait à arriver à ce point-là... correction en cours.

Saturday, December 07, 2013

3D: X Why Z ?

On me demande sans doute à raison pourquoi m'attaquer à la 3D maintenant (alors que j'ai un premier niveau qui est entre alpha et beta) ... "des effets d'éclairage?" ajoute mon frère ... Plus que ça, en fait.

Wihin 8 hours after publishing my last post, I've got two person wondering why I need 3D now and how I'd use it. Well, there's much more than "lightning effects", as far as I'm concerned:

SpongeBop's thread: a single 3D polygon, extremely thin and flat, can be used to display SpongeBop's link with its pin, helping the user to visualize the sponge's trajectory.
Mon premier test, c'est le "fil" de Bop L'éponge, histoire qu'on visualise mieux sa trajectoire et qu'on cesse de la prendre pour "un nuage jaune". Il est construit tout simplement avec deux polygônes plats et non-texturés, mis "en sablier". Je n'ai pas résisté à la tentation de l'implémenter avant de finir de traduire ce post. Ça n'est pas encore propre (un avocat des model-view-controller s'étranglerait en voyant le code) mais ça prouve le concept.

Large smashing books come later in the level for which I have design on papers. I also have "large books" that can be pushed and dropped to create platforms. This involve a level of rotations and deformation that stem for 3D objects. Without them, their respective levels are as meaningless as a Badman episode.
J'ai dans mes carton un niveau qui repose essentiellement sur des livres-écrabouilleurs qu'il va falloir éviter comme des thwomp. En fait, j'avais construit pas mal de scénarios autour des livres pendant la phase où je réfléchissais à un niveau complètement 3D sur PC en 2004. Ils sont sans doute réalisables sans utiliser le hardware 3D, mais ce serait se chatouiller pour se faire rire.

In both the Bilou's Book and design documents, pendats feature a rich set of poses. Right now, they merely step forward, and the animation when they turn back is essentially cheating. I want them charging Bilou, laying on the ground when stunned and pausing to check left and right locations. Not only that involves rotations, but also twisting that affine sprites cannot offer.
Plus déterminant encore: les crayons-soldats. Je ne saurais pas faire beaucoup mieux avec l'approche actuelle intégralement par sprites dessinés à moins de changer fondamentalement le moteur d'animation des sprites pour passer à quelque-chose qui ressemble davantage à Donkey Kong Country. En 3D, je n'ai plus qu'à prendre 6 polygônes non-texturés et laisser la console gérer les rotations et les effets d'éclairage, le reste étant gardé sous forme de sprites affichés par-dessus les polygônes.

Rotating Rulers  -- acting as stretch-and-squish platforms for more challenging climbing action. That level element is possibly what best defines the design for future Bilou's Adventure game, so I really want to have them done. Granted, I could emulate them with flat, smaller platforms that move back and forth synchronously.
Un autre niveau que j'aimerais beaucoup réaliser et dont j'ai déjà parlé fait intervenir des "règles qui tournent" et qu'il faut escalader bien qu'elles s'escamotent dans les recoins du niveau. Ici, on pourrait imaginer un hack à base de sprites qui bougent en coordination, mais ça rendrait nettement moins bien pour 4 polygones (texturés sans doute, cette fois).

Bookmarks that move like vines in Pharaoh's Return. It's not clear that such giggles would bring significant gameplay enhancement, but they would make the School Zone more credible than if cloth-made bookmark where simply standing stiff while you grab them.
Il y a aussi les signets des livres, que je souhaite transformer en corde. Après avoir vu le prototype de Lazycow, mon frère était d'accord avec moi: ça en jette et ce serait quand même largement un plus d'avoir ça dans Bilou, même si au niveau "fonctionnalité du niveau", ça ne change pas fondamentalement la donne.

BangBash's swinging move involves rotation around the Y axis. This will probably be the most demanding item, asking for a complete update of AnimEDS to look more like that old "sketchup compo entry".
Enfin, il y a BangBash, le personnage qui frappait les trois coups pour l'ouverture de ce blog. ll a normalement deux attaques prévues, l'une frontale qui pourrait être réalisée (pas joliment du tout) avec des rotations de sprites et l'autre, tournoyante et latérale (un petit côté double-balayage de Guile) qui impose la 3D d'une façon ou d'une autre.

Voilà. Ça m'aura couté quelques heures de sommeil, mais c'est (fait) et dit.