lundi, août 29, 2011

Back in time ...

Well, I still have to work on a few aspects to make AnimEDS more comfortable to work with before I start using those new animation in the game engine. But at last, the "core modification" of how the timeline is managed is fixed. Pauses and loops can be visualised and manipulated. Do you like their "musical" style ?

vendredi soir} Bion, j'ai donc réussi à faire une version minimale de l'augmentation de délai. Encore un peu trop minimale, puisque je suis obligé de sauver l'animation puis de la recharger pour que le délai fasse effet ... bizarre, bizarre ...
samedi} Ou alors il suffirait de "valider" l'animation ? ...
dimanche} Allez, on re-génère la version compilée de l'animation lorsqu'on clique sur la preview, et on en parle plus. Mais pourquoi diable mes petits contrôles de boucle n'apparaissent-il pas ?
lundi midi} ça y est. Les contrôles apparaissent. La ligne du temps reste ordonnée quand j'y déplace un cellulos. On va pouvoir passer au prochain point sur la todo list ... la transparence ou les zones de collisions ?

lundi, août 22, 2011

Funky work at BilouCorp !

Il semblerait que dans un univers parallèle du Web, Bouli est directeur des recherches à la BilouCorp! Le rôle de Funky Funghi dans tout ça reste quelque peu mystérieux.

Bref, au moment où je trouvais que dev-fr, c'était un peu mort pour la DS, Nuki me relance... Une autre génération où le "game-making" s'est spécialisé au point qu'il y a maintenant des RPG makers ... sisi.

This month, I have been contacted by funny people naming themselves "Bilou Corp" and having a special team named "Funky Work". The similarity with Bilou and Funky Funghi amuses me.

vendredi, août 19, 2011

Scrolling issues: done.

Oh, btw, horizontal scrolling issues are now fixed -- it was about time!. Hope you enjoy it.

Juste pour vous tenir au courant: le scrolling horizontal marche maintenant aussi bien que le vertical. Ca ne faisait finalement que presqu'1 an qu'on attendait ça ... ou depuis le mois de février 2010 pour Morukutsu :P

Et il m'en reste encore pas mal, des vieux 'todo' comme ça ... la plupart visant l'éditeur de niveau (qui n'a toujours pas eu droit à une release officielle), d'autres sur des extensions des capacités du moteur de jeu ou de l'éditeur de sprite. Affaire à suivre.

jeudi, août 18, 2011

Revising animation delays

A chaque utilisation d'AnimEDS, la liste des imperfections s'allonge. Ici, c'est la gestion de la ligne du temps -- le composant le plus ancien -- qui devra être revue dès que j'en ai fini avec ce fichu escalier imponçable.

Thought: Since we have an abstract TItem class, we could introduce a new TIControl in addition to TIFrame that would support things such as loops and end-of-animation. It would generate a static thumbnail and could be moved at wish.

Implementation detail : TI* structures do not directly know their position. The TIList consists of (unsigned, TIFrame) pairs indicating each TIFrame's absolute position. Relative delays are inferred in exportAnim() in order to produce the C_CONTROL:I_DELAY entries.

Thought: There's a "delay" plus/minus control right now, that control delay when a new item is inserted and the additional delay at the end of the animation. We'd rather have it affect directly how long a given frame is displayed.

  • [done] add AnimWindow::adjust_positions() to perform one-shot delay update
  • [done] rewrite code for '+', '-' and FRAME_SELECTED accordingly
  • [wish] possibly use the 'prv' and 'nxt' checkbuttons to uniformly rescale the animation.
  • [done] introduce TIControl for loop and end-of-animation
  • [done] make sure moving frames across other frames do not break animation order

mardi, août 16, 2011


Deux boules superposées, deux mains rondouillettes et pareil pour les pieds, Badman est un candidat idéal pour l'animation modulaire lui aussi!

Quelques coups de stylet dans le SpriteEditor, une petite animation-test d'une course plutôt concluante. C'est bon. Mais en redessinant une cape hier soir, je me rends compte qu'il est impossible de la lui ajouter sans devoir refaire toute mon animation. Nouvelle session de code en perspectiveterminée ...

Among PPP Team characters, Badman is another good candidate for AnimEDS testing: balls for head, body and hands ... simple feet ... A few stylus stroke in SEDS, a simplified shading style and we're already ready to make him run ^_^ Compared to the '96 sprite sheet, that's a lot of work saved! Adding the waving cape required a bit more code on AnimEDS -- I hadn't drawn it at first, but defining a new skeletton (the 'ok' button on the FileWindow) would clear the animation. There's now a way to keep the animation by L-clicking that "ok" button.

Okay, so next steps:

  • automate export of animation into e.g. animated GIFs.
  • onion skin, at least for specified object, later for complete character

vendredi, août 12, 2011

Stacking Troubles

Fix a bug, another appear. Does that sound any familiar ? I had to reorganise the "window" that constitute my animation editor, so that I would no longer miss some data while saving my work. Those "windows" are widgets container that you can stack over each other. When the GUI engine needs to deliver an event, it starts trying to give it to the top-level window and digs deeper until one of the window has one widget that can process e.g. the click.

The reorganisation consisted of introducing the ThumbWindow (see snapshot) below the FileWindow, so that one can control the slot where an animation should be saved while he's building new skelettons and making "save animation to slot" a natural operation when you're on the road to save to a file.

at first, it seemed to work fine, unless I realised that a single click on any of the limbs or sprite tables disabled all the actions on the "bottom screen" widget. I had overlooked the fact that two of my widgets on the bottom screen (the tables) were actually not part of the "FileWindow", but something laying on the main (application-wide) MetaWindow (in red), so that they could be shared by both file storage and animation edition activities.
Unfortunately, because MetaWindow is the lowest layer of the software, it were obscured by the screen-wide "SpriteTable" that contains all the thumbs. No way to go through. Of course, this is ridiculous: those thumbs are not on the touch screen so they shouldn't be receiving any stylus-based event ... but well, they are. For some odd (historical?-) reason, the GuiEngine ignores facts as trivial as "the top window is a DownWindow, so any UpWindow in the stack shouldn't receive GUI_CLICKED". Hopefully, it features an "active" flag that windows can set and clear to indicate their will to receive/ignore such events. It's to the application author (me ^^") to ensure Window::release() and Window::restore() update this flag accordingly to the desired effect. ... which is now done.

Now, if you don't mind, I have a staircase to polish.

dimanche, août 07, 2011

(-1)/8 = guru meditation error.

Et chroot! J'avais donc commencé à dessiner la tête et le corps d'un Badman avec la version "gamma" de mon sprite editor. J'en étais à une animation (plutôt réussie, à mon sens) de sa cape, l'idée étant d'en faire un perso annimable avec AnimEDS. Plutôt sympa pour commencer mes 2 semaines de congés pendant que ma fée est toujours dans le tome 1 de la Trilogie des Périls (Eddings). Je veux ajuster un poil la vitesse de mon animation et là, bardaf!


quelque part, un widget n'a pas été prévu pour recevoir des coordonnées négatives... Il ne devrait en toute logique pas y avoir de coordonnées négatives sur la DS, d'ailleurs. Nulle part. Mais là, pas de chance, ça m'a tout planté avant que je n'aie eu le temps de sauver mes p'tits dessins.
Enfin, j'ai trouvé la cause de l'erreur. Je vais patcher ça fissa. Patché.

Hey there. If you happen to be using the 'latest beta' of my Sprite Editor (that is, SEDSGAMA.nds since I've switched to dkp-r32), be warned: there's a nasty bug in the "animation preview" part that may make you lose your work. I figured out what the problem is and will update that version soon.

Edit: fixed: if you are using sedsgama, launch it near your favourite WiFi access point and press [START] then [SELECT] to download and use the latest version (N.B.: the updated sedsgama.nds will always be downloaded at the root of your media card.

mercredi, août 03, 2011

now to the horizontal scrolling ...

Hello, there. If you missed the english translation on my former post, Sonic Camera Management, it's now done. The new scrolling is implemented and works fairly well for the vertical direction. Unfortunately, it doesn't work as well for horizontal scrolling.

The reason is that Bilou is not moving at the speed of 1px/frame but rather 2px every 2 frames, to match the animation speed. Former platformers would typically have running characters instead, since they are more flexible. When running, it's easier to make it so that (animation) frames where a feet is in contact with the ground only last for 1 (screen) frame. Well. Anyway. The result is that right now, the horizontal scrolling is not smooth anymore, but rather "pushed a bit" at every step, then it sits back, then pushed again. Ugly. I need a mixture of the two techniques, which means a bit more code hacking.

Youpie. J'ai donc un chouette scrolling vertical bien plus professionnel. Hélas, trois fois hélas, le scrolling horizontal en a pris pour son grade. Que je m'explique. Bilou se déplace de 2 pixels tous les 1/30eme de secondes alors que le jeu tourne à 60Hz. Il reste donc 2 "coups" de jeu au même endroit bien qu'ayant une vitesse moyenne de 60px/seconde. Le hic, c'est que si j'applique la politique "le personnage pousse l'écran en quittant la zone neutre du scrolling", eh bien, mon scrolling ne bouge plus qu'à 30Hz, 2 pixels à la fois. Et ça, c'est assez moche et nauzéeux. Bref, il faut que je passe à une approche hybride qui combine le nouveau scrolling vertical et l'ancien scrolling horizontal ... soit encore un peu plus de bricolage sur iCamera :P

... and well ... I will need to build a place where I can test things with the full-quality pixel art ... not restricted to that "open-source 8-bit" color reduction thingy :P