Saturday, March 31, 2012

Mechanic*s*

Okay, there may be something I misread in KirbyKid's definition of primary mechanics. The plural form. Nothing prevents the existence of a group of mechanics that together are primary -- that is, essential to the game. Clearly, MOVE/WALK is a primary mechanic in almost every game that feature an avatar. It's so common, that it can be thought as granted by default, and arguably, few people will complain if it's ommitted from an analysis.

But some sub-genre feature a set of additional ex-aequo mechanics -- JUMP + SHOOT in Mega Man series, for instance -- where removing any of the component makes almost any part of the game impossible to play. This is likely to be true as well in Rayman ...

below is the full discussion, for archive purpose.


That will take me more thoughts to analyze Commander Keen and The Fox again ...


I'd have posted this on "the post on primary mechanic", but I fail to find it, if any. Playing Rayman 1 and Shantae recently opened my eyes on the fact that not all platformers use "JUMP" as the primary mechanic, and that it's actually quite the signature of a Mario game.

On the two games mentioned above, the attack move seems to be the primary mechanic, but I find it hard to apply it to games such as Commander Keen. It looks like some designers just decided to balance the various mechanics they offer to the player so that there isn't *one* action that is the core of the gameplay. In the case of Keen, if I was to pick one keyword to describe the game, that would be "explore", but that's definitely not a mechanic.

I'm curious to know how you consider this example, if you happen to have played the Commander Keen series.

/Pype
March 13, 2012 | Unregistered CommenterPypeBros
If a game's primary mechanic isn't JUMP or a mechanic that manipulates/fights against gravity, then it probably isn't a platformer. It's probably an action game that uses some platforming mechaincs/challenges/elements.

I think I've played Rayman 1 on GBA and I've played the new Shauntae on DSiware. I know that Shauntae has a lot of combat and some puzzles which puts the whole game into the action-adventure category.

I haven't played commander keen, but the youtube video makes it look like it has plenty of exploring, collecting, maybe some puzzle solving, combat, and some platforming. So it wouldn't be a platformer.

I hope that helps. Genres are tricky.

March 13, 2012 | Registered CommenterRichard Terrell (KirbyKid)

Thanks for your reply, Richard. That's one pretty short way to define "platforming genre" as soon as you have a solid definition of "primary mechanics", I must admit. That wouldn't have been my out-of-the-box definition, but it makes sense (and I'm far from being an authority on the subject :)

Thinking more about shantae, it would indeed be an action game with some platforming sequences (where ennemies may be altogether missing and JUMP becomes the button that *must*not*fail*.

It's pretty hard to do the same with the first Rayman. PUNCH may require JUMP to modulate it (a la megaman) and compensate the blind spots, and there is a mixture of platforming and action elements more than a real alternance. As if mechanics were here like abilities of an RPG characters, where some balance is ultimately required. So JUMP isn't what's put as the character-defining move, few power-up / secondary mechanics modulate the way Rayman jumps, except the FLOAT (?) mechanic, using his haircopter.

If I may refer to this picture on my recent post, would you say that the amount of interactions triggered by one mechanic is irrelevant (or not as relevant as I think) in defining it the primary or secondary mechanic ?

Do you think that makes sense to consider that, in some game, the boundary between primary and secondary mechanic may be fuzzy to the point that we have two ex-aequo primary mechanics (as JUMP/PUNCH would be for rayman) ? Or do you rather think I'm looking things at a sub-optimal angle that blurs *my* vision ?

(I'll dig some posts of you about the megaman series ... That may already provide some answers to all these questions).
March 16, 2012 | Unregistered CommenterPypeBros
You're getting at some of the trickiest parts of talking about video game genre. I was planning to write a post about genre but that's a long way off at this point. So I'll discuss the issue here.

1) A Primary Function is what type of action you do most in the game to win or beat the game. Often enough, the thing you do most in a game is a combination of various actions. This is why the genre of "action" is pretty wide spread. If a game has some platforming, some shooting, and some racing, we generally say that the primary function is action (like an action movie).

2) Primary Mechanics are mechanics that are required to beat the game or beat a level (if you're talking about a specific level or group of levels). Talking about primary mechanics is helpful to focus in on the "skill floor" or the set of mechanics and their required use to simply win.

3) Secondary mechanics are any mechanics that are not primary and therefore optional.

So while some examples are clear like Mario and Shauntae, other's are not as clear like Raymand. The truth is, there is no exact way to categorize a genre. In some ways the amount of interactions using primary mechanics. Sometimes we pick genre based on theme and feel rather than function. Sometimes there's a lot of fuzzy overlap. Genres are categories that are supposed to help us understand what the game is, but some games are simply a bunch of elements.

Looking at the required challenges of a game to determine the genre is a great way to go. But this method doesn't cover everything. Between the skill floor and the skill ceiling could be many different types of gameplay experiences that stress different mechanics.

To sum up, while we can accurately label what is a primary and secondary, mechanic, picking the genre of a game can be much more complicated.

March 16, 2012 | Registered CommenterRichard Terrell (KirbyKid)

Thanks. I'll meditate that.
March 20, 2012 | Unregistered CommenterPypeBros

Meditation output: it sounds like I had so far inferred that the "primary" mechanic was by definition a singleton -- likely not being a native speaker have misled me there.

You clearly have mentioned "primary mechanic*s*", so it means your definition is happy with the fact that a small set of mechanics are equally "core-important", right ?

I suppose you thus consider that both JUMP and SHOOT are primary mechanics of Mega Man (oh, and WALK as well, I guess, although it's so natural that it might belong to something like disappeared mechanics, which the player is barely aware of, as they are ubiquitous)

March 21, 2012 | Unregistered CommenterPypeBros
To answer your question, Yes. But since a primary mechanic is defined as a mechanic that is mandatory for advancements/progression through a game or a particular level/challenge, the primary mechanics can be 100% of a game's mechanics. It's not necessarily a small set.

Yes, in MegaMan JUMP and SHOOT and MOVE are all primary because you must do these things in order to beat any level.

In Ikaruga MOVE and SWITCH (polarity) are primary, but surprisingly SHOOT is secondary. You don't have to shoot a single bullet to beat the game.

Good job meditating.

Monday, March 26, 2012

Compound monsters ... todo.

Some more digging and I've been able to pin-point the problem with Level Editor. Fixing it will be more complicate, though. I used information such as page number and frame number from the .cmd file to identify the picture to be used to represent the animation ... and thus the state.

Problem is that there's no such simple things when it comes to compound anim. Pages hold some limbs picture, but not the whole monster. AnimEDS creates thumbnails to display animations on the "thumbpage" ... the simplest way would be to record those thumbnails in the .spr file so that other programs (including LevelEditor) may display it more easily.

Pipemare DS ... in the pipeline.

@Dec 15, 2011 02:24 AM
PypeBros:

Just a thought ... I've released a first version of my Level editor for Nintendo DS. Would you like me to convert some Pipemare tiles & sprite sheets to the expected format so that we can propose Pipemare DS to the grown-up RSD fans ?
G. Andrew Stone:

Yes that would be really cool!

Well, it looks like I had overlooked Andrew's reply. With the level editor crashing on school1.cmd, I need to revise it anyway, so that might be a nice time to provide the sprites/tiles and go through a step-by-step how-to on generation of simple animation / behaviours definition.

Saturday, March 24, 2012

Compound Gob: release

D'aussi loin que remonte ce blog, le 24 mars, c'est le "release day". Ca a commencé en 2007 avec la première version d'Apple Rumble, puis une version de runme capable de jouer des fichier .xm envoyés par WiFi en 2008. 2009 a vu le premier d'une belle série d'outils destinés à repomper le contenu des jeux Game-Maker.

J'ai un peu triché en 2010 avec tout juste le gameplay d'Apple Assault ... et franchement loupé le coche en 2011, avec pourtant une première version de l'éditeur d'animations pas bien loin.

Ouais ... Bon ... il est largement temps que je me rattrape, quoi.



Voilà donc la première version de mon moteur de jeu qui soit capable d'animer des sprites construits dans AnimEDS. Avec tous les outils en prime, dans une belle release source ^_^.

essayez de le voir en action
24th of March ... release day ... go on sourceforge and grab the sources of the latest svn tree, which is now capable of rendering animations created in AnimEDS. Small step for humanity, but milestone for Bilou.

Maintenant, il me reste à reprendre AnimEDS et faire en sorte de pouvoir y définir les zones de collisions et les déplacement du personnage (en plus de son animation à proprement parler.

Thursday, March 22, 2012

Funky Inside

Rompant avec les niveaux prévus par mon frère, je décide en 2001 de placer la confrontation entre Bilou et Big Caterpillar au sommet d'un arbre creux monstrueusement grand... et je fais totalement l'impasse sur ce qui se passe à l'intérieur de l'arbre. Puis, en pleine phase Cave-Story, je décide que la "clé du boss" ne sera pas une bête clé mais plutôt une interaction avec des NPC, notamment les Funky Funghi fraîchement relookés. L'occasion aussi d'un niveau tout en hauteur où je peux caser des bascules/tremplins et autres effets catapultants bien marrants (enfin, j'espère).


In Bilou's Adventure as my Brother invented it, there was no such thing as a hollow tree level. Still, when I converted the yet-to-be-written game into a (web)comic in 2001, I figured out that a huge, hollow tree would be a nice place for Big Caterpillar to have his lair.

Later on, as I started to feel the interest that an organic (or even story-based) key may have and decided that 'plain keys' had no real place in the green zone, that hollow tree seemed to be a nice place to have a crowd of Funky Funghi that would make the boss a bit harder to reach...


I had no real luck on my hunt for reference material until that Rayman Origins screenshot me in the head with the naked truth: nobody said that your hollow tree had to be made of brown wood only. Actually, it quite makes sense that it would be invaded by moss, vines and other greeny stuff, especially if it's the resting place of the funghi ;)


Je m'étais mis en chasse de quelques souvenirs de jeux vidéos avec des arbres creux ... Mickey Magical Quest sur SNES ... Prehistorik 2 et ... ah bin non. Pas les rangers dur risque, finalement. Tout ça sans véritable coup de coeur: rien de vraiment utile. Par contre, j'avais passé déjà un certain temps à décortiquer le graphisme de l'arbre ronfleur de Rayman Origins (eh oui, encore lui ;) qui donne des pistes assez intéressantes. L'une d'entre elles ? Eh, qui a dit qu'un arbre creux ne pouvait pas être plein de mousse (et donc vert-sombre plutôt que tout brun) ? ... réponse : personne.

Sunday, March 18, 2012

Dumblador coming slowly

Jusqu'à 81% d'interruption de service chez voo ce week-end, en ce qui me concerne ... on ne peut pas dire que ça aide le télétravail, ni le développement sur Bilou, mais j'ai quand-même pu progresser un rien sur dumblador, premier personnage à utiliser l'animation composite dans le jeu.
On est encore loin du compte, celà dit: il est invisible, pour l'instant.

Oh well, dumblador is now present on the level. Immobile and Invisible, but present. TODO:

  • [done]make sure console output goes on the bottom screen when playing
  • [done] restore InspectorWidget's output (it's done in AppleAssault, afaik).
  • focus on the dumblador gob rather than on Bilou to figure out what's going on
  • [done] Make dumblador interactive
  • [done] make dumblador appear!


It looks like no oam has been set up (or even allocated) by the system on CompoundGob initialization. Needs further investigation ...

Apple Assault: walkthrough video



My brother has started shooting some GBA gameplay videos with his semi-pro camera. So why not reuse that "studio" to shoot a decent Apple Assault gameplay video as well ? Better late than never, I guess.

Mieux vaut tard que jamais: voici une vidéo du jeu Apple Assault développé en 2010 et revu ce mois de Janvier.

Download version 1.5 "Berry Bat Things" and version 1.4. You still have 60 days to vote for your preferred version.

Tuesday, March 13, 2012

guruMediationDump()

I love it when my wish have been granted even before I'm aware of the wish. In this case, devkitpro team has revamped the way exceptions are handled in libnds "r32". The large "wizardry" part of the guru mediation screen, that dumps registers and all has been extracted in a guruMeditationDump() library function, and the default handler is a 2-lines function that definitely locks the DS once the dump has occured.

Ah, bin au moins, je ne me fatiguerai pas trop à retrouver comment-j'avais-modifié-guru-meditation-pour-mon-usage-personnel: l'équipe de devkitpro m'a mâché la besogne en plaçant tout ce qui était utile dans une fonction et tout ce que je ne voulais plus (ou presque) dans une autre ^_^. Je vais pouvoir reprendre mes tests sur la school zone très prochainement (dès que je n'ai plus les yeux qui piquent et "OIUY" imprimé sur mon front à la fin de la journée, quoi :P)

Instead, I used in "r21" to define a die() function that allows me to perform recovery such as leaving to moonshell or inspecting memory. So all I should need is to redefine my own 2-lines function and use setExceptionHandler() rather than defaultExceptionHandler(). Let's see whether that helps me figuring out why the school zone is so freaky.


edit: it looks like using scanKeys() in die() is not such a good idea. With the r32, it relies on some working communication between arm7 and arm9, which afaik requires the Fifo (and thus the interrupts) to work. If for some reason the crash comes from an interrupt handler, you'll find yourself unable to see keys changes. Polling the following register could help:


//! Key input register.
/*! On the ARM9, the hinge "button," the touch status, and the
X and Y buttons cannot be accessed directly.
*/
#define REG_KEYINPUT (*(vuint16*)0x04000130)

and checking the value of REG_IE and REG_IF could explain the situation as well.

Saturday, March 10, 2012

Primary Mechanics

Sauter n'est pas seulement un bouton d'action dans Super Mario, c'est ce que Kirby Kid appelle la "fonction première" (primary mechanic): c'est ainsi qu'il se débarrasse des ennemis, mais aussi qu'il obtient des bonus (bloc-question), transforme son environnement pour aller plus loin et découvre des salles-bonus. Bref, tout dans Mario est axé autour du saut, si bien que même lorsqu'il se prend une boule de feu dans les moustaches, ça reste quand-même la gravité qui l'achève.

When Kirby Kid names Mario's jump the "primary mechanic", it quite makes sense. Think a little bit at Super Mario Bros. gameplay and you'll be amazed at how many thing you do by jumping: stomping ennemies, grab bonuses and power-up, open path (by brick-smashing or vines-reveal ?-blocks). In later releases, even more sophisticated switches (P-switches, for instance) require a jump.

D'une manière surprenante, c'est loin d'être le cas dans tous les jeux de plate-formes. Oui, Rayman saute, et doit dans pas mal de situations sauter judicieusement pour éviter les obstacles. Mais la fonction première, ici, c'est le coup de poing téléscopique. C'est lui qui élimine les ennemis, ouvre l'accès en pulvérisant les rochers ou en mettant en mouvement les boules à pic.

What's more surprising is to realise that not all platformers use JUMP as the primary mechanic. That wouldn't be surprising for a run-and-gun game, but that's not even the case for games that would have filed under the generic platformer category as Rayman 1 or Shantae. There isn't that much you can do by jumping in Rayman. Throwing your punch away, on the other hand (^_^), keeps the baddies away, unlock path and set spiky balls to move. Of course, freeing the electoons involve punching the cage, not just touching it or pressing 'UP' on the D-PAD. And the most interactive element (the bouncing plum) in the game is completely punch-controlled.

Une prise à rebrancher dans les caves de Skops ? c'est encore d'un coup de poing bien placé que Rayman arrange ça. Clairement, il serait peu judicieux pour moi de reprendre un coup de poing téléscopique comme super-pouvoir pour Bilou, même si c'était le cas dans la version de 1996: c'est le "signature move" de Rayman, et celà ôterait à Bilou toute possibilité d'identité propre auprès des joueurs qui connaissent déjà le héros d'Ubisoft.

Et c'est loin d'être un cas isolé: Shantae, elle aussi, a un comportement "guerrier-platforme" où le bouton "frapper" est celui qui a la priorité, et ce de manière peut-être encore plus flagrante.
Que ce soit pour ouvrir les coffres, briser les jarres, déclencher les mécanismes et résoudres les énigmes, rien ne sert de bondir, il faut fouetter à point.

Assez curieusement, il semble même que certains jeux n'ont tout simplement pas de "primary mechanic". J'aurais bien du mal à en proposer un pour Commander Keen, par exemple. Les ennemis y sont généralement éliminés à coup de pistolaser, mais les interrupteurs utilisent une commande dédiée. La transformation du niveau passe presqu'intégralement par ces interrupteurs: Keen ne casse (presque) rien avec son pogo ni avec ses lasers, au point que quand les développeurs décident d'inverser la tendance, le joueur peut fort bien y perdre son latin (oui, oui, je parle des 4 fusibles à exploser dans l'épisode 5).

Now, it looks like some platformers I've played through my childhood did not even bother to have a 'primary' mechanic. Commander keen may shoot, jump and use his pogo stick, but none of this affects the game further than clearing jumps or disabling baddies. To progress, you need keys, and to activate switches, you use a dedicated look-up direction arrow. That's the only way you alter your environment to solve "puzzles". Stomping on things just don't help in any way. Neither do shooting on them (wise, since amno are limited). That's true to the point that when level designers decide to break the rule and *do* use one of the player's direct action to alter the level, the player is puzzled at best, and may need a FAQ lookup.


Titus the Fox is a bit harder to consider. Is the game's primary mechanic "carry", or doesn't it have any ? Granted, you carry things to use them as amno against foes. Granted, by not throwing things, you may use them and climb later on to access hidden areas. To fly through the sky, the Fox needs to grab and throw the magic carpet, but there's no such thing as a "throw target" that would release bonuses, nor objects whose state is changed from obstacle to platform by throwing anything on them. We can clearly say "it looks like Mario can't do anything without jumping". Can we say the same about Titus ? I don't think so, although I might be wrong.

Et dans Titus the Fox, la situation est encore un peu plus étrange. Le jeu possède bien un mot-clé: transporter, et à l'instar des Rangers du Risque, c'est en lançant des objets que le joueur se sort des situations à risque -- un élément que Titus met à profit en ne distribuant les munitions avec une extrème parcimonie ... et en forçant le joueur à prendre des risques dans le transport de certains objets pour grimper ou sauter, lui interdisant alors de lancer quoi que ce soit. Pourtant, je n'y vois pas cette richesse d'interaction avec l'univers du jeu qui me fait dire que le coup de poing de Rayman est "mécanique première" par rapport au saut ... sauf que ... allez, oui: c'est en s'abaissant pour prendre des objets que Titus/Moktar peut aussi se faufiler dans les passages secrets. Ca reste faible comparé aux blocs-questions, briques et autres carapaces de koopas, si vous voulez mon avis.

perfect, Walt !

I've spent hours on DeviantArt, looking for wooden giant stuff as reference for drawing the school zone ... and by simply picking a nice Disney fairy tales for *deline, my fairy has actually located the perfect reference: "three blind musketeer mice"

Wooden area - although mostly made of barrels, desaturated wooden floor compared to the walls, distant wall in shades of greyish blue, and irregular, round-shaped termination that offer stronger stability.

Ok, if you don't mind, I'll translate and exploit that later, as *deline has stopped sleeping and is now messing everything up in the room.

Tuesday, March 06, 2012

School !?

Merged runme uploaded, a new "master command file" written and beamed to the DS ... 1 hour ago, I had good hope I'd be able to take a first picture of the School Zone displayed live on my DS screen ... Well, that was 1 hour ago. The "school1.cmd" file triggers hardware exceptions both in runme and in the level editor. Something must be really screwed up, and unfortunately, I had delayed the revival of my guru meditation methods on the "new" devkit I use. So ... I think it's just time for an ice cream ... I'll meditate those hex digits another day.

Eh bien !? La school zone effraierait-elle ma DS ? Je pensais avoir réuni les éléments nécessaires pour faire un p'tit test rapidos ... et non. Instruction non valide dans LEDS et quelque-chose qui ressemble à un stack overflow dans runme dès que j'envoie mon nouveau fichier .cmd ... Comme c'est un peu tard pour commencer à chercher le fin mot de l'histoire, je vous invite à vous rabattre sur flickr si vous voulez quand-même une petite pre-view ...

Sunday, March 04, 2012

fusion!

Well, I owe sepcot a drink for his tutorial on "how to merge a Svn branch back in the trunk". Oh, sure, I could have dug the official documentation and find out by myself... in a few weeks. It's now achieved, and afaik, AppleAssault still works. Why is it of any relevance ? because runme is sticked on the trunk and that runme with the new engine means I'm able to prototype new monsters, new levels and such ... something the school zone will definitely appreciate ^_^

Grand merci à sepcot pour son tuto. Mes déviations "moteur de collisions" (newcollide) et "moteur d'animation" (companim) sont maintenant intégrées sur le "tronc" de développement, là où se trouve également runme, qui intègre transfers wifi, lancement des éditeurs et petit moteur de jeu pour le prototypage rapide pendant le temps de midi. On va pouvoir attaquer la school zone plus sérieusement ^_^ A commencer par un dumblador qui marche ...