edit++done.
Tuesday, May 31, 2016
ChannelState.CurrentCell
edit++done.
Sunday, May 22, 2016
Presentation topics
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
PS: j'aurais bien aimé pouvoir dire quelque-chose de semblable sur base des statistiques de blogger. Seulement voilà: comment tirer quoi que ce soit d'un système qui vous annonce "90 visites l'heure dernière" mais qui est incapable de refléter ça sur les points d'arrivée ou sur les pages affichées ? ça ressemble presque à une façon d'imposer l'utilisation de la plate-forme professionnelle (et trop gourmande en ressources sur le navigateur, selon moi) de Google. Grmbl.
Thursday, May 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.
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.
Sunday, May 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.
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.
- 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.
Tags: blogroll, collisions, designclass, game, indie, level editor, mechanics, sidescroller, unit test
Friday, May 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.
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
Tags: guru meditation, novel, rush
Monday, May 09, 2016
Go play SchoolRush!
- 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.
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!
Saturday, May 07, 2016
The lifemark
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)...
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.
Tags: bilou, desmume, rush, user interface
Thursday, May 05, 2016
Its all sketched in the book!
early bugs to be caught. |
N'allez pas vous imaginer que j'utilise une autre excuse-de-BMX pour ne pas fignoler School Rush! J'attendais juste un moment un peu plus calme où je ne serais pas occupé à faire des trous dans les murs. C'est tout. Et nous y voilà justement, avec un sympathique changement d'illustrations pour guider le joueur dans son aventure et le renseigner rapidement sur les mouvements possibles.
En direct de Xenial
Voici la relève. Un laptop BMX quad-core avec un Ubuntu Xenial Xerus fraîchement installé (LTS 16.04).
Première bonne nouvelle: il aura suffi d'un apt-get install desmume pour avoir un émulateur capable de faire tourner la dernière version de Bilou. Le support du DLDI a apparemment été bien amélioré puisque je n'ai plus besoin de donner du --gbaslot-rom pour que le jeu fonctionne.
Deuxième bonne nouvelle, il suffit de télécharger le devkitArmUpdate.pl depuis devkitpro et d'exécuter perl devkitARMupdate.pl dans le répertoire où il a été téléchargé pour se retrouver avec un kit de développement DS (ou 3DS, ou GBA, etc, d'ailleurs) fonctionnel, capable de recompiler tous les bons vieux exemples -- ce qu'il fait d'ailleurs très bien d'un "make" dans ~/devkitPro/examples/nds.
Premiers bémols: ce laptop a un pavé numérique à la place des touches "home/end/page-up/page-down", je loupe sa touche "CTRL" une fois sur deux (CTRL et Fn sont inversées par rapport au thinkpad que j'avais jusque là), et il lui manque un bouton du milieu pour son touchpad.
Maintenant, le gros morceau: il va falloir s'assurer que le nouveau devkitPro sait toujours compiler Bilou ... ou plus exactement adapter le code de Bilou au nouveau devkit.
pour libgeds
- les fonctions de raccourci pour la programmation des modes vidéo sont marquées obsolètes. Il faudra que je trouve ce que le sieur Wintermute et ses accolytes nous proposent à la place.
- le nouveau compilateur est plus pointilleux sur les types entiers. En particulier, dans le code de lecture des animations AnimEDS.
- je ne vois plus de diropen ou dirnext que j'utilise dans FileWidgets ... ça, c'est plus problématique. Il faudra que je convertisse le code correspondant vers opendir/readdir. Ça aura aussi des répercussions sur le code de Noda (efs).
- le nouveau "die.cpp" a besoin d'un en-tête (nds_loader_arm9.h ?) hébergé à l'intérieur de runME, mais runME ne compilera pas sans libgeds. Il faudra y remédier.
pour les tests automatiques:
- mercurial, linux-libc-dev, vim, libc6-debv-i386, libstdc++-4.9-dev, libx32stdc++-4.9-dev et surtout g++-multilib.
- les fonctions DMA de la libnds sont désactivées et remplacées par des memcpy, vu que le PC aura un peu du mal à émuler les copies à travers les registres de la DS. Par contre, du coup il me manque des déclarations de registres dans videoGL.h... il faudra que j'aille voir sur mon bon vieux grizZly si j'ai fait des patches sur les headers de la libnds pour que ça passe...
Tuesday, May 03, 2016
HUD layers
Cette fois-ci, il faut que j'attaque le gros morceau du livre-interface: les images qui changent au fur et à mesure du ramassage de bonus. Les voilà prêts à être utilisés sur des calques hardware séparés pour qu'on change indépendemment l'illustration de gauche et celle de droite.
N for new tiles in hud-bg-none.spr |
Sauf qu'en fait ce découpage se révèle totalement inutile: l'ensemble des 6 images totalise moins des 1024 tiles autorisés (de justesse) donc elles peuvent être encodées en une seule fois. En fait, elles doivent être encodées simultanément sinon, il va y avoir un problème de palette... Par contre, si je veux remplacer le "livre vide" (hud-bg-none), je devrai veiller à faire plus simple que le texte.
Le changement d'illustration pourra donc se faire simplement en reprogrammant (voire en scrollant vers) le bon morceau de la "map HUD", mais le tileset, lui, pourra rester constant.
Tags: rush, user interface, vram