Saturday, January 11, 2025

Dreamland checkpoint

"I can roughly work 1 maybe 2 days on Bilou every time the kids have holidays" was my answer to my step-brother when he asked whether I was still working on my game. So where are we (compared to 2024) ? 

Let's check some boxes, to see that. Note how I realised that I shouldn't try to include that level with 3D books : that would require new tools development and we're now past that kind of change.

Some of the box have been shifted from cyan to green: that means they're still things that will require more significant work to be done, but they're not *mandatory* for a first playable version of the level they're featured in.

And I just read a note I made to my today's self: 

There'd be some fixing on the old maps, possibly some keys or switches by NPCs, but that shouldn't be as ambitious as The Big Green Zone Relooking I've been talking about 3 years ago. The aim would rather to make the game more fun to play, and clearly not to get rid of any magic door.

The geyser thing is almost a "big relooking" thing... "push and flood the level" clearly was. It shouldn't stop me from trying the level.

Cosmic Boll by Yoritoshi

There was a twitter account I held for later while leaving the network: it had a yellow ball avatar, and I remembered a few nice exchanges with somebody doing a platformer featuring a yellow ball, but I couldn't find any track of those exchanges. I ran out of keywords idea to grep my tweet.js and blog.xml ... I asked my contacts for help, but I still wouldn't find it.

cosmicboll animated screenshot showing waterfall pushing you down
But eventually, in the "more tweets" online document I've been crafting, I found back the picture I wanted, where cosmicboll (and not bowl or ball) encounters a waterfall and the water pushes it (him?) down, increasing gravity. Something I don't have yet for my own waterfall and that definitely looks and feel fun.

The game is not from that person with the yellow ball avatar but from the Spanish-speaking developer Yoritoshi, who has been working on the game since at least 2018.

The small snippet I have here may give you the feeling that there is some Sonic legacy in that title, and likely Yoritoshi's videos will convince you even further, since some of the sound effects featured are raw samples from the megadrive titles.

Petit résumé pour mes lecteurs francophones: La balle jaune dans le gif animé ci-dessus est le personnage principal du jeu "cosmic boll" de Yoritoshi, dont j'ai suivi de loin le développement au fil des tweets. On aurait presque pu appeler le jeu cosmic Brawl, vu l'importance que les combos et la variété des attaques dans ce qui aurait pu aussi non passer pour un Sonic-like. Le jeu est téléchargeable en version Windows sur le site itch.io du dévelopeur et je n'y ai pas encore joué.

Avant les premiers tweets présentant ce jeu-là, l'auteur travaillait sur des fangames Sonic, bien intégré dans la communauté, étendant le travail d'un certain "LakeFeperd" et participant à la convention SAGE régulièrement.

It is even stronger when you get a look at the level editor screenshots that Yoritoshi published: there are ramps, there are loops and all ... There are some explanation in the earliest tweet using the #cosmicboll tag:

Began to add enemy characters of my own to replace the dummy from LakeFeperd's engine with, but I hope CF2.5 doesn't pull any nonsense on me when I add hitboxes to their attacks. (Jan 20, 2018)

LakeFeperd's own video often mentions SAGE event, and if we dig deeper than the video about "Spark the Jester", we see that they are about Sonic fan games... So yeah, people gather to show each other their Sonic fan games (and likely fanart and play sonic games and plenty of blue things), there are Sonic-targetted game engines for many different game construction kits, and Yoritoshi was already doing that in 2012.

But Cosmic Boll is not just a Sonic clone. Actually, the gameplay does not feel that much like Sonic. The amount of attacks you have at your disposal to dispatch foes is just impressive. If you believed "Kirby Fighter mode" has a large range of attack, Cosmic likely features 2 or 3 times as much moves. The amount of enemies per wave and the hitpoints per enemy is clearly designed to make the fights a key moment of the game and feel overpowered. And then there are "orbs" you can collect which will e.g let you turn into a fireball when you dash or shoot firewaves when you punch.

And there apparently also are special gadgets that allows you to make surprizing things like sizing down ennemies, althought I have to admit I haven't understood everything about that.

Saturday, January 04, 2025

Et bash!

Et bang! Petite scéance de gamedev avec mon fiston ce soir, pendant que nos dames nous ont laissé la maison pour nous tous seuls ... je venais de terminer d'ajuster le déplacement de Bangbash, il avait envie de pouvoir *interagir* avec Bangbash. J'avais déjà des animations esquissées, le temps de produire l'animation, d'ajuster les coordonnées des boîtes de collisions et de transférer tout ça... il a un peu d'expérience en Scratch et je venais de lui proposer de jeter un oeil à mon agenda/journal/42 pour voir un peu ce qu'il comprenait du GobScript (pas si simple) et de lui expliquer un peu à quoi tout ça servait...

There. Now bangbash is bashing too ... That was a "requirement" from my son, and tonight was dad-and-son evening, so after suggesting he could read the 'gobscript' entries of my notebook (bujo?), after cleaning up animations with AnimEDS and my Nintendo DS (and telling him that, yes, those are programs I wrote myself too, and no, that Nintendo DS is not modified in any way, only the game cartridge it uses is special), came the time to put that together on the PC.

Bon, il est resté plutôt sagement sur la chaise à côté de moi tandis que j'ajoutais un état $BASH ici, puis une zone de collision pour que l'état assomme Bilou, puis que je rallonge l'animation "assommé" le temps que Bangbash fasse demi-tour (histoire d'éviter le pilonnage systématique), etc. jusqu'à réactiver un dumblador dans le niveau démo et qu'on puisse se débarasser de bangbash en lui lançant le taille-crayon.

Il me restera à rendre bangbash solide et faire en sorte qu'il blesse Bilou pendant son saut dans les 2 sens et puis finaliser les graphismes de l'attaque et de Bilou assommé...

(petit moment de fierté au passage quand mon fiston réalise que les outils qui me permettent d'éditer les animations sur la nintendo DS, c'est aussi moi qui les ai programmés ^^)

He has been pretty attentive and quiet while we were going through the steps of 'animation plays, but nothing happens' and 'will you stop bashing, now ?' ... and of course he then asked for the ability to dispatch bangbash with a blador, which wasn't too tricky to do either. Bed time, son: making sure we cannot simply zoom in front of Bangbash will be for another evening ;)

PicoDriller fait des vagues.

A côté de ses productions principales (lunark, castaway), Johan Vinet nous a aussi proposé un petit fangame sur pico8 d'un jeu où il faut creuser plus vite que son ombre, sorte de croisement entre Tetris et Boulder Dash.

Je dit "petit", mais la qualité du gameplay et de l'habillage est tout à fait remarquable. C'eut été un homebrew sur NintendoDS, vous pouvez être certains que je serais resté scotché dessus!

Mais ce qui m'a frappé au point de le reprendre dans ma récapitulation de 2023, c'est la vague géante de l'écran titre. Monochrome, avec au plus un creux à l'écran, elle est tout à fait dans les contraintes techniques de la SNES: on coderait alors les vagues en reprogrammant les "window" à grand coup de HDMA, et ça débloquerait le principal frein à une adaptation de SchoolRush sur la reine des 16 bit ... 

PicoDriller is a fun little Pico8 game, somehow a crossing over Tetris and Boulder Dash, and it would definitely deserve a complete review of its art and gameplay mechanics. And unfortunately, I'm not going to do that today. Sorry Johan (he's one of the Pico Driller author, and I've been playing some of his other games). No, today, I'll just discuss the title screen of PicoDriller and its very convincing big waves.  

Alors autant vous dire qu'à plusieurs reprises au cours de 2024, je me suis posé la question "mais comment savoir quelles valeurs donner, ligne par ligne, à Wstart et Wend pour qu'ils définissent la zone sous une sinusoïde ? et comment coder ça efficacement ? Et est-ce que ça tiendrait dans le budget CPU d'une frame SNES ?"

Et pour bien commencer 2025, je me suis dit "eh, mais si on partait du sommet de la vague et qu'on suivait la pente pour élargir la zone noire masquant l'image ?  Après tout, la dérivée de sinus, c'est le cosinus et le cosinus, c'est le sinus déphasé d'un quart de tour !

The core reason is School Rush, of course, and how the Super NES couldn't render enough sprites on a single scanline to depict the raising ink in the game. But if you use demomaker tricks with the 'window' feature of the 16-bit queen (using it as 2 horizontal lines whose position and size can be updated on every scanline), you might get a wave moving as smoothly as that in PicoDriller intro, and that might be stunning enough to excuse the lack of additional colors. 

The idea isn't new: it has been teasing me for the whole 2024 year. So with the winter holidays coming again I noted that "well, I could just start with the top-of-sine, at a given position, and widen it according to the slope of the sine at that point, right ?" and then taking my noteboox and starting to scribble trigonometric functions, taking into account that slope of sine is cos, that cos at some point is sine later on the curve and things alike until I thought I had enough to write down a little loop that *should* give all the items needed to render the sine with "just" a pre-computed look up table for cos values.

I had the surprise to see game developer Jayenkai (Blockman and countless other titles) objecting that it might still be too much maths for the SNES hardware, and pointing me towards an online BASIC interpreter with fair documentation of their graphics commands ... He proposed an alternative where quadratic curves are used to emulate sine, and to be honest, the difference isn't that strong unless you're interested by the slope of your sine when it crosses the "horizon line".

Jayenkai (platdude, blockman et tant d'autres) trouvait que ça faisait trop de calculs pour une snes et m'a aiguillé vers un basic-en-ligne pour m'illustrer une approximation quadratique très 6502 ... 

C'était juste ce qu'il me fallait pour tester rapidement le bidule, donc j'ai recodé la génération de la table de lookup (grandement simplifiée par la présence de cos() et arcsin() dans le basic) puis la 'simple' accélération/décélaration de la descente par accumulation, un accès à la lookup table par ligne

Bin je dois dire que ça donne plutôt bien ^_^

But that evaluator (gotojse) was a breath of fresh air, allowing me to toy around and eventually build up a way to render what *I* had in mind as well, proving the concept. Okay, I don't have it animated like in pico driller, but that might come later on ^_^ 

Bon, ce qui fait tout le sel de l'effet de pico driller, c'est avant tout la variation d'amplitude appliquée sur la sinusoïde, qui va jusqu'à en inverser la polarité. Le fait d'avoir doublé l'effet avec une "ombre" est très stylé, mais incompatible avec le hardware SNES que j'envisage de piloter. 

Il me semble aussi que le "niveau 0" monte et descend légèrement au fil du temps suivant une autre sinusoïde. Ce qui serait stylé, ce serait qu'il suive en réalité une sinusoïde de très basse fréquence (moins de 45° par écran), mais ça nécessiterait pas mal de calculs en plus ... pas sûr que je puisse me le permettre ici ...

 


Monday, December 30, 2024

Et un Bangbash qui marche ! ...

Enfin ... "marcher", c'est beaucoup dire. Mais il bouge, il fait demi-tour en bout de plate-forme le tout dans son environnement naturel. Par contre, la quasi-totalité des animations de transition (atterrir, arriver au sommet de la courbe de saut, etc) ne fonctionnent pas (pour des raisons dont le niveau de compréhension est encore variable), mais bon sang, on l'attendait depuis tellement longtemps que je ne vais pas faire la fine bouche avec un "ouais, mais non, je vais attendre qu'il soit fini avant de poster quelque-chose", hein ;)

Finally! Finally I've got a working bangbash in a Bilou Level! it's not yet fully functional, but there it is, hoping ahead and back. I still needs care for the transition animations but at least it unlocks some levels designed almost 18 years ago. Think about it: bangbash has been waiting to get alive for almost as long as the pendat did!

Bon, par contre, il faudra vraiment que je fasse une révision de Inspector Widget, pour 1) montrer les testpoints dans la zone radar, 2) faire en sorte que le *hot spot* soit toujours dans le radar (et pas le centre du personnage, parce que pour bangbash et pendat, ça ne sert strictement à rien.

I'm a bit ashamed at how long it took me to understand why I couldn't make it turn back as intended. It should really have been as easy as pressing START and checking InspectorWidget. Especially since I still have to add collisions, Bilou detection and bashing animations. If I want Bangbash to have a dedicated move when Bilou is on the top of a pencil, I should better polish my tools ^^".

Là, j'ai dû faire mon débugging en combinant ddd et gimp ... en allant gratter dans les fonctions internes de libgeds. On va dire que côté dever-friendly, il y a mieux ^^". Aucun risque de faire de l'ombre à gbstudio dans ces conditions...

edit: avec un peu plus de travail sur les animations, la position des images par rapport à la "boîte-position" du personnage, ça donne enfin (4 janvier) ce que voulais que ça donne. Bon, évidemment, ça ne satisfait pas J.L.N qui demande "il attaque déjà ? " et "on peut lui envoyer des taille-crayons ?" ... pas encore, mon p'tit loup ... pas encore ...

Tuesday, December 17, 2024

Chasm pour Super NES ?

Si vous êtes attentifs, vous aurez peut-être remarqué depuis le temps le lien "Lint :: retrobrew" sur la colonne de droite de ce blog. Le site vers lequel il pointe est au point mort depuis une éternité 15 ans. Mais n'allez pas croire que son auteur se soit désintéressé du développement SNES pour autant ... il était juste actif ailleurs.

En fait, en Août dernier, il nous postait un entassement de scène de jeu vidéo, d'un bouquin sur la programmation du 65c816 (son très précieux "Programming the 65816" de Eyes & Litchy) et une version imprimée du document/tutoriel sur les techniques pour implémenter un platformer de Higher Order Fun de Rodrigo Monteiro qui m'avait également été bien utile dans un passé pas si lointain.

Le jeu en question, c'est Chasm, et si j'en ai suivi le développement depuis un moment, Lint_ n'est pas en reste: en avril 2018, il repostait le lien vers le kickstarter en ajoutant qu'il espérait une rétro-adaptation pour Super Nintendo ...

Chasm is coming. One of most wanted game I wanna play. Can't Wait ! I would love to see a #snes demake. -- Lint_

That was the reaction of a former blogger pal: Lint_ when he learnt that the Chasm game was finally out. Personnally, I was still hanging on tigsource and pixelation forums when slym started working on the game back in 2012. In launch interviews, game author James Petruzzi indicated that he wanted player to remember the SNES (or maybe PS1) metroïdvania games while playing Chasm, so I guess people like lint who were doing hobby SNES development by then were hoping to see the game retro-fitted to the old hardware.

 On dirait bien qu'il a fini d'attendre que le "demake" soit fait et qu'il a décidé de prendre les choses en main ;) Chasm étant en principe un jeu avec des niveaux générés à la demande et une navigation non-linéaire inspirée des metroïdvania, la tâche est des plus ambitieuse, mais Lint_ nous rassure: 

Not sure I would implement the procedural level generation if I was about to do a demake of that game. ;) -- Lint_

Parce que son projet de demake, il nous l'a bel et bien démarré. Pendant l'été, il nous a régulièrement posté des décors du jeu convertis pour Super Nintendo en mode "4 couleurs"... avec des changements de couleurs réguliers par ligne à grand coups de HDMA. Sacré coup de chapeau pour une performance qui n'aurait pas démérité sur la démoscène Amiga si on y avait accepté les productions Super NES !

Well, this year Lint had stopped waiting and start working on the demake himself. First we've had background sceneries rendered on SNES hardware, using horizontal retrace to change the 4-color palette on-the-fly and get that stunning colour count, while keeping the 16-color planes for the game proper. Actually, he had stopped waiting since 2022, re-creating key parts of the levels in Tiled, and importing converted tilesets on the SNES to make a running demo ... which seem to rather please the original authors.

A ceux qui seraient tenté d'en rire, je recommande de se replonger d'abord dans les Rétro Game Explained: réduire le nombre de couleurs pour l'arrière plan, ce sera déterminant pour pouvoir dégager assez de parallaxe pour le reste du jeu.

En fait, il avait déjà attaqué son projet en octobre 2022, recréant des morceaux de niveaux à la main (exit la génération aléatoire, donc) dans l'éditeur Tiled pour ensuite les convertir pour son projet Super NES. Je n'ai pas encore vu le personnage bouger par-devant tout ça, mais j'imagine que ça ne va pas tarder ;-) Et ça tourne déjà sacrément bien !

Quant à ses intentions pour la suite, quand on lui demande, Lint_ précise que c'est surtout pour travailler sur son moteur de jeu mais que "qui sait, un jour, peut-être", même si à l'heure actuelle, ce n'est pas réaliste d'envisager un portage complet du jeu. Le moteur n'est pas prévu pour un autre jeu, juste pour le défi de faire un moteur et que c'est Chasm qui l'a inspiré (et alimenté en graphismes somptueux :)

Does that mean there will soon be a SNES cartridge allowing to play a Chasm adventure in hand-drawn levels (as opposed to the procedurally generated original game) ? well, this is not in Lint's plans. When asked, he says that his primary goal is to make a game engine on SNES that would be able to run something like Chasm, and thus why not testing it with chasm contents and see what the demake would look like ... The repository for that project is private, but there's a sibling public repository with library and tools that benefits from the demake effort, from time to time.

Si le travail effectué reste actuellement dans un repo privé, l'une ou l'autre fonctionnalités percolent de temps à autre vers le repo public "cc65-sfclib" de notre antihero national ^_^

 

Wednesday, December 11, 2024

Des nouvelles de Crazy Brix

February 9th, Case Portman, author of the platformer game "Flynn, son of Crimson" was asking

The first ever game you developed, "finished" and publicly released. Show the world (don't be shy!).

In my case, that was Crazy Brix. More a technical demo than a real game. A breakout clone with raytraced graphics and 6-tracks. His was "Blappy Fird", a clone where a pipe must avoid columns of birds. But Brix eventually turned into a 100K compo entry that got 1st place at Inscene, so I count it as "publicly released". I got a few tokens of appreciation, but also a fun feedback and congratulations from Joke

C'est parti d'une question/chaîne comme il en apparaît régulièrement sur twitter: l'auteur de "Flynn, son of Crimson" avait lancé "montrez votre premier jeu grand-public" avec quelques captures d'écran de son blappy Fird. J'ai suivi en postant à mon tour les quelques images de Crazy Brix qui illustrent les pages que mon frangin lui a consacré dans son blog musical.

Parmi les réaction, les félicitations de Joke:

c'est impressionnant tout ça dans le contexte 1997/langage machine/pas d'Internet... vous êtes des génies ! -- Joke, Biloumaster

Mais il relève aussi au passage le côté un peu discutable du décor de fond, image zoomée à l'appui. Alors je pars à la fouille aux archives et je retrouve un répertoire BRiX avec des fichiers "NEXT.PCX", "EGYPT.PCX", etc. voilà donc à quoi le jeu aurait pu ressembler sans l'intervention du raytracing ... et je dois dire avec le recul que le décor présenté à la inscene est peut-être discutable, mais au moins on arrive à voir sa balle et sa raquette. On ne pouvait pas en dire autant de l'original.

And digging for archives of Brix, I found old pictures from pre-raytracing era ... initial "all flat" bricks, mock up showing tentacle bobs attacking and sized-up bat suggesting an arkanoïd clone for the second title.

There was also a second tileset intended for "egypt theme" that never got used. 

Je n'ai pas souvenir que le thème égyptien ait jamais été utilisé, pas même pour des tests. Il faut dire que ça n'a jamais vraiment emballé mon frère au niveau musical ... 

Je reposte un coup tout ça sur bluesky, et je tombe de ma chaise en découvrant que pix3l connait mon jeu ... il y a joué, aux alentours de 2010. Que le jeu est maintenant repris dans la machine à voyager internet dans le temps: archive.org !

That happened a few days after I created my BSKY account, so I posted pictures there too and to my surprise, I got someone saying

I played this one back then 😁 My first developed game was a collection of arcade games, like pong, breakout and tetris, but nothing special tho... :] Still need maintenance nowdays... -- pix3l on bluesky
It was some years ago, 2010 if I remember correctly... I think it was this one, or just another arkanoid clone, but I'm quite sure it was this one, since it looks pretty familiar :/ Its also on Internet archive, and published in 1999. Whats make strange to you? ó.ó
I've played a lot of games myself, also the more obscure ones, and sometimes I've reviewed them on my blog. Maybe this one has been came out in some search, I don't remember now :]

So there it is. Not only Crazy Brix was a publicly released game, it is now archived, playable online (although sound will be crappy until you figure out how to increase cpu rate). Oh, and it is used by dosbox folks to improve their code, apparently. And while I was in the mood for posting old BRiX pictures, I finally found the name of the game that inspired me to make a breakout clone in first place: the MS-Dos title "powball" (which I thought to be "powerball", and thus couldn't find anymore). It's a game released in 1997 I most likely discovered through the PC-Team sharewares CD. It featured the original idea of mixing a breakout and a shoot-em-up. Oh, I know: you were already seeing some shoot-em-up elements in Arkanoïd, but did you see your paddle morph into a spaceship ? could you purchase upgrades with collectibles you got from breaking bricks ? I don't think so.

Et en creusant après ces images, je finis par tomber sur un nom de casse-brique que je cherche depuis la création de wikipédia ... mais que je cherchais sous le mauvais titre. C'était le mélange parfait entre shoot-em-up et casse-brique, avec des graphismes raytracing lui aussi, mais de bien meilleure facture, des trucs à ramasser dans tous les sens pour pouvoir s'acheter des améliorations à son vaisseau et donc augmenter ses chances dans les champs d'astéroïdes ... que notre balle ne peut malheureusement pas casser. J'ai nommé Powball que j'ai cherché sous le nom "powerball", ce qui ne donnait évidemment rien ^^" . Oh, et bien entendu, powball est aussi dans le "dosbox archive", mais on ne va pas se mentir: c'est totalement injouable.

un tout premier écran-titre pour Brix, qui n'a manifestement pas plus, mais où le logo de PPP Team est bien reconnaissable
Un autre candidat d'écran-titre produit à partir d'une "heightmap" qui m'aura finalement surtout servi d'écran de boot pour Windows 98 :-P