Beside the current "moving ink" target, there are a number of things that don't (or no longer) satisfy me in the current School Zone prototype:[todo] One can land on a stunned blador, but can't walk on him.[todo] 1/3-2/3 for the hero position on
... [More]
screen gives more room to anticipate, which is great when running, but a center position is nice when you have monsters all around you. Using the (R) shoulder to "look ahead" (direction-dependent) should be investigated.[todo] the "chalk" gob is crying for being polished, both art and behaviour.[todo] when thrown in pencils, dumblador should stop slightly above "the ground".Ça comme à faire un peu trop de choses qui ont été testées mais qui n'ont pas vu leur potentiel pleinement réalisé et qui réduise la qualité du prototype de la SchoolZone au lieu de l'augmenter. On voit que je ne fais plus assez souvent de démos auprès de mes collègues ^^". [Less]
|
Quand on crée un jeu basé sur l'exploration libre, les va-et-viens entre différents lieux sont plutôt inévitable: personne n'aura le réflexe de se dire "ah! je sais: je vais amener le balais à Mamie Youpie" s'il n'a pas rencontrer Mamie Youpie
... [More]
auparavant. Il faudra donc y retourner. Ça ne fait pas de tort qu'il soit possible à quelqu'un qui connaît bien le jeu d'optimiser ses déplacements, mais cela veut surtout dire qu'il est primordial que le terrain qui est re-parcouru soit suffisamment riche pour que le joueur n'ait pas la sensation d'être obligé de répéter les même actions encore et encore.The core gameplay of a zelda game imho sits in sword fights. You may have well-tuned many parts of the gameplay, if travelling the overworld cannot provide challenge and room for self-expression, the whole game will fall flat. This is because hunting for treasures, secrets and fulfilling sidequests on NPC request do involve a lot of overworld navigation... and if you strip out all those elements to focus on dugneons, the game turns into some mechanical demonstration of skill that lacks self-involvement and that loses much of the genre's appeal.Sword fights involve some navigation with the DPAD and use of the ATTACK button at the right time. Compared to the original LoZ (Legend of Zelda, NES) Z:LA's sword slash covers almost three tiles, making many monsters vulnerable to a dominant strategy: approach them one tile below or one tile sideway to slash them without danger. But to get that succesful, you'll have to plan your navigation and use the level elements to trick monsters and trap them. Z:LA's world map features many places with enough alternate paths to make those trap possible, but optional and preferably not too obvious.On est encore dans le domaine du "gameplay émergent", je trouve, quand les concepteurs de Link's Awakening nous construisent une plaine pointillée de rocs isolés et de trous à contourner. On retrouve moins ce côté dans Z:LTTP (Link to the Past), ce qui signifie aussi moins de liberté, moins d'options pour trouver le moyen de passer le long de chez Mamie-Magie en contournant les créatures électrifiées.Pour comprendre comment celà peut avoir tant d'importance, il faut regarder en détails les nuances du gameplay. Ici, la plupart des adversaires passent dans un mode plus aggressif lorsqu'ils se retrouvent alignés avec le joueur. Parce que la plupart des monstres demanderont deux coups d'épée mais peuvent être éliminés en un coup tournoyant, il devient stratégiquement intéressant de s'exposer pour pouvoir placer ce coup. L'angle sous lequel se fait l'approche peut aussi désavantager le joueur en le plaçant dans une passe d'arme sans fin.The nuance of Zelda sword fights is exacerbated in encounters with guards who also hold a sword. When facing you, they hold their blade such that a usual slash will be deflected and merely slow them down. Unless you move out of your "dominant strategy", you'll be stuck in a deadlock where you have to repell the same guard again and again without inflicting any damage.A nice alternative is the charged SPIN attack. Not only it is more powerful, but it will allow you to exploit their vulnerable spots before they can turn back and face you again. This is further modulated by the level design: the lack of pathfinding algorithm can be used to your advantage to trap ennemies in corners while you navigate past them.Surprisingly, this does not work that well in Z:LTTP. First because you face many ennemies that are merely hurt by the SPIN attack. They're not really repelled either and the risk of being too close to them is real. Moreover, other guards nearby are alerted by your SPIN attack, so you'll end up with a tighter fight. Last, keeping your blade charged significantly slow you down while moving. The price to pay for using a SPIN attack becomes much higher, the time window you have for an optimal SPIN is squeezed. It is no longer a mere matter of strategy and anticipation: it requires timing skills, careful observation of the surrounding and knowledge of the hitpoints each variant of the soldiers have to avoid mistakes. Avec pas mal d'ennemis qui sont à peine blessés par l'attaque tournoyante et qui restent à nous courir après, ce genre de stratégie n'est pas vraiment gagnante dans Z:LTTP. Le boomerang ou autre technique similaire pour assomer les ennemis et les vaincres sans péril pendant qu'ils sont immobilisés se révèle bien plus efficace et généralement préférable pour son niveau de vie quand ils sont en groupe. Avec la façon dont les bottes (de pégase ou à l'épée) attirent l'attention de ces gardes, on aurait généralement bien tort d'essayer de faire de l'épate... à moins justement qu'il y ait l'un ou l'autre buisson pour les canaliser, préparer son attaque et couper d'un coup garde et buisson.Altogether, Z:LTTP "recommends" that you use your boomerang to freeze soldiers so that you can safely slash them while they're stunned. Even when you'll have bow (limited amno), hookshot (limited angles), fire rod (critically limited amno), you'll stick with the boomerang that offers the best chance of success, but diminishes the feeling of being "the Hero of Courage", avoids any chance to replenish your life meter and makes encounters repetitive and possibly boring. In that regards, the infinite amno of Z:LBW (Link Between Worlds, 3DS) and the ability to use 3 different weapons without navigating through the inventory revisited overworld in a way that you're invited to use diverse ways to dispatch ennemies. You can still go for the safe "boomerang/sword" approach, but if you find that repetitive, the game offers you plenty of alternatives. The overworld map hasn't changed from Z:LTTP as far as fights encounters are concerned, but the fact many locations are tunnel-shaped rather than open space with obstacles is now of lesser impact. The core gameplay has opened beyond sword fights to give more room to guess-what-weapon-works-best. This becomes obvious when you note that rods, bow and hookshot all allow a form of approach/align while charged that was only available to the sword and that 360 degree moves (thanks to the circle pad) will let you extend the conditions where an arrow may be successful.Et les îles peu convaincantes de Phantom Hourglass, dans tout ça ? Avec des buissons à travers lesquels le joueur passe sans les trancher, exit les embuscades. Les ennemis qui sortent du sol avec une animation telle qu'il est possible de les semer avant même qu'ils n'entre en action, mais qu'il n'est pas possible de choisir une trajectoire sûre ou osée selon son humeur ont rendu les parcours sur la terre ferme linéaires. Et comme un simple clic fait bondir Link vers sa cible pour lui asséner un coup direct, quelque soit leur position respectives, le dernier élément qui rendait le parcours du territoire intéressant est lui aussi enterré d'un coup de stylet. Les encerclements par les ennemis y sont donc légion, malheureusement manquant d'aggressivité pour être réellement inquiétants.I noted some years ago the lack of thrill when exploring island of Z:PH (Phantom Hourglass, DS) and the tasteless train sequence of Z:ST (Spirit Tracks). I can now assert that this is due to the fact the use of the core gameplay elements (sword fights) has almost disappeared from those "overworlds". In Z:PH, you no longer have to navigate to fight monsters: they'll come to face you and conveniently pause at attack distance before they tease you with their blades. And for most of them, the time they take to spawn with their perfect animation let you run past them, turning into mostly harmless guys. With stylus controls, Z:PH also had large range for arrows and hookshot, but it is so immediate and responsive that melee fights just turn into a brainless whack-a-rat session, with all the planing and tactical aspects removed while they are truly what allows encounters to remain interesting when you're visiting some place for the second time. [Less]
|
It's a tiny and modest commit to my source code, but with last Sunday's revision, I open up a new animation approach in my game engine: ROM-to-VRAM streaming. For instance, I can have Bilou's head (when idle) replaced by some animated ink wavelet
... [More]
without requiring additional room in video memory: at every animation step, the proper data block is blitted to VRAM during the blanking period. That's totally useless in that way, but applied to inkjet, it could turn a 12K footprint into 4K, at the cost of having all the inkjets waving synchronously. If integrated to AnimEDS (e.g. automatically opting for a I_STREAM instruction instead of I_SPRNO), it could also significantly extend the range of animations for Bilou and make him use less than 1K for his head ... just like Donkey Kong only used a few slots in VRAM in DKC. [Less]
|
Rien de bien impressionnant à montrer, mais le système d'animation des blocs de l'encre (entre autres) vient d'être revu pour éviter une copie supplémentaire de la "page" de graphisme sur laquelle l'animation se trouve. Pas grand-chose mais c'était
... [More]
un point de passage obligé pour pouvoir faire pareil vers un élémént situé dans la mémoire utilisée par les sprites.No fancy screenshot yet, but I've got rid of an extra copy of animations in the the block-animation engine. Something I wanted to cleanup long ago but that now becomes mandatory to apply the same kind of animation to sprites ... which will ultimately allow ink moving up and down. Once again, my cybook proved very useful to dig in that dusty part of the game engine. [Less]
|
Quelques notes sur l'encre-qui-monte que je numérise avant de passer à l'implémentation. L'idée étant d'utiliser soit un polygone soit la fonction "fenêtre/cadre de vue" pour la partie noire ("Master Ink" dans mes notes") et des sprites pour la
... [More]
partie animée (les "wavelets").Si je veux avoir quelque-chose à proposer pour la NeoCompo de l'été, il est temps que je m'y remette, n'en déplaise à Gomez et son fez. Donc:permettre au contenu de la mémoire vidéo des sprites de recevoir des étapes d'animations successives à un seul emplacement (par copie à chaque étape) pour une synchronisation parfaite des ondelettes;ajuster CopyCoords pour que MasterInk ne suive la caméra qu'horizontalement et que les wavelets ne suive MasterInk que verticalement.Mettre en place la machine d'état avec ces éléments-làFaut-il une "caste" spécifique pour les vaguelettes (pour réduire le coût des collisions) ? [Less]
|
Z:LBW (Link Between Worlds, 3DS) étant terminé, ma fille a réclamé à nouveau Z:LA (Link's Awakening, GameBoy). L'occasion pour moi de me donner un défi assez inhabituel pour moi et inspiré de mon analyse de la difficulté de Mario World: terminer le
... [More]
jeu en obtenant le moins d'objets possibles (y compris sans la "master sword" et sans le boomerang capable de transformer les anti-fées en zentilles fées). De quoi redonner un peu de saveur aux donjons 7 et 8, et de me rendre compte que l'Aigle déboule de la gauche quand je me tiens à droite de la tour et vice-versa. Après ça, j'aurai probablement fait le tour des expériences de jeu possible. Celà dit, un bon livre, ça se relit avec plaisir au bout de quelques années.When a game is story-driven, why would you replay it ? As surprising as it could sound, and despite Z:LA (link's Awakening) is the most scripted Zelda episode ever, it's also the video game I re-played the most. Just like I could read again (and again) a good book, knowing the sequence of elements in Z:LA doesn't prevent me to play it again. Partly because text-reading is nicely balanced with the action. Compared to previous episodes, this purely-guided content was a unique introduction: the original Legend of Zelda had most its overworld open from the start and dungeons could be entered in no specific order. Z:LA, which item you need for which place.Z:LA, c'est peut-être le premier zelda où l'ordre des donjons est totalement imposé. En fait, pour pouvoir s'approcher d'un donjon, il faut systématiquement au moins avoir obtenu l'objet du donjon suivant, et les interactions avec les PNJs vont régulièrement imposer d'avoir vaincu un boss pour continuer à avancer.Z:LTTP (link to the past, SNES) sits somewhere in-between: early dungeons in the Light World must be completed in a specific order, but once you grabbed the hookshot, you can swap dungeons labeled "3" and "4", as well as "5" and "6" can be swapped too. So having all the items and (almost) all the dungeons available thanks to the rent-an-item approach in Z:LBW (Link Between Worlds, 3DS) is more of a "back to the roots" of the series than an absurd gameplay deconstruction. It also means Z:LBW is designed to be played several times. Your first pass in Lorule will mostly be a matter of hazard: you'll enter one of the dungeons fairly blindly and possibly find the hidden item it holds. That (defensive) item will affect how you'll experience the next dungeons: better shield, improved sword or stronger mail ? Chances are that on your next pass, you'll try to optimize that and maybe challenge yourself with a harder dungeon with fewer hitpoints for a higher reward (having the mirror shield as your first Lorule item, for instance).Only first 3 dungeon give you explorer "keys" Même dans Z:LTTP (link to the past, SNES), où les donjons du monde des ténèbres ont été numérotés de 1 à 7, l'un ou l'autre peut être attaqué avec de l'avance, et parfois même fini dans le désordre. Chose remarquable, deux des derniers donjons sont accessibles malgré le fait qu'il manquera à Link un objet indispensable pour terminer le donjon en question. Z:LBW est en quelque sortes un retour aux sources: une fois le monde des ténèbres atteint, l'ordre pour attaquer la plupart des donjons est laissé au choix du joueur. Si lors du premier passage, le résultat sera forcément aléatoire et peut-être décevant, celà offre en revanche l'opportunité d'une grande variété de jeu, car si tous les objets "aggressifs" peuvent être loués à tout moment, les objets défensifs, eux, sont cachés dans les donjons, et il se pourrait bien que vous sortiez du donjons sans avoir trouvé le bouclier-si-brillant-qu'on-se-voit-dedans ou la cotte-de-maille-qui-m'aille. Il me manquait d'ailleurs deux minerais de mes deux premiers donjons.And when you'll consider -- just like I've done last week with Z:LA -- that you would try to speed-run the game and see whether you have the skills to face Ganon with no magic bottle and only your regular (unimproved) master sword and your godfather's shield, remember: the game can also be played in "hard" mode once beaten. Any single ennemy will now cost you two hearts on contact. Yup. Two. And you only have three of them to start with. If you get hurt twice in a row, you're already dead. I guess that will make Z:LBW the most replay-able game of the series.Enfin, et sauf erreur de ma part, c'est une grande première dans un jeu Nintendo depuis Kirby's Dream Land, pour ceux qui se lasseraient de ré-explorer [lo|hi]rule où que la chasse aux coquillage-surprise avec des 'p'tits gorneaux' dedans laisserait froid, il reste une arme ultime: le mode difficile. Même ennemis, même disposition et tout, mais le moindre contact avec un des monstres qui peuplent la map dès le début du jeu vous coutera désormais deux coeurs. Comme votre barre de vie n'en offre que trois, celà signifie qu'encaisser deux coups successifs se traduira par un game over. Et reprendre un petit coeur ne suffira pas pour vous sauver la mise. En fait, en mode difficile, jusqu'au 2eme donjon, soit on a tous ses coeurs, soit on est à un pas de la tombe. [Less]
|
Au milieu de ma série de scans sur le thème "Critical Link", je retombe sur un diagramme UML représentant la séquence d'action qui découle d'une collision entre un personnage et un bloc spécial. Comme il va prochainement me falloir gérer des
... [More]
collisions entre crayons fixes et taille-crayon, je blog en stock ...This is how collision between a Game OBject and the tiled world occurs in my current Game Engine for DS library. Scribbled note next to the dotted line says "collide(c)" and comments "current code enforcesblock disappears only if extra & 0x80 is setblock reacts only with HERO when extra & 0x40 is set.where "extra" is the 8-bit reconstruction of the free bits in each special tile. [Less]
|
Rhaa! encore une chouette petite animation perdue à cause d'un bug que j'ai tardé à corriger dans AnimEDS! Ça doit bien être la dixième du genre, où je me dis "décidément, c'est bien confortable et rigolo, comme manière d'animer mes personnages" et
... [More]
30 secondes plus tard, j'ai un gros écran rouge qui bloque tout parce que j'ai mis un pied dans un "comportement non-défini" de la bibliothèque standard.En plus, comme je suis actuellement franchement patraque, il m'aura fallu pas loin de trois commit pour y parvenir. Donc je vais remettre mon fauteuil en position relax, et on reprendra les animations ce soir.I hope with today's fix, I won't get such guru-meditation screens for having clicked within the first 8 pixels of the timeline. It's getting on my nerves to lose the most adorable animations I'm working on again and again. (Sorry for such a short english version. Sickness.) [Less]
|
totally totem !Commencer par les choses simples. C'est ce qui m'a permis de progresser en fin un peu sur le systèmes des plate-formes dans mon moteur de jeu, malgré des semaines bien remplies. L'objectif: permettre d'empiler des dumbladors l'un sur
... [More]
l'autre pour que plus tard, Bilou puisse lui aussi grimper sur un dumblador puis sur des objets qui bougent.C'est un bon premier pas, même si dans l'immédiat, le taille-crayon du dessus ne se rend pas compte du "démarrage" de celui d'en-dessous, ce qui m'a permis de l'envoyer à son tour par-dessus le premier.that was too much for one chunk.At last, I've got one more step performed on the game engine. Too many times, I picked up my laptop after the kids when to bed to end up watching things on youtube or hunting for a new car. Somehow, getting at once into "Bilou riding some platform" was intimidating and I couldn't get things in place. When picking up my notes again this morning, I wanted to come back to small steps that can be chunked with a single tea cup. How about having Bilou able to stand on a stunned blador and call it a milestone ? As I started converting blador.cmd into the new cpp-assisted format, it turned out that I could get something even simpler to check the bare mechanisms: having stunned blador stacked onto each others. Well, tonight it's done.Oh, and I'm afraid you'll have to wait somewhat for my "Critical Link" series comparing the gameplay of 2D Zelda games: my scanner has apparently entered the dark world of non-functioning appliances.PS: it's easy to explain the fact that the "stacked" blador stays in place: I was missing the "attach to path" statement. More annoying: the new GameObject::ride() method was built under the assumption that Gob's movement in (dx,dy) would be consumed, which is not the case with dumblador's stepped movement. [Less]
|
Je range ... Et au milieu de tous les brols qui reviennent de mon ancien bureau et qui ne trouveront pas de place dans le nouveau, je tombe sur une tentative d'illustration du roll-jump de DKC returns précédé d'un morceau de code:while (! cando(dx
... [More]
, dy)) { if (dx!=0) { dx=(dx>0)? (((x+w+dx)|7)-x) : (((x+dx) & ~7)-x); } else { if (dy==0) return FAIL; } dy=(dy>0)? (( y+h+dy ) | 7) - x) : (( y + dy) & ~7) -y); }}return NONE; Some code snippet I found on a flying sheet of paper while cleaning up and shifting some books around. It should help dealing with alignment along walls and floors while being carried by a platform. Time constraint do not allow me to integrate it into the source code so far, and I've been wondering where it could be for about 2 weeks, so I'll just keep it here for now. It should complement the newly introduced GameObject::ride() function. Il doit s'agir de la logique d'alignement impliquée dans le déplacement "sur une plate-forme", gribouillé une fin de soirée, mais comme je n'ai aucun schéma qui l'accompagne et que j'ai été avare en valeurs symboliques, on verra ça plus tard: c'est l'heure des tartines. [Less]
|