Tuesday, July 28, 2015

Good Ending / Bad Ending.

Much like Pac-Man, Pharaoh's curse and Apple Assault, my current game -- Bilou's School Rush -- has a limited number of maps and wraps back at map #1 when the player has cleared them all. Like in the games mentioned above, this wrap is completed by an increase in the difficulty of the game. Here, this is the ink raising faster, forcing the player to complete the game faster or to find new routes. I believe this is a nice way to build a game people can become good at while keeping an amount of game content that matches what a single person can create.

Quel est le point commun entre Pac-man, Pharaoh's Curse et Bilou ? Le retour du niveau N au niveau 1. Désolé pour les grincements de dents, mais pour avoir joué à quelques jeux de plate-forme homebrew qui ont tenté directement le mode "aventure", le résultat s'est révélé insipide, si bien que je veille à ce que mes jeux actuels offrent une plage de difficulté suffisante pour qu'on puisse y revenir plusieurs fois et y trouver du divertissement même s'ils n'ont que 4 niveaux.

But this time, I don't want to stop there. I have plans for an ultimate level that is not accessible to "easy" (and possibly not even to "normal") difficulty level. Only when completing that final level will the true story be revealed and the happy end unlocked. And with Sourceforge's SVN finally restored, I can push the tuning that makes such alternate ending possible without adding artificial branching in the game. The "bad" ending being simply the story-compatible excuse for restarting the game at higher pace.

En cherchant une façon de justifier ce "retour en arrière avec difficulté augmentée" par une petite histoire dans School Rush, j'ai commencé à imaginer une véritable sortie, avec une "vraie fin". Il faut dire que contrairement à Apple Assault, School Rush finit par devenir injouable si l'encre monte de plus en plus vite (au point que Bilou n'a plus moyen de courir assez vite).  J'ai finalement apporté les ajustements nécessaires pour ouvrir la voie vers cette fin alternative. Le décor pour le dernier niveau progresse lentement, mais sûrement... je vais pouvoir m'attaquer au level design ... et sans stress puisqu'il n'y aura visiblement plus de "retro compo" de chez NeoFlash ...

Sunday, July 26, 2015

Concept art : pyramid zone

C'est plus calme à la maison... j'en profite pour faire un peu de "concept art" pour la pyramide qui essaie de se trouver une identité propre et un gameplay. Le clin d'oeil à Fury semble enfin avoir trouvé sa place dans l'aventure de Bilou ... Voyons si pharaoh's curse peut m'apporter un peu d'inspiration.

There is definitely something odd with this huge, pyramidal building Bilou and Bouli found in the desert. Not only runes start to shine on monoliths, not only some cage change the color of those square-shaped beings that seem to have the power to open doors and move blocks around, but there are also those furballs all around the place. Not that our B dudes seems to complain, but it looks like some of them shouldn't be where they are.

Saturday, July 25, 2015

Les Homebrew de 2015 -- driven to insanity

Je peux difficilement me plaindre que mon "School Rush" reste dans l'ombre si, tout équippé pour le homebrew comme je le suis, je ne jette pas un seul regard au travail des autres. J'avoue que d'emblée les titres parus en 2015 sur Nintendomax ne sont pas du genre à m'attirer. Ils ont aussi été presque tous réalisés en Lua-sur-DS ou avec DS game maker, donc peu d'intérêt de programmeur ... mais laissons ces préjugés au placard, sortons hbmenu.nds (ils nécessitent le nouveau protocole "argv" qui n'est pas supporté de base par mon linker de bisounours) et regardons ça de plus près.

I am not the only one to make homebrew content for the Nintendo DS, even in 2015. The DS Game Maker still receives new game now and then, relayed on NintendoMax. Not the kind of projects that appeal me, but if *I* don't pay attention to others' work, why would others' pay attention to mine ?

I started with "driven to insanity", a board game for 3 players developed by Mumpyboor when he was 12. I mostly complain that you cannot learn the goal of the game by running the game. Either you guess it (I guessed I must go to any "goal" and then back to the start) or you open readme.txt... There are health status to take care of, room for strategy, chance events... it could be worth somewhat better graphics but things remain readable. Yet, I don't think I'll run it ever again, not without english-speaking kids around to play it. I hope the more recent humour-driven game by Mumpyboor will please me more.


Je commence par "driven to insanity" (mumpyboor, janvier). Un jeu de plateau converti sur DS à jouer avec deux comparse. Il y a des cartes chances, il faut prendre soin de votre bus et de votre santé. On dirait qu'il faut passer à un des "goal" puis retourner au point de départ un nombre suffisant de fois pour remporter la partie, mais le jeu manque un peu d'explications sur ce point.

La réalisation est un peu élémentaire mais sans être désagréable pour autant. Une bonne entrée en matière pour un développeur qui avait 12 ans à l'époque. J'espère que "jihad au mont Olympe" du même auteur sera plus intéressant. Là, c'est vraiment pour l'article que j'ai continué à trainer mes 3 bus jusqu'à un marquer un point. Je dirais bien "ce sera pour amuser les enfants", mais en anglais, ça ne marchera pas sans moi.

Tuesday, July 21, 2015

See you, bloggers.

With dev-scene.com dropped, dev-fr crashed, google reader turned off and the DS celebrating its 10 years, my RSS feeds list has shrunk to the point it is no longer worth checking. I wished to thanks their author for the nice ideas shared between 2005 and 2012 (mostly).

J'ai beaucoup aimé les années blog, que je situeraient de 2005 à 2010. J'ai beaucoup aimé l'ambiance bon enfant de dev-fr jusqu'à ce que l'engouement pour les iPhones ne le dépeuple et qu'un Androïd ne lui donne le coup de grâce. Je suivais les développement des uns et des autres via Google Reader grâce à la magie des RSS. Je laissais des commentaires et j'en recevais quelques-uns en retour. Tout celà est loin maintenant. Les blogs sont au mieux alimentés d'un "je ne suis pas mort" annuel. Au pire, leur adresse a été vampirisée par un quelconque annonceur sans scrupule. Petit message de sympathie à mes correspondants de l'époque.

0xtob is the author of NTXM library and nitrotracker for Nintendo DS. I owe him a lot -- including a patch featuring my upgrades to his player. His work has now moved to code.google.com. His blog is gone, his homepage is still there.

Je commence par 0xtob, à qui je dois la base du son dans mes homebrew. Je lui dois d'ailleurs toujours un rétro-portage de mon code pour les effets (vibrato, etc) dans sa nouvelle architecture... Le blog est mort. La page d'accueil lui a survécu. Le code aussi. J'aurais dû regarder de plus près à son moteur physique, peut-être ?


Squidi had the Grand project of describing 300 game mechanics. One a day, iirc. He went quite far away, around 160 mechanics, and even started implementing examples in HTML5. I think the archive.org is the only way to consult content he wrote.

Il n'y avait pas que des homebrew dans mes flux RSS, mais aussi les nouvelles idées très chouette de règles de jeu. Il s'était fixé l'objectif de 300 règles, il est arrivé au résultat très honorable de 160. Bien mieux que le catalogue des Jeux Vidéos Obsolètes.

Sverx doesn't post much anymore, but he's still into homebrewing. Mostly moved to SEGA mastersystem tools/libraries and posting code on github.

Les petits jeux de Sverx étaient bien agréables. Ses conseils de baroudeur des consoles Nintendo Précieux. Il est maintenant passé à une bibliothèque pour la Master System de SEGA. Github semble être suffisant par rapport à un blog puisqu'il n'y met plus qu'un bonjour par an.

J'adorais les mini-jeux de Mia. Lui a continué à blogger de temps en temps, et son blog est toujours actif. Comme de nombreux homebrewers' Mia est passé au jeux Androïd, mais malheureusement avec de "simples" jeux de cartes. Peut-être celà représente-t'il un vieux challenge à vaincre pour lui ?

Last but not least, I'd like to greet Mia and thank him for his inspiring little games on Nintendo DS. He switched to Androïd, like many other french homebrewers. It's a bit of a pity that he decided to make only plain card games. I know he used to rip nintendo graphics because he had no own characters for his games. Maybe that's still missing for him ? Maybe he doesn't know about Open Game Art ?

And then, there are those who haven't gave up. I'm impressed at how Smealum (previously releasing Aperture Science for DS and the first DS minecraft clone) makes progress towards a full understanding of the 3DS, and it looks like there is now a growing community of 3DS software homebrewers, reaching the state where a clone-of-moonshell is being crafted. So far, what I want to do fits the NDS alone, I haven't found any way to push homebrew to my own DS (I'm often lacking the game to exploit) nor did I started investigating what others have done / found on that newer hardware,  but maybe that would be the best way to quit that feeling of being a lomesone cowboy lost in the deserts of NDS homebrew...


Oh ... et pendant ce temps-là, Zalo nous sort quelques tutoriels 3DS et une reprise de Jumping Jack sur son blog ^_^

Monday, July 13, 2015

Le journal de Link : je prends le chateau d'assaut.

Cher journal, j'ai trouvé l'épée. Sa lame m'hypnotise presque... j'en ai la tête qui tourne. Je dois prendre le chateau d'assaut. Le sceau de Yuga est brisé, mais il grouille de ses gardes-grafitis. Même avec une fée à mes côtés, je ne vais pas m'en sortir en fonçant dans le tas. Ils sont trop nombreux. Je suis trop faible. L'autre, là, à l'entrée du premier étage me met K.O. en deux coups de sa masse d'arme tournoyante.

On m'avait raconté au bar lonlon que ce genre de lascar, ça ne vaut pas la peine d'essayer l'escrime avec eux. Ils ne comprennent que la manière forte ... la magie.

Je ne suis pas d'accord. Ok, ça fait plaisir d'avoir la moyen d'en assommer toute une mélée pour gagner le temps de les attaquer un à un. Mais il y a moyen. C'est une question de timing. Une flèche, un pas, une flèche, un pas puis j'enchaîne les coups d'épée juste au bon rythme et il est au sol avant d'avoir pu lancer sa boule une seule fois. Mon épée tournoyante peut les atteindre, même quand leur arme est braquée sur moi. Là aussi, c'est une question de précision. La fenêtre est étroite, mais elle existe. Je dois apprendre à la voir. À fondre dedans comme un rapace intrépide dans la brèche.

J'y mettrai le temps, mais j'aurai ma stratégie. Je taillerai mon chemin à coup d'épée jusqu'à ce taré de gribouilleur avant qu'il n'ait le temps de poser le regard sur la princesse.

Sunday, July 12, 2015

Systematic testing vs. guru meditation

I have a colleague at work who's the expert in buildbots and testbots. I'm very excited to know what he will think about the way I used overlayfs and fakechroot to emulate the install script of the self-upgrade system for the device we're launching. It is not my first try at testing systems -- I grew the habit of building test scripts for students' black-box programs for marking their assignments -- but it is clearly the first time I push it to the level where it is easier to know whether the program is correct than to rebuild it ^^"

J'ai passé les dernières semaines sur des systèmes de tests automatiques. Pour des programmes de mise à jour automatique et autres menus pour système embarqué. Ma première année en entreprise m'avait convaincu qu'il y avait un manque criant de tests automatiques dans mes programmes DS. Cet exercice-ci m'aura permis de trouver comment y remédier: je n'ai qu'à trancher correctement dans le code de telle sorte que les entrées/sorties puissent provenir du cas de test. Et peu importe que la DS n'ait pas beaucoup de ressources: les tests peuvent parfaitement s'exécuter sur une version du code compilée nativement pour linux et tourner là-dessus.

Less than a few weeks ago, I thought that unit testing and the like had no chance to be useful for my Nintedo DS programs, although it would clearly be welcome to avoid regression... But hey! Knock knock! We have 66MHz and 4MB. Do you really expect the emulator to run unit testing ?
But over those last week, I started slicing direct-video programs in layers so that all user interactions could be emulated by file I/O (possibly driven by the test program). That 'test' version still has the same state machine, but I can capture its behaviour and scrutinize it. Why couldn't I do the same with C++ code of libgeds / SEDS / AnimEDS / LEDS ? It's mostly free of any architecture-dependent instructions (at machine code level, I mean) as soon as you realize you can have those DS registers mapped anywhere you like through twisted headers.

Wait and see ...

Sunday, July 05, 2015

Design Stories by Juicy Beast

Lately, I've been reading through the posts relating the design of "Toto Temple" by Juicy Beast studios. I especially focused on "Designing a “playable” UI that secretly teaches how to play" and "evolution through iteration" posts, in which the author meets my own "no tuto" guideline.

In their game, going without a tutorial phase means that anyone can easily join the game (a 4-player catch-the-flag) without having to be taught the rules first. Because they're doing play-testing at conventions, it also means that people can play together without requiring a "game owner" to explain them how to play.


Ç'aurait pu être la couverture de la "gazette de Bilou 2015" si on était pas en pleine canicule. Je n'ai plus de google reader, mais mes contacts twitter m'apportent de temps en temps une chouette lecture malgré tout. Merci à l'équipe de Juicy Beast qui a pris le temps de quelques articles sur la conception et l'évolution de leur jeu "capture-de-drapeau" au thème sympathique, réalisé dans Unity tant bien que mal et qui rejoint mes propres tentatives de design sur l'organisation des menus.

Ici aussi, les actions du menu sont en réalités commandées par le personnage. Pas de curseur abstrait ou de cases à cocher. Mais les développeurs de Juicy Beast vont un cran plus loin en s'assurant que le joueur aura été confronté aux mécaniques principales de leur jeu avant de se lancer dans l'arène.

Coming this summer on OUYA, Xbox 360, WiiU, PS4 and Steam.
Another interesting similarity with my own games so far is that they dropped abstract menus-with-cursor in favour of a game interface where everything (selecting your level, teaming up, etc.) is manipulated with the game's own controls. Stickers on those screen will tell you to use X+<=> to hit the next/prev level buttons, for instance. Meanwhile, you can hop and dash just like what you'll do in-game.
 
PS: I've also read through the more "technical" posts on platforming. They were essentially working around oddities of the collision engine of Unity and detailing how the "raw", analogous input of the directional mushroom are converted into impulses through pre-processing rules such as "if the mushroom gets at rest while we're approaching a cliff, let's step on the breaks and avoid falling". ...
That sheds (yet) another light on those thousands of lines of code just to control the behaviour of Rayman (Origins).

Thanks for sharing, Alex. ^_^

Wednesday, July 01, 2015

Le journal de Link : des légendes et des ailes

Cher journal, je sais que la plupart des gens de Cocorico me hurlerait dessus s'ils savaient que j'ai toujours une petite fée sur moi. "Quoi! Tu l'enfermes dans un bocal !!" ... je t'épargne la suite. En fait les fées ne sont pas enfermées. La preuve: elles en sortent d'elle-même quand je tombe au combat, et mon flacon n'est pas brisé.
En fait, les fées aiment bien l'aventure, mais comme leurs ailes sont fragiles, elles n'osent pas se risquer seules. Elles aiment bien les girouettes, aussi ... surtout la variété que l'on trouve dans la montagne. Et c'est heureux parce que descendre vers la carrière de Rosso pour aller apporter son "remède" au type perdu dans la montagne en retournant dans le palais de l'est refaire le plein de fées, ç'aurait vite été fatiguant!
Heureusement que les "lynel", ces chevaux cracheurs de feux, sont des gros balourds incapables de me suivre si je passe en vitesse pour me planquer contre un mur ^_^... Non, celles dont il faut se méfier dans cet enfer, ce sont les chauves-souris! Elles sont sournoises, impossible à choper à l'arc, elles se faufilent entre vos coups d'épée puis viennent se poser sur votre tête pour vous bouffer un max de coeur. La prochaine fois que j'en croise, je sors mon abeille de sa bouteille et on va bien rigoler ! Non mais !!