Monday, September 30, 2013

Pendat ready [zero day]

it's marching, it turns back. That's roughly all. I need to fix collision boxes, testpoint coordinates, make sure throwing a blador can stun them, etc.
Yes, you're right, I should be delivering you a .nds of that new level. Let's see how long it will be overdue :P

Desired state for the release:
  • [done] The five monsters being present: Spongebop, Inkjet, Dumblador, Pendat and RectoVerso;
  • [done] Monster behaviour is complete: it hurts you when you step in, it can be defeated unless it is planned to be invulnerable, it doesn't stop moving for some coder-could-guess reason;
  • [done] Level is WYSIWYG: no trailing "invisible walls", no endless fall to some out-of-screen no-man's-land nor structures you go through although the same was solid just two screen before;
  • [done] Hazards hurt: ink, pencils; Bonuses can be collected;
  • [done] transition (at least a pause) when Bilou dies, so that player may analyze and improve;
  • [done] bonus to guide player into perilous fall;
  • [done] use (B) to pickup/throw bladors;
  • [done] can't ride spongebop/inkjet when carrying a blador. 
  • [ongoing] Some incentive to improve your exploration and play the level again.
  • Coherent soundscape.

Le jour J est arrivé. Le .nds pas. Le pendat marche et fait demi-tour, celà dit, mais c'est à peu près tout. Il faut que je lui règle ses boîtes de collision, ses testpoints, faire en sorte qu'on puisse l'assomer avec les taille-crayons, etc. Bref, le mieux que je peux vous proposer c'est de faire le tri entre ce qui mérite qu'on retarde la sortie du jeu-anniversaire (liste ci-dessus) et ce qui peut attendre une autre release (liste ci-dessous).

Allowed to miss in the release:
  • some sound effects;
  • [wish] power ups; 
  • throwing bladors mid-air
  • [wish] sparkles, dust clouds, broken bits and other visual feedbacks;
  • [ongoing] dedicated stunned animation for some monsters;
  • [done] perfect alignment of Bilou when inkjet prepares for a throw;
  • [wish] push-able inkjets;
  • level 2;
  • [done] fix for spongebop-out-of-screen bug; 
  • [wish] reloading the whole level when you die.
  • [done] ability to look down what is available;
  • [done] clean display of Bilou's hand when holding a blador;
  • [done] Clean RUN mechanics.
  • [done] spongebop's coordinate reference for circular movement is the center of the character (same for the pin), not the top-left corner.

Sunday, September 29, 2013

1 day left

I have quirks in moving inkjets and the pendat doesn't feel like progressing forward right now (nor left now, afaik). There's a more concerning issue, however: I will have to cut the number of monsters present in the level. With pendat reaching up to 6 or 7 "limbs", and each limb being an individual OAM, and all those OAM (i.e. hardware sprite) being statically assigned to objects, I regularily (e.g. when inkjet throws droplets) hit the "128 OAMs" barrier of the hardware that makes some sprite becoming invisible. Another engine update will be requiredwelcome to fix that. That shall be the road ahead.

J-1, bonjour les pépins. En plus des effets curieux lors des déplacements d'encriers et du pendat qui fait la grève, je me retrouve régulièrement avec le moteur de jeu qui se plaint qu'on dépasse la limite des 128 sprites hardware. Il faut dire qu'à lui seul, un pendat en consomme déjà bien 6 ou 7, et que le moteur les pré-alloue pour l'ensemble du niveau. Du coup, quand les encriers décident de lancer de l'encre je suis trop court.

(edit: heureusement, ce n'était qu'une fausse alerte liée au fait qu'un des morceaux de runME s'auto-alloue la moitié des sprites hardware et n'en laisse que 64 pour les niveaux du jeu ^^" voir les détails dans les commentaires)

edit: fixed with automated OAMs management. It took over 1 year, but hopefully, meanwhile I had realised that I was far from the hardware limit and just experiencing issues in runME because it pre-allocated half the OAMs "for internal purpose"

Saturday, September 28, 2013

2 days left

Inkjet throwing Bilou up finally works fine with corrected animations. I wish Bilou would lower by 3 or 4 pixels when the inkjet prepares the blast.
Tonight, I shall upgrade runME and the .cmd files on the DS so that I can try all those new objects in their real target environment. I also added some turn-back transition for pendats ... they should be able to join the game soon.
I still need some blocks for the "end-of-rail" tile and some horizontal
I need to make RectoVerso vulnerable to thrown bladors
I have to check inkjet-on-rail do work
I need to make sure the engine in RunME allows me to keep grabbing sponges.

Bien. Les animations pour projeter Bilou fonctionnent. Ce serait pas mal que Bilou s'abaisse de 3-4 pixels pendant que l'encrier se prépare. Reste à mettre à jour runME et transférer les .cmd sur la DS pour faire quelques tests en situation réelle. J'ai aussi rajouter une animation de demi-tour pour les pendats. On devrait pouvoir les intégrer prochainement.

Manquent encore des blocs pour la "fin du rail", les rails horizontaux, rendre les gommes vulnérables au lancer de taille-crayon, vérifier que les encriers-sur-rail fonctionnent correctement et que le moteur de jeu permet d'attraper les éponges dans runME.

Friday, September 27, 2013

3 days left.

Not so much achieved yesterday, but this day is off, so I can fix inkjet's behaviour. Some state command adjusted, and I have Bilou thrown up for the first time with a little thrill ... Now I have to find the tuning that makes the animation work fine.

Hmm ... something wrong with transanims, but it's getting to late to get that sorted out >_<

... oh, wait ... I'm not parsing :anim%u tail in transitions on 'done' or 'fail' but only on 'event' and 'found' in very specific situations ?? wth? 

Le J-3 est un jour de congé, et ça tombe bien, parce que je n'ai pas avancé autant que j'aurais voulu hier. Quelques commandes state à ajuster et voilà Bilou qui se fait projeter par un encrier pour la toute première fois. Petit frisson. Reste à ajuster l'animation pour que ça marche correctement. Et corriger le parser pour qu'il prenne les animations de transition en compte dans tous les cas, et pas seulement quand la transition est le résultat d'une collision.

Wednesday, September 25, 2013

4 days left

RectoVerso do bounce around and avoid jumping into hazardous places whenever it can do so. It could use a fix in its behaviour so that small steps (16 pixels high) are tolerated, but that's not critical in this level. Now let's focus on inkjet interactions. Avoid wandering inkjets, make it throw at reasonable rate, and make it throw Bilou upwards.

J-4. Les gommes peuvent se balader en rebondissant et elles évitent les endroits "dangereux" pour elles quand c'est possible. Concentrons-nous sur les interactions avec les encriers: ils doivent arrêter de se promener dans le niveau, tirer leurs gouttes à une vitesse raisonable et surtout, projeter Bilou en l'air.

Tuesday, September 24, 2013

5 days left

I have some pixels for the "cork platform", I have tunable spongebops. Eraser jumps will not work very well with "invisible walls" as those would act as wall that make no physical sense for the player (unlike Rayman's airborn anti-toons and platforms trapped in cages). Instead, I could have the "prepare" state of verso testing the ground where the next jump should end, and turn back if that location isn't safe.

Would such a remote testpoint work ?

Plus que 5 jours avant la fin du mois de septembre, celui qui est 20 ans après la 'naissance' de Bilou. J'ai dessiné une 'plate-forme en liège', j'ai des éponges au mouvement ajustables. Les gommes-sauteuses ne marchent pas terriblement bien avec les 'murs invisibles' , donc je rajoute un état où elle se prépare à sauter et où elle 'sonde' le sol pour décider de faire ou non demi-tour. Si ça marche, ce sera un record battu pour les testpoints.

Sunday, September 22, 2013

7 days left.

I got LEDS working almost fine on the green DS with the expanded and reordered animation sheets. I went through trivial fixes such as "animation X shouldn't loop since we depend on it to be done before switching to another state", etc. In-editor GOB linking did worked, although producing curious effects: a Spongebop was found moving through the level backwards because the nail it's pinned on was cloned from an inkjet and therefore had an initial horizontal speed :P

Cette fois, c'est reparti. L'éditeur de niveaux et le moteur de jeu intégré à "runME" sont capables de gérer les nouvelles pages d'animations correctement. Je peux ajouter les petits raffinements du style "faire faire demi-tour à la gomme" ou "se relever après s'être ramassé un coup", etc. Il me reste 7 soirées pour compléter le comportement de la gomme, de l'encrier et du crayon et dessiner le "bas" du niveau anniversaire.

At some point, it will save time to be able to see the initialization expression of one GOB, clear it if needed (and later, to write it from scratch, of course). A way to have self-initializing spongebop would also help: currently, they do not preserve the "energy" they're given initially, and so their speed is "reset" to a given swing value when they're crossing the vertical line. Unless this is fixed, sponges with a too-short thread will break loose and sponges with a too-long thread won't swing as far as the level design states.

I still wish Bilou could get more height when leaving a grabbed sponge, too. And then, there's pendat.cmd virtually inexistant, verso.cmd hoping for more freedom, inkjet.cmd needing to settle down and some cork-platform to be drawn.

Sunday, September 15, 2013

Ready? School!

one whole line of airborn (trans)anims!
Aah ! Ça fait du bien! J'ai réussi à mener à bien les modifications synchronisées de l'éditeur de niveau et d'animations pour permettre jusqu'à 6 fois plus d'animations. Du coup, ma DS "green lime" est prête à reprendre le flambeau et me permet d'enfin bricoler ce "niveau anniversaire", qui a d'ailleurs bien avancé ^_^ Le fait que toute la famille ait été à moitié K.O.-microbes pendant le week-end n'y est pas tout à fait étranger ^^"


I'm kinda proud of this week-end's progress. LEDS, AnimEDS and runME have been syncrhonously updated to allow more animations (up to 6 sheets) and thus more flexibility in behaviours. That will give me plenty of headroom for "thrown by an inkjet", stunned by a blador and all other interactions that should make the School Zone interesting to play. As a result, I have doubled the content of the "anniversary school zone" level which I hope to be ready by the end of the month.

Btw, be ready to hate the bopping eraser. It will not exactly "chase" Bilou, but it's gonna turn back or adjust the height of its jumps depending on your position 0:-°

Friday, September 13, 2013

Missing monsters

A bug in pokemon. Here be
a no-such-monster exception
Latest tests seems to claim that upgrade LEDS is trust-worthy enough to start manipulating my precious level maps (or at least their Lime copy -- more to come soon). There's one last thing I would like to fix: making sure that we can detect missing monsters, which may occur if some "input/import" statement has been stripped from the GobScript .cmd file that describes the level. Right now, they'll likely don't show at all, giving you very little opportunity to select them (you don't know where to click) and change their type.

Lors des dernières tentatives de donner vie à la "school zone, level 1", je m'étais heurté à deux problèmes: des incohérences entre le nom de fichier de la map et celui réclamé par le script définissant le niveau et l'absence de certains monstres faute du fichier de comportement correspondant. Le deuxième point était d'autant plus gènant que le moteur de jeu refusait alors tout simplement de faire tourner le niveau ... et que l'éditeur de niveau rendait impossible l'édition de ces "monstres manquants" pourtant présents dans le
niveau. Vous suivez toujours ?

Bien. Trop occupé à faire le design du "langage secret" employé sur la planète 24.3-lxxix ce midi, je n'ai pas encore codé les dernières retouches sur LEDS avant de repartir dans les comportements de monstres et le dessin des maps, mais j'ai au moins pu dégrossir le terrain. Voilà qui présage un week-end bien rempli :)

It would be neat to take advantage of this last fix to also ensure that a decent number of animations can be used, without forcing them to be all on "sheet 0".

  • the pages corresponding to the .spr file need to be present in RAM so that we can tell location of "old" animations in VRAM. That's handled completely with Set::Load;
  • the code handling "anim%ano = spr:%sno" could allocate thumbno++ rather than using %sno directly, and then set thumbrq[%sno]=thumbno.
  • that allows animeds thumbs to be cherry-picked when thumbrq[%sno] is defined.
  • either the page carrying thumbs is created and filled *after* parse()
A missing .cmd file will result in monsters with no corresponding states[no] entry. We can prepare the states[] array so that all entries are ready to display the "missingno" icon. We should ensure at display() that the OAM is not in 'disabled' state, though.

Here comes the week-end ... take the dishwasher to warp 4 and let's make it so.