Monday, November 30, 2009

With Great Powers ...

As I was reviving the idea of a full Bilou game, a few years ago, it became obvious that the "super-powers" we designed initially weren't very good gameplay-wise. The original game design from Bilou was that every defeated boss let you recover a "magic stone" that gives Bilou an extra ability that you can use at any time if you collected enough "magical bonuses". Some part of the level (usually containing 1UPs or similar bonuses) could only be explored on a second (or Nth) pass when you obtained more powers than the one you've got initially.
Les super-pouvoirs que Bilou reçoit en battant les boss étaient un des éléments déterminant du "game design" de Bilou au début du projet, en '94. Avec le recul, il ne reste pas grand-chose de la liste originale qui me paraisse toujours approprié. En particulier, l'idée qu'ils permettraient de revisiter le monde 1 pour y trouver des 1UP cachés en volant ou en nageant ne me séduit plus depuis que j'ai du faire la chasse aux electoons dans Rayman 1.

By that time (just before Rayman came out on the PSX), we though it was a brilliant and novel idea for our game. Now that I've played Rayman and DKC end-to-end, I know that revisiting levels without purpose (that is, just for powering up) is not exactly fun, and that doing it because you can't access the final boss otherwise is just frustrating, especially when you realise that it doesn't matter how well you played the first levels, you'll have to play them again.

Il y a quelques années, je m'attelais donc à "repenser" ces power-up sous un angle nouveau: les magic stones transforment des objets "ordinaires" en bonus qui activent un pouvoir particulier, plutôt que d'avoir une jauge de magie unique multi-usage. Ca me paraît une meilleure approche pour construire des niveaux intéressants. Par contre, parmi les nouveaux pouvoirs que j'entrevoyais ici -- essentiellements axés sur un changement de matière pour Bilou -- très peu on trouvé grâce aux yeux de mon frère. Comme j'ai également appris entretemps que c'était exactement le principe de "Within a Deep Forest", je sais que je devrai encore refaire une passe là-dessus.
I also wasn't very convinced by the "one kind of magic bonus to fuel them all" approach, because it doesn't allow nice level designs. Especially, if the player use all its magic points to fly around the level when he's not supposed to, he won't be able to swim that pool to move further. And if you have "respawning" magic bonuses, the best jumping puzzle might be spoiled by the flying power (or the shooting power, or anyone of those). The idea then came that the magic stone would reveal power-specific magical bonus, so that the level designer can decide what you can use when, but with a time limit that makes them more like the Starman in supermario than e.g. the fire flower.

A comment on pixelation made me start this alternate set of super-powers, where the material Bilou is made of is affected, making him light enough to walk clouds, hard enough to break stones or bouncy enough to do superjumps. My brother didn't enjoyed the idea too much, though, so this isn't the definitive list anyway.

Thursday, November 26, 2009

En attente de commentaires ...

I'd like to do a second pass on the pixel art of Bilou game. Here are a few references i collected.

Une scène du niveau "Chameleon Sting" de Mega Man X. Alors que j'ai tendance a avoir le même éclairage sur tous mes blocs de terre, les artistes de Capcom rompent la monotonie en changeant la quantité de lumière que les rocs reçoivent. Certains sont plus dans l'ombre, d'autres bien éclairés, etc.
A noter aussi qu'ils se sont simplifiés la vie pour le "roc de fond" en utilisant une couleur sombre et unie de laquelle ils font simplement ressortir quelques détails, et bien sûr avec un soin particulier apporté aux "bords" de cet environnement.
Enfin, la "machinerie dévoilée" joue le même rôle que les slugs juniors endormis dans Commander Keen: attirer l'attention du joueur afin qu'il ne cherche plus la répétition du reste des blocs.
Chameleon Sting's level in Megaman X wasn't really convincing for his trees, but it has an interesting approach for rocks. I tend to give all the rocks of a wall equal amount of lightning, but the artists here advantageously altered the "depth" of indivudal rock by varying their shading. One will also note single-color cave background that is compensated through higher level of detail at the edge. The unveiled machinery plays a role similar to the sleepy slug in Commander Keen : focus the player's attention on an usual part of the background and make him forget that the whole rest of the scenery is repetitive.

Tout autre genre, un morceau de "pekka-kana", que j'aurais presque tendance à utiliser comme contre-example. Trop flou, usage abusif des filtres, un arbre dont le tronc ressemble à un mur, etc. Pourtant, j'avais été assez séduit par les feuilles en blocs dans la jungle de Kirby Squeak Squad. On verra bien si mes "plate-formes feuillage" donnent de meilleur résultats, mais personnellement, j'aurais tendance à éviter. Ceci dit, ce sont des screenshots de la version 3, toujours en développement, donc pas forcément qqch qui sera conservé.
I once thought (after playing Squeak Squads) that applying a leaves texture on the shape of a tree could make it look like a tree while providing easier to use gameplay elements (regular platforms). Peka-Kana demonstrates how wrong i was. I take it as a counter-example.

Une approche simplifiée, pour un jeu d'arcade que je ne (re)connais pas: c'est le level design qui prime avec des "rampes" boisée et quelques troncs dans le décor pour faire bien. On cherche tout juste à donner un thème, pas vraiment à placer le joueur dans un environnement virtuel crédible. Le choix de couleurs est intéressant, ceci dit. Les "boules" répétées le long des "rampes" amènent de la variété, sans être très convaincantes.
In arcade games, you might end up with trees that are just "abstractly suggested" rather than actually represented. In this (unknown) game, they pushsed it to the extreme with ramps of green-and-wood texture (nice textures, actually) that exactly fit the needs of the gameplay. Everyone knows no tree behave like that, but you all know there aren't flame-throwing slugs around, don't you.

Et ici, la forêt dans Blork Carnage. Avec les arbres-palissades, le cushion-shading et les dégradés abusifs. Bref, tout - mais alors absolument tout - ce qu'il faut éviter. Ca ne vaut rien. Nada. Que dalle. Et je sais de quoi je parle: c'est moi qui l'ai "pixelisée" il y a 13 ans :P
Just to make it clear, this one is *not* reference material. It is the worst "woods" i've ever drawn in a freeware game dubbed 'Blork Carnage' some 13 years ago. A piece of nostagly to remind me "the errors that shouldn't be reproduced".

Tiens, ben voilà Keen, justement. Quand on parle du loup...
Pour de l'EGA, ça reste impressionnant, comme résultat. Je regrette un peu l'absence complète de vert, personnellement. Mais il y a quand-même le "désaturage" des couleurs quand on s'éloigne de l'avant-plan. Et un décor pareil, en parallaxe, ça serait difficile à gérer. Mais il faudrait que j'essaie de parvenir à quelque-chose de semblable juste pour l'exercice, tiens. Au moins une fois.
Noticed how Commander Keen artists managed to have trees de-saturating when they're far away ? okay, maybe it would have looked even better with something else than plain black, but that was EGA palette. Though such backdrop is a technical nightmare for parallax scrolling, i should try to do something alike at least once, for the sake of the exercice.

Autre ambiance, sur un mockup de Ben2theEdge pour une forêt sombre, presqu'en décomposition, où les racines vont servir de plate-formes. A noter à l'arrière plan un feuillage particulièrement réussi et particulièrement économe en couleurs. J'ai tendance à souhaiter une symétrie dans les détails en haut et en bas des zone de feuilles, mais en fait, c'est l'inverse que je devrais faire!
Sudden mood change, with a mockup drawn by Ben2theEdge. Dark woods, almost falling in pieces. Note that here, the "ramps" that fit the need of the gameplay can immediately be identified as giant roots. I also love how efficient the foliage of background trees is for a reduced set of colors. I tend to draw trees with an equal amount of details upwards and downwards. Ben proves here that this is not necessarily the way to go. I hope one day SEDS will be able to let me work on background like these.

Doremi Fantasy, plus pur style "chambre de *deline", avec le classique (presque stéréotypé) sol géométrique, des troncs bien verticaux et éloignés de sorte que l'on puisse sortir le grand jeu du parallaxe sur les différents plans de verdure.
Ca a beau être simpliste à l'extrème, je ne cesse de m'émerveiller du rapport effort/résultat que ce genre d'artiste parvient à obtenir.
Okay, definitely at the other side of the spectrum, Doremi Fantasy provides the stereotype of geometrical ground, fully vertical trunks and parallax-friendly layers of "green hills" that suggests you're somewhere between two layers of the Master Forest. I'm impressed by the effort/return ratio such artists achieve.

Le summum dans le genre est sans-doute atteint dans "Trip World" sur game boy. Rarement vu une forêt aussi bien rendue sur cette petite console. Le jeu étant exclusivement à scrolling horizontal, ils ont pu se permettre un feuillage sur une seule bande (mais qui s'assemble admirablement bien, je le reconnais).
And if you apply it to the monochrome display of the Gameboy, "Trip World" is likely the best you can get. I've rarely seen such a nice forest on that little beast.

Tout autre style: un projet en cours de St0ven, sur pixelation.
Si je ne suis pas terriblement fan de l'approche "sol monochrome", je dois admettre que St0ven maîtrise particulièrement bien le genre et, de par l'ouverture plus importante du reste du décor, s'en sert pour planter une ambiance plus opressante. pour le reste, la taille de l'image et le niveau de détail en fait presque une peinture. Ici, arbres et rochers sont hyper-réalistes. Aucune chance que je parvienne jamais à ce niveau, mais le choix des couleurs m'avait paru particulièrement intéressant.
In a very different style, here comes a mockup by st0ven (found on pixelation). I must confess i'm not a big fan of the "single-colour-ground" approach, again, but the way it is used here to improve the "oppressive" mood has something that definitely deserve respect. Every tree is unique and realist. I even expect something like a FlashBack gameplay. I doubt i could ever achieve that level of perfection at the scale of a videogame, but i especially loved the colours choice.

Pas vraiment dans la forêt, mais "green" quand-même : les Giana Sisters sur DS, premier monde. J'avais été agréablement surpris, au moment des "previews" du jeu par la variété amenée dans les rochers, jouant sur deux niveau de profondeur pour amener de la variété dans le décor. On remarquera aussi qu'ils ont optés pour un look "passerelles à peine en équilibre" plutôt que "masse de terre ferme", ce qui offre en fait bien plus de possibilités pour rompre la monotonie ...
The DS version of Great Giana Sisters brings in some interesting mix in level structure. While the original game was essentially made of "bricks world (and the game play haven't changed much), they gave the "non-playable ground" a very organic look by introducing holes of varying shapes.

Ambiance proche de "chaos engine" pour un mutant de AlexHW (aka. "Final Redemption").

A nice "Chaos Engine" look in this mockup by AlexHW. Not very comfortable with that technique of having the middle of the tree "plain dark", even if I admit it lets you build the tree the way you want with quite few tiles ... a technique vierbit mastered impressively.(previously on pixelation)


Dan Fessler, dans un remake hypothétique du (lamentable) jeu NES "Bible Adventures"... avec une utilisation intéressante de rochers presque "multi-couches" qui forme des plateformes plus pyramidales que rectangulaires. Dan opted for quite rocky ground, rather than just "dirt", which provides quite an interesting design of "stacking" rocks -- pyramidal platforms rather than just parallelipipeds, in some sort. First layers (near the top of the platform) are very close to each other and highly darkened, then they'll get more and more spaced as you take your distance (also, it's less and less "interesting" and shouldn't draw the attention too much in that area). You'll note that despite one would usually draw rocks with a grey tone, Dan opted for a reddish tone with yellow highlight and purple shades -- the usual choice for pixel artists who will reinforce gradients with a hue shift. Bunches of leaves are interleaved with more regular "falling grass" to form the border of the green platform. The "flat" area could still be improved, but it already gives a good look. Note that the same bunches of leaves will be reused for the trees, more or less. Note, too, that the foreground is mostly a "generic green-and-rocks" tileset: ony the huge tree on the second plane and the background define the area as a forest. Dan did a stunning job on that tree, using scarves to give it character and providing volume without falling in the usual "wooden snakes" approach. Maybe one could regret the over-angular look of the roots. I think they echo nicely the angular look of the rocks.



Et enfin, un mockup de Henk Nieborg, le maître incontesté de la discipline, pour la version DS (en cours de préparation) de Shantae. Diversité, Précision, Raffinnement. Il a également utilisé des plate-formes en roc surplombées de végétation basse, avec des teintes plus "classiques", mais s'offrant le luxe de rehausser de plusieurs groupes de fleurs et deux "niveaux" de végétation. Les "touffes de feuilles" font 16x16 ou 32x16 à vue de nez, le "pattern" sur les rochers un bon 64 pixels de large.
Nieborg rehausse son niveau d'éléments plus larges et non-jouable (colonnes et figure de pierre)

Wednesday, November 25, 2009

Grab me, shoot me.

Tout ça est parti d'une relecture des "notes de développement" que je prenais il y a maintenant 10 ans (eh oui) en préparant mon "Ultimate Game Maker". Si les approches que je voulais suivre sont complètement obsolètes, en revanche, j'avais bien creusé les "scénarios pièges" qui définissent généralement la limite entre un moteur de jeu "spécifique" et un moteur générique. En l'occurence, ici "Bilou attrape un ennemi assomé et s'en sert comme arme sur d'autres ennemis".

Coding in a hospital is definitely not an easy job, but there was at least one thing i managed to do during that "free" time when sleep didn't want to come : re-reading those design notes on the "Ultimate Game Maker" I wrote down 10 years ago, organising them, pin-pointing good and bad ideas. Despite virtually all the technical details now fall in the "BadIdeas" category, there were a collection of "gameplay scenarios" that i can reuse to ensure my current game engine is generic enough. The specific "use case" I further studied was the ability to grab an ennemy and use it as a weapon against other ennemies.

Du point de vue "mécanique", je joue sur la possibilité de définir des propriétés aux zones de collisions. Un appleman normal possède juste la propriété "stomp" qui permet à Bilou de l'étourdir en sautant dessus, une fois étourdi, il possède aussi "pick". Au moment où le joueur enfonce le bouton "poing", on ajoute une zone de collision à Bilou qui teste la présence de "picks". En réaction à ce genre de collision, l'état de Bilou aussi bien que celui de l'appleman sont modifiés. Le même genre de mécanisme avec une propriété "shot" est utilisée pour provoquer le passage de l'appelman de l'état "transporté" à l'état de projectile. Tout va bien.

First, I need to translate the scenario into states-collisions-properties elements of my current engine model. With the recently introduced per-collision-area properties, it goes quite well. The appleman doesn't receive f_pick collisions unless it is in the 'stunned' state, and Bilou doesn't test for f_pick collisions unless the player triggers a punch. Similarly, the 'carried' appleman can receive f_shot collisions that turn it into a weapon agaisnt other ennemies. This was tricky in the UGM model because the class of a Gob (bonus, character, ennemy, shot, object ...) stricly defined what collisions could occur. The new model is much more tolerant and it's only your mind that decide the appleman is now a ennemy and then a weapon. Of course, the controller used in "carried" state aligns position and speed of the appleman to those of Bilou.


Sauf que ... comment au juste vais-je "ramasser" l'appleman ? Je veux dire, le mouvement des mains de Bilou et celui de l'appleman doivent être synchronisés pour que ça marche. C'est le genre de problème qui n'apparaît pas dans Blues Brothers avec une seule étape d'animation et un seul objet à ramasser (la caisse), mais je veux profiter de l'absence de bras & jambes de Bilou pour améliorer les animations, même si j'ai 15 ans de retard sur Rayman pour l'implémentation ^^"

The tricky questions surprisingly came from rendering the actions. How do I define the intermediate frames of Bilou grabbing and shooting the appleman ? It wasn't much of an issue in 8-bit (chip'n'dale) or 16-bit (Blues Brothers) paltformers, because you had at most one frame and one object to carry (the crates). But I'd like to take advantage of the 'limbless' nature of Bilou to improve animation (despite I'm 15 years late compared to Rayman :P)

Plusieurs lignes de conduites sont apparues par rapport à cette réflexion:

  • les sprites d'un Gob composé doivent permettre de définir l'emplacement des zones de collisions, ainsi f_pick est toujours associé à la main droite de Bilou (tout au long de son déplacement) et f_shot à son pied droit.
  • l'ancrage d'un Gob (appleman) à un autre (Bilou) doit aussi pouvoir être défini par rapport à un sprite précis. Ainsi, quand Bilou abaisse sa main pour shooter dans l'appleman, l'appleman suit le mouvement
  • deux "commandes" permettront de définir des animations plus fluides : "goto" et "auto", qui permettent à un sprite d'utiliser une paire des variables du Gob comme vitesse pour atteindre un point de référence donné.
It resulted that in such 'composite GOBs', the individual sprites (hands, feets, body) should be allowed to govern the position of (some) test areas, and serve as anchor points to other 'carried' GOBs. Moreover, we'll love to have "automated" animation statements such as "go to (x,y) using GOB variables v4 and v5 as horizontal and vertical speeds", rather than giving explicit position for every sprite at every frame.

I could have alternatively opted for multi-gobs (that is, Bilou *shoots* a hand that come back at him), but that would have terribly complicated further interactions.

ps: i gave the official google "readmore" feature a second try on this post and i'll drop it: the RSS still provide the full post, making "read more" not that useful. Plus it will doom my backup strategy. Only "ranting" posts will have "read more" stuff.
pps : yeah, that means i'll really have to work on that "modular animation" add-on for SEDS.

Monday, November 23, 2009

Thursday, November 19, 2009

November Checkpoint

I see coming another Square of Time where all i'll be able to do is small step improvements. Working on the "remaining 10%" and so on. So here's the "achievements" that happened lately.

  • Dynamic Sprite Priorities is implemented and tested.
  • fixed a nasty memory error (bad_alloc thrown) that occured on level loading in runme
  • provided a "action-step-report" system that keeps "logs" unprinted until something "goes wrong", in which case it can dump the whole history of the failed action.
  • fixed the "push-tiles-across-layer" option of the level editor.
  • "prev / next" buttons in the level editor now skip spritesheets (and thus only show tiles)
  • Odd-bonuses obviously had a dormant bug. fixed clearblock().
Bion, j'ai plein de chose à faire dans la maison, donc le tir d'étoiles, assomer les pommes pour les porter "façon koopa shell" et tout ça, ce sera pour plus tard. Je me contente de "petits pas". Voici les quelques dernières choses sur lesquelles je me suis attelé.

Sunday, November 15, 2009

Opérée


Fameuse épreuve passée pour notre petite *deline. Elle subissait une intervention à coeur ouvert destinée à corriger sa tétralogie de Fallot aux cliniques St-Luc. Après 4 heures d'angoisse, nous l'avons accompagnée tout au long de sa récupération et nous sommes rentrés le 11. Tout se passe pour le mieux. Son "p'tit coeur tout réparé" lui a valu une mention "très bien" auprès des docteurs. Maintenant, il lui faut se réhabituer à notre rythme de vie ...

Merci à vous tous qui nous avez soutenus le long de ce chemin.

Il nous reste à veiller encore un peu plus sur sa santé, puisque pour les 6 semaines à venir, elle sera particulièrement démunies contre les maladies de l'hiver, et une infection risquerait d'entrainer des complications.

I'm glad to announce you that the heart surgery planned on *deline happened last week, and it happened very well. She's now back at home with her (exhausted) parents to slowly resume the "normal" live (you know, the one where you sleep during the night ;)