Tuesday, February 01, 2011

The revenge of ZooL

Pour tous ceux qui n'ont pas eu Windows sur leur premier ordinateur (et qui n'ont pas eu de console SEGA non plus), ZooL est sans doute l'expérience la plus proche d'un Sonic que l'on puisse imaginer... enfin, presque. Et comme mon frère le faisait remarquer, c'est Zool qui a servi de cas d'étude pour un livre qui introduit des concepts tels que les plate-formes tombantes ou mobiles, l'attaque en vrille, en glissade, les monstres smarts ou l'escalade de murs. La plupart de tout celà est présenté dans le chapitre 6 : "Empower strikes back".

Ever thought about fighting in the middle of candies, music instruments or drills ? that's precisely the setup of Zool : Ninja from the Nth dimension. Zool was a stunning, hard and exciting game that kept me busy for weeks when I was a teenager. The closest PC and Amiga guys could get to a Sonic experience. It's coming back to the front of the scene with that Game maker companion book by Jacob et al. I especially dug chapter 6 about attack moves and interaction with moving and crumbling platforms.

Si les éléments présentés m'intéresse, je dois dire que j'ai été un peu déçu par l'approche. Il faudra que je retrouve une copie de Zool pour Amiga pour vérifier ce qui faisait partie des limitations du jeu d'origine et ce qui a été simplifié pour ce livre.

Personnellement, quand je lis que Zool va pouvoir assommer les monstres qui le touchent pendant qu'il tombe, peu importe qu'il les touche du pied ou de la tête ... ou que "celà signifie qu'un ennemi peut être tué lors d'une glissade même s'il touche Zool dans le dos. Mettons ça sur les super-pouvoir d'un ninja trans-dimensionnel", je dois dire que je ne suis pas convaincu.

Of course, unlike the typical target reader for that book, I'm not that interested (sic) in which buttons or dialog boxes I should use in order to activate response to monster collisions, but rather by the backstory, the logic, and some nitty-gritty details that can make things "professionnally right". To that extent, i must admit that I have been disappointed.

The revival of Zool presented in the book apparently solely relies on a pixel-perfect collision detection and trivial boolean flags (attack?=true) to do all the decisions. It is not possible, for instance, to insist on the fact that zool's foot should be in contact with a monster so that the monster can be stomped. If a bee enters Zool's face while he's falling, the bee will be "stomped" as well. Similarly, the author says that the fact that a monster could die on contact of Zool's back while he's sliding could be considered as a "cool ability of a inter-dimensional ninja". That's just a bug, as far as I'm concerned.

Dans mon propre "game engine", ce genre de comportement (la présence de "points faibles" et de "zones qui donnent un coup") était clairement un objectif majeur par rapport à tout ce que j'ai fait ou utilisé précédemment. Ca marche, ça ne coute pas bien lourd (même s'il faudra que je mette à jour l'éditeur de sprite pour que ce soit plus convivial) Après avoir tenté de reconstruire mentalement les interactions en place dans la réalisation des plate-forme à partir des manipulations recommandées, j'ai été aussi un peu déçu.

Et les auteurs ne s'en cachent pas: "il y aura un léger décalage entre le déplacement de Zool et celui des plate-formes. C'est ça ou prendre le risque que les plate-forme mobiles puissent envoyer Zool dans un mur. Donc oui, ils reconstruisent Zool, mais d'une manière qui est entachée par un bon nombre de "limitations d'amateurs" que je croyais avoir disparu depuis une 15aine d'années.

I unfortunately stumbled upon similar "amateurism" when checking the moving / crumbling platforms. Yes, they have something that approaches the desired effect, but either with a _lag_ between Zool and the platform's move, or with a risk that platforms could throw Zool within a wall. Looks like I'll have to hunt for more reference if I want to find an appropriate solution to those platforms problems.

I note, however, that one key technical aspect that supports the examples is that the game maker engine is object-based rather than tile-based. By making a movable platform a subclass of the "obj_ledge", Zool can naturally walk on it, wherever it moves, fall or stay still. That's something that won't be so easy to achieve with my approach.

6 comments:

cyborgjeff said...

Effectivement assez étrange si leur projet de bouquin autour de Zool n'est pas fidèle à Zool lui même... Il est claire cependant (de mémoire) que Zool était assez bordelique dans son GamePlay..

On sautait dans tous les sens... et avec un peu de bol on tuait les monstres... parfois on s'en prennait pour soi (vive les zabeilles!)... mais je crois bien que si tu te faisais attaquer dans le dos, mais que tu faisais un mouvement d'attaque... le gateau s'en prennait quand même dans le flan =)

Pour les plate-forme, elles étaient loin d'être aussi pratique que sur Sonic... Il était préférable de sauter dans tous les sens :)

Zool, un beau concept,... mais franchement injouable et énervant... malheureusement !

A moins que sur AmigaCD32??

PypeBros said...

je me souviens avoir joué un peu à la version CD32 à la maxithèque, mais ce n'était pas flagrant que ça marche mieux ...

PypeBros said...

Je viens de refaire un test avec la version amiga (UAE étant plutôt pénible sous linux): je suis convaincu que se faire toucher par une abeille en tombant ne permettait pas de la tuer d'office. Pour ce qui est de la glissade, c'est plus difficile à dire: aucun ennemi ne va suffisament vite pour toucher Zool dans le dos en cas de glissade dans le monde 1.

Et non, je ne tiens pas plus que ça à essayer d'atteindre le monde 2 :P

PypeBros said...

par contre, le "lag" entre Zool et les plate-formes existe aussi dans la version originale: dès que Zool est sur une plate-forme, on dirait que celle-ci "tremble" horizontalement en-dessous de lui.

PypeBros said...

https://www.youtube.com/watch?v=zkZhTt3KSjI permettrait d'expliquer le coup du dos-qui-tue. L'amiga avait (comme le commodore) la possibilité de détecter la collision entre le sprite du personnage et le plan sur lequel on "blitte" les ennemis, ce qui permet une détection des collision au pixel près. L'inconvénient, c'est qu'il est assez délicat de déterminer plus précisément si on a touché un monstre du pied ou non. Tout au plus on pourra remettre à zéro cette détection quand on arrive à la ceinture de notre ninja pour "ignorer" tous les coups donnés au-dessus, ou l'inverse.

PypeBros said...

oh. Une interview ...