mardi, mai 31, 2016

ChannelState.CurrentCell

Je replonge un peu dans le code de libntxm. L'idée, c'est d'ajouter à ChannelState une référence directe à l'emplacement dans le pattern.  La bonne nouvelle, c'est que comme les patterns sont stockés piste par piste (plutôt que ligne par ligne), il est assez facile d'avancer dans une de ces "pistes spéciales", l'idée étant bien sûr de les configurer pour qu'elle jouent le contenu d'un des "effets sonore sur pattern" de mon frère... pas de murs à défoncer pour cette-fois ci ... par contre, pour l'instant, on entend rien ^^"

Let's go for some more libntxm hacking. I added years ago a "ChannelState" structure to capture what effect processing code needs to know about the running player. What I want to have now is a way to "lock" some channels to a specific place in the tune indepently of where other channels are (that is, current position in song), so that I could have channels 1 and 2 of a sound effect playing temporarily on channels 14 and 15 of the NintendoDS. Well ... enough blogging, it's time to run ddd and figure out why I don't hear anything.

dimanche, mai 22, 2016

Presentation topics

 62 téléchargements de "School Rush". Ce soir, je mets fin à la "campagne de promotion" de mon projet qui court depuis la release du dernier jeu. RaymanPC, way of the pixel, gbatemp, nintendomax, playeradvance... La grosse différence avec l'époque dev-fr, c'est que ça ne se propage pas tout seul. Je viens, je discute, je présente ... A chaque endroit. J'aurais aimé parvenir aussi à contacter "gbarl.it" et "scenebeta" (espagne), avec qui le contact avait été plutôt sympa à l'époque Apple Assault. Ce sera difficile de me faire entendre sur "tigsource", aussi.

I made a break in game development those last two weeks. Instead, I've done my best to make the game known. In the forums where there is still a bit of activity about homebrew games, where I already presented Bilou back in time, and in the Rayman fans community, since everywhere else, the similarity with Rayman's Picture City is pointed out :P

I'd have liked to reach the other european website that relayed automatically Apple Assault after the release on dev-fr, like gbarl.it, scenebeta and pdroms. These were fun because the owners tended to bring added value to the mere link. I'm not that good at promoting my own game. I tend to feel like an intruder when doing so. So it will be my last evening as a 'communication and download manager', and I'll go back to game design and lead engine developer.


C'est un score honorable, comparable au premier mois du "Apple Assault" qui a le mieux marché jusqu'ici. Maintenant, je ferme la parenthèse. On va reprendre les petits développement pépère. Si quelqu'un sur un forum veut attirer mon attention, j'espère que j'ai laissé assez de liens spécifiques pour qu'on pense à venir me relancer ici :P

jeudi, mai 19, 2016

Sound Effects.

La prochaine release aura des effets sonores supplémentaires. Mon frangin a enfin fait quelques prises avec BFXR et je me retrouve avec une nouvelle bande son qui propose deux ambiances (à l'aise pour l'encre ou non ?) et 8 nouveaux petits sons.

Niveau mémoire, ça semble passer, malgré la taille conséquente de 1Mo du fichier. Ça pourrait bien nous amener à une occupation de 50% de la mémoire totale pour la musique, puisque libntxm compense en software les limites du soundchip de la DS en créant des variantes des samples à l'octave, mais pour autant que j'aie pu en juger tout va bien.

Noël! My brother finally shipped me an updated soundtrack for Bilou : School Rush that features new sound effects for jumps, bounces, pick up, throw and other moves of the sound palette. The second good piece of news is that despite the fairly large 1MB for the soundtrack, it still fits in the memory budget (at least for the first level). Maybe I'll have to work a bit on the sub-sampling loader of NTXM, but it doesn't seem to be a priority.

La où ça va me demander d'avantage de travail, c'est que mon frère n'a pas mis des sons "tout simples" pour les effets. A la place, il propose des combinaisons du sample sur deux ou trois pistes simultanément, avec des notes différentes, voire des effets de portamento ou d'arpeggio comme on en aurait eu dans le module lui-même. Et ça, eh bien ... le moteur de jeu et la libntxm ne sont pas vraiment prêts à le faire.

Yet, there is a heavy chunk of coding ahead before I can use the sound effects as he designed them. The samples alone are not what I need to use: my brother designed the samples to be played at given pitch, combining 2 or 3 notes to get the desired effect. Sometimes I'll have to support arpeggios or portamentos, too. I'll need to figure a way to do that properly. I had plans for such things for quite a long time, but now it turned from [wish] to [need].

dimanche, mai 15, 2016

En direct de Leilani's Island

Dans son petit coin de web, Ishi (Craig Forrester, auteur de Johnny biscuit et Princess Chardonnay entre-autres) nous prépare un adorable jeu en pixel art dont le gameplay rappelle assez bien celui de son jeu favori: Wario Land. Bien qu'étant un jeu de plate-formes, le jeu s'articule surtout sur la "roulade" de cette charmante protagoniste. Du coup,

  • la roulade permet d'aller plus vite que si on courait,
  • la roulade permet d'attaquer certains ennemis de face, plutôt qu'en les écrabouillants. En fait, tout comme dans SML3:WL, sauter sur un ennemi ne l'élimine pas. Faire une roulade bien.
  • le saut est volontairement limité (3 blocs, 4 en rebondissant sur un ennemi) pour qu'il soit plus intéressant de se servir de la roulade que de l'éviter.
  • Certaines plate-formes (les cordes) ne peuvent être traversées qu'en roulade. 
  • C'est en poussant sur ROLL en l'air qu'on lance l'attaque spéciale de la fleur de feu, et parce que ça fait bizarre que le bouton ne fasse rien dans certains cas, Ishi ajoute un "annulateur de saut" pour celui qui fait "ROLL" en l'air sans avoir ce power-up.

Hats off to Craig Forrester (Ishisoft) for his brilliant work on Leilani's Island. I hope he won't mind that I keep note here of the good design decision he took to have the game focus on one rich, interesting and funny mechanic: the island girls' ROLL move. If you really don't read French, I suggest you randomly click links in the French text to be sent to some of Craig's updates that I found especially interesting. I hope I'll be able to make Bilou's Adventure as rich as this. Btw, have you noted that Craig selected the 400x240 resolution of the 3DS ?  

Décision sympathique, c'est en ajoutant une fleur dans ces cheveux que Leilani augmente sa force. Et oui, elle peut aussi utiliser une fleur de feu. Mais ici il s'agira d'une attaque-roulée plongeante, capable de détruire des blocs. La combinaison de l'attaque-rodéo de Mario et le bouclier de feu de Sonic. L'utilisation de la diagonale lui permet de rendre les choses plus prévisibles (plus de timer "chéri, ça va couper"), plus faciles à viser (qu'à l'horizontale, en tout cas), et moins génant pour celui qui voulait simplement faire une roulade en atterissant. Bien vu.

Avec son mécanisme de "j'te roule en boule", le jeu permets plein d'aspects-puzzle, renforcé par les effets de réactions en chaîne sur les blocs. Oui, parce que -- contrairement à Bilou jusqu'ici -- le jeu assume pleinement l'héritage de Mario avec des blocs-à-bonus que l'on peut frapper verticalement ou latéralement, et d'autre blocs qui se fractureront si on les frappe assez fort. Cette histoire de réaction en chaine est encore renforcée par des séquences d'objets. Bref, côté éléments à coder, Ishisoft n'est pas en reste.

C'était déjà riche comme ça, mais Ishi nous rajoute encore les fruits, éléments interactifs un peu comparables aux carapaces de koopa, sauf que je n'en ai pas encore vu blesser le personnage. Et pour s'assurer que tout va bien, rien de tel qu'une map-unit-test qui montre en un écran toutes les interactions possibles entre les différents éléments du jeu.

Ishi nous dévoile aussi un truc que je ferais bien de réutiliser dans le développement de Bilou:  l'enregistrement de la trajectoire lors d'une scéance de jeu qui peut servir par la suite à placer des bonus précisément sur la trajectoire proposée au joueur (c'est très KirbyKid-esque, ça ;)

Il est aussi fréquent qu'il teste ses idées de jeu (ennemis, éléments spécifique à un environnement) dans un décor de blocs colorés tout génériques ... le graphisme vient alors plus tard.

Il me reste un gros morceau à lire: le système d'interaction entre les objets.


Object-to-Object collision has been recently revamped in Leilani's engine. In most collision, one object sends several "collision probe", to which the other object replies with either "NONE" or with a custome message indicating how the originator (typically Leilani herself or a rolling baddie) should react.  I think I keep preferring my own approach combining the active/passive roles of Out'm'Up with the CAN_xxx flags of Xargon Engine.

In my engine, I'd have

  • Leilani.walk { test F_COLLECT ; area F_HIT }, 
  • Leilani.roll { test F_COLLECT|F_ROLL } as well as Baddie.roll { test F_ROLL|F_COLLECT }. 
  • Shells would be passive and have only {area F_COLLECT }. Possibly you could need a second flag for F_COLLECT_PUP, so that only Leilani gets flowers. 
  • Spiky.walk would have { test F_HIT; area F_ROLL } : it actively hurts leilani, but may be rolled into.
those "test" and "area" commands may correspond to distinct hit boxes, allowing e.g. spiky to be rolled in the back, but still hurt in the spike.

vendredi, mai 13, 2016

The SP case.

Himmel, I hate those sect cases. If they want to reach enlightenment, I can offer them a small estate where the light on the ceiling never turns off. I got one at the office. But the clue my informant Gilles dropped me leaves no doubt about it. The meditating guru is back, and where he goes, he always leaves a red trail behind.

Of course, he had to be back just we were celebrating the nomination of City's new Release. A promising release in fact. With almost as much guts and balls as I've got guns and bullets. I'm afraid he'll have a though time getting us rid of corruption where he lays. I remember hearing the Chief warning he that he pushed too far. "You are trying to get things too perfect", the Chief said. "But you shouldn't be in such a rush to do it. I'm not sure there is room for so much perfection in our City as it is now."

I'd better be in my bed than chasing the guru's minion in a smelly car. But I can wash my car next week... the City's honour is not likely to wait that long. The younger brother of our fresh Release is already getting media attention, promising to take over the duties of his beloved elder. I knocked Malloc on the door, as usual, but for once he seemed clean. Maybe a bit too clean. I suspect he could have avoided the drama if he felt like moving a mere finger. But you know how Malloc is. Claim that you will do garbage collection to get a clean City, rid of corruption and you know he will stare and wait for you to collect yourself.

I tried to hook on Noda, too. He's been seen on riots against the Devkit's establishment with his anti-ARGV claims, free-EFS for all and so on. He used to hang around on the docks. Looks like he now hangs. Period. The guru again ? Perhaps. But the murderer forgot something behind, this time. There was some pointer showing that Mr. Stack has been breaking away his parole. He shouldn't have moved any further than 16K from his home, in 3e' block of district B, and here he was, at 0xAFFFF58. I'm pretty sure if I get my hands on him, he'll sing.

Either that, or I'll find a place where I could find another bottle.

tout ça pour faire un clin-d'oeil à Gilles pour avoir attiré mon attention sur un couac que j'ai laissé passer. Avec une mémoire de seulement 16Ko pour la pile, y ajouter une copie des 6 maps (un peu moins de 2Ko chacune) destinées à l'écran de statut, c'était une mauvaise idée. Faire une release sans avoir re-testé l'ensemble sur le vrai hardware encore plus. Comme quoi, les jours d'optimisations de la NES ne sont pas encore complètement obsolètes

lundi, mai 09, 2016

Go play SchoolRush!

https://sourceforge.net/projects/dsgametools/files/latest/download?source=navbarI got all those little details fixed now, and at last, I am ready to release an improved version of Bilou: School Rush with the completed bottom screen. It hints you what to do. It reminds you how powerful or weak you are. It makes whatever happens on the top screen easier to decide about.


WARNING : I just (May 10th) spotted a bug when running on the Real Thing.
 A fix is written. It has been uploaded on May 11th. 
Look for SchoolRush-lazy.nds packaged within SchoolRush-cow.zip

School Rush is a speed-driven platformer. The action takes place above the ink. Don't fall. And make sure you don't let the raising it reaching you. If you loved challenge of platformers of the Amiga age, if you're the kind of player that seeks mastery of a game and enjoy to re-play the game to see whether you've progressed, School Rush is made for you
  • use the D-PAD to walk left and right and double-tap the D-PAD to run (better run whenever you can),
  • use A to JUMP and FLOAT.
  • use B to GRAB and THROW.
  • double-tap B when you have the punch power-up to PUNCH freaky supplies.
Oh, and if you're a dad or mum with kids, the 'easy' mode of School Rush is for them: it offers a more free playing mode where ink doesn't move, allowing to toy with the environment and learn how to go through obstacles in a more friendly way.

PS: now all's left for me to develop is the extra 20% : the secret level, endings and power-up shop.


PPS: voilà, Gilles. C'est la release dont je parlais ce matin: Bilou, la balle bleue qui essaie de devenir la plus rapide du monde! Assez rapide en tout cas pour arriver à stopper la montée d'encre qui menace la livrille. Sûrement encore un coup de ces envahisseurs de crayons-soldats. Heureusement, Bilou à plus d'un tour dans son sac!

samedi, mai 07, 2016

The lifemark


Allez, je vais tenter d'enchainer sur l'implémentation de la marque-ta-page-de-vie, parce que tout de suite, c'est moins utile quand l'illustration pour le 'punch' se fait manger à moitié dès qu'on prend un seul coup ^^"

Puis un peu de débugging, parce qu'au retour sur le menu, mon bel écran se fait cacher (pas de tile transparent sur les écrans de menu) ... donc je dois utiliser la version "normale" de desmume pour afficher/masquer les calques en cours de jeu (j'utilise d'habitude desmume-cli, la version sans interface utilisateur)...

Two great news. First, I'm almost done with that new life meter for Bilou: School Rush. The old "black rectangle" display mimick'ing some raising ink really doesn't work anymore with the gameplay hints on the bottom screen.

Second -- that happened as I tried to move a (regular) desmume window: looks like the full-fledged version of desmume (0.9.9) is now featuring a scaling filter that reconstruct curves from pixel images. And it behaves reasonably well with my pixel art.


Et là, surprise: desmume intègre maintenant un système pour agrandir l'image, avec du lissage qui donne plutôt bien dans le monde de Bilou.