Sujet: [CoRoLia] GD - Ennemis Dim 01 Jan 2012, 15:52
ENNEMIS ET OBSTACLES
Le jeu comporte une palette d'ennemis de taille variée : allant du petit ennemi de 16x16 au gros monstre pouvant prendre une grande partie de l'écran. Ces très gros ennemis devront être battus pour passer à l'écran suivant (sorte de demi-boss) comme dans la série Megaman. Ils seront soit un gros sprite soit une combinaison de sprites et/ou soutenus par une composition de tiles, si besoin (?). La plupart des ennemis ont un AI très basique (pattern prédéfini qui ne change pas) mais quelques un auront un AI plus travaillé comme les boss, principalement.
Quand un ennemi ou un boss est bléssé il n'a pas de Recoil (contrairement aux héros), il se contente de donner un feedback visuel (flash de 1 frame sur le sprite) et audio (bruitage de dégât).
Il est rare mais possible que des ennemis soient insensibles à certaines attaques (tirs des héros ou magies) mais il peuvent tous se faire tuer d'une manière ou d'une autre : tirs, magies, angle de tir, aptitude... (à définir).
Détails des attributs des ennemis
-Type- Sol => l'ennemi est sur le sol et subit la gravité Air => l'ennemi est en l'air et ne subit pas la gravité Eau => fonctionne pareil que Air sauf que ça se passe dans l'eau
-Mouvement- Trajectoire => (Avance, Aller-Retour, Bonds... à définir au cas par cas). Vitesse => 6 niveaux de vitesse, de 1 à 6 (les héros étant entre 3 et 4 sur la même échelle).
-Tir- Vitesse et forme du projectile ennemi ainsi que sa trajectoire (horizontal, vertical, en cloche, héros, rafale, triple).
-Force- Corps & Tir de l'ennemi (prévoir une 3ème entrée pour les boss comme une attaque secondaire).
-Défense- Immunité & Point-faible.
-A.I.- Basique (direction, pattern, collision...) ou avancée (Exemple : Poursuite => poursuit le héros (horizontalement)).
-Ils avancent tout droit lentement (2 fois moins que le Knight). -S'ils rencontrent un trou il y tombent. -S'ils rencontrent un mur ils font demi-tour.
-Immobiles. -Elle tirent en cloche des projectiles toutes les 2 secondes. -Le projectile est lancé dans la direction du héros (vers la droite ou la gauche) mais leurs trajectoire est toujours identique. -Le projectile traverse le sol.
Dégât : -Quand un ennemi est blessé il clignote blanc pendant 1 frame. Un son joue pour simuler l'impact aussi. -Si l'ennemi est immunisé à l'attaque du héros (tir, magie, ...) il ne clignotera pas et un son différent jouera.
Mort : -Quand un ennemi meurt une animation d'explosion joue faisant disparaître l'ennemi. L'animation d'explosion est composée de 6 images qui durent chacune 1 frame. Un son joue pour simuler l'explosion. -Si un ennemi drop un item au moment de sa mort, l'item apparaît au centre de l'ennemi puis tombe sur le sol rapidement. L'item apparaît dès que l'ennemi disparaît au début de l'animation d'explosion. Le sprite de l'explosion doit être au dessus (en terme de couche) du sprite de l'item.
Les 6 images de l'explosion :
Info additionnelle : Il faut penser à laisser la possibilité d'un 2ème type d'explosion pour certains ennemis, comme les plus gros. Aussi, nos boss auront une explosion différente, surement beaucoup plus spectaculaire. Donc il faut se baser sur 3 types d'explosions possibles : petite, moyenne, grosse. Les sons seront toujours les mêmes pour le dégât, et pour la mort il sera différent en fonction de l'explosion.
Je poste ici plutôt que dans programmation histoire de mieux regrouper les infos.
Je remarque que le respawn est un peu gênant tel qu'il fonctionne actuellement.
L'idée du respawn est de permettre initialement au joueur de pouvoir "farmer" des HP ou de l'or si besoin. Et aussi de garder le niveau en vie s'il commence à l'explorer et faire des allez-venues.
Cependant, notre respawn est vraiment trop intense. Je remarque cela car le jeu a un brin d'exploration et certains passage en vertical. Les ennemis réapparaissent bien trop facilement. Et à ce point c'est un problème.
En ce moment notre respawn fonctionne que si le spawn-point de l'ennemi (là où il est placé dans l'éditeur) disparaît de l'écran. L'idéal serait que ça arrive si on s'éloigne bien plus. Par exemple de la longueur d'un ecran complet. Est-ce que tu penses que c'est faisable ? Ce serait idéal pour la démo.
PS : je te rappelle aussi le bug du respawn actuel qui ne fait respawner les ennemis QUE si on va vers la droite et non la gauche (haut, bas, je sais pas).
____________
Alex RE a écrit:
C'est comme utiliser une hache pour trancher du pain. Je suis peut-être trop vieux pour ça.
Ca peut être très simple et résumé ainsi, je pense (prend effet seulement si l'ennemi a disparu ou est mort) :
Le héros doit se trouver à soit 20 cases (20x16 pixels) de manière horizontale ou à 15 (15x16 pixels) de manière verticale du spawn-point pour que l'ennemi respawn.
En gros quand le joueur a fait défiler un écran entier soit horizontalement ou verticalement.
Ces deux valeurs pourront être changées si on juge que c'est mieux de les rétrécir ou agrandir par la suite mais elles restent toujours les mêmes dans tout le jeu.
Note : pour les plateforme et éléments du même genre le respawn (s'il existe) doit rester le même qu'actuellement, c'est à dire dès que le spawn-point disparaît de l'écran.
Dans le fond, on aura des respawn d'ennemis moins fréquement et seulement si le joueur va un peu plus loin et revient.
Est-ce clair pour toi ? Dis-moi si c'est faisable ou si un détail te gène.
____________
Alex RE a écrit:
C'est comme utiliser une hache pour trancher du pain. Je suis peut-être trop vieux pour ça.
Nouveaux ennemis Je compte en designer plusieurs, peut être 4. A voir si on aura besoin de tous pour la démo, on décidera de cela ensemble. Pour le moment je balance leurs fiches sur le topic car ils seront utiles à un moment de toute manière. Je pense tout de même que plus on a de contenu dans la démo (héros, ennemis, power up, décors...) mieux c'est.
-A.I.- Il est immobile initialement, c'est son mode "idle". Accroché à un plafond ou une branche. Quand le joueur se trouve à 100 pixels ou moins de l'ennemi (horizontalement) il se met en mode "move" et va vers le joueur pour le toucher (tête-chercheuse). Une fois ce mode lancé il n'en sort jamais à moins de mourir ou disparaître de l'écran. Note : Le déplacement en tête-chercheuse aura la même physique que la magie du spectre que tu as déjà faite.
Pas un mockup pour un nouvel ennemi mais une question technique :
Je voudrais faire un ennemi type araignée qui se déplace verticalement sur un fil. Ce fil est fait en 2 parties : la base, accrochée aux parois (branches, plafond) et le fil proprement dit. La partie du fil doit pouvoir s'étirer sur plusieurs cases pour simuler la descente de l'ennemi.
Est-ce que tu vois une solution pour faire ça ? Dans le fond afficher le trait du fil de manière à simuler cette descente et remonté de l'ennemi.
Dis-moi ce que tu en penses.
Ps : on peut décider que l'araignée descende d'une distance précise par exemple, si ca peut simplifier.
____________
Alex RE a écrit:
C'est comme utiliser une hache pour trancher du pain. Je suis peut-être trop vieux pour ça.
Ca sera faisable si on instaure une règle pour placer l'attache du fil (le premier mur rencontré en allant vers le haut depuis l’araignée ou la premiere plateforme comme sur ton image )
Pour l'araignée, si je comprends bien, ça veut dire que la contrainte serait de ne pas en avoir 2 alignées sur le même axe vertical ? Et que ce serait forcement sur la plateforme ou le plafond le plus bas de cet axe ?
Exemple :
Les araignées barrées seraient interdites donc et les autres acceptées ?
____________
Alex RE a écrit:
C'est comme utiliser une hache pour trancher du pain. Je suis peut-être trop vieux pour ça.
L'ennemi #4 ne sera pas l'araignée mais "Mudman" (l'homme boue ). Je pense que c'est l'ennemi le plus complexe à ce jour, je ne sais pas si ça va être dur pour toi mais j'ai fait tout mon possible pour fournir les infos nécessaires !
#04 - Mudman
Mudman est un ennemi qui apparait sur la boue et crache un projectile sur le joueur quand il l'aperçoit. Il disparait ensuite quelques secondes.
-Type- Ennemi "au sol", il apparaît sur la boue. Ne se déplace pas. Il ne subit pas la gravité, ne s'enfonce pas dans la boue.
-Mouvement- Aucun.
Visuels :
A,B,C,D sont les poses de son apparition (spawn). E est la pose de son idle.
A.I :
La vision de Mudman se fait ainsi. Si le joueur se trouve dans le même axe horizontal il est repéré.
Projectile :
Audio : Un bruitage sera joué quand il tire son projectile.
Ressources :
____________
Alex RE a écrit:
C'est comme utiliser une hache pour trancher du pain. Je suis peut-être trop vieux pour ça.
Techniquement c'est un ennemi simple mais c'est sur que ça fait peur toutes ces infos d'un coup. Cependant si quelque chose coince plus que normal, préviens moi au plus tôt parce qu'on pourra modifier certains aspects qui sont plus des détails que d'autres.
____________
Alex RE a écrit:
C'est comme utiliser une hache pour trancher du pain. Je suis peut-être trop vieux pour ça.
Spider bouge verticalement au bout d'un fil qu'elle déploie. Seule l'araignée à une collision (pour toucher le joueur ou se faire tuer), le fil n'en a pas.
-Type- Ennemi de type "air". Il ne subit pas la gravité.
-Mouvement- Vertical. Sa vitesse de déplacement est de 3 (trois pixels par frame, donc plus lent que le Knight).
Visuels :
Les deux sprites de l'ennemis ont un loop continuel peut importe s'il ets en mouvement ou non. Chaque pose dure 5 frames. Le sprite "fil" est le sprite qui sert pour l'allongement du fil. Le sprite "base du fil" est le sprite qui est tout en haut, positionné juste au dessus du sprite de l'araignée (dans l'éditeur l'araignée pourrait être représentée par ces deux parties : base du fil + ennemi donc un sprite de 24x48, si tu veux).
A.I/Pattern :
Voici les deux extrêmes pour le fil : le plus court (2 sprites : base du fil + araignée) et le plus long (6 sprites : base du fil + 4 fil + araignée).
L'ennemi commence toujours dans sa position la moins étirée quand il apparaît dans l'écran. Ses mouvements sont ainsi : Quand il apparaît, il attend 1 seconde puis va vers le bas en dépliant son fil jusqu'à ce qu'il rencontre un sol ou jusqu'à ce qu'il soit étiré au maximum. Il attend 1 seconde puis remonte. Et ainsi de suite.
Ressources :
Tous les sprites font 24x24.
coco Dieu Maker Lv 44
Nombre de messages : 2989 Age : 30
Sujet: Re: [CoRoLia] GD - Ennemis Mar 01 Mai 2012, 16:08
Encore une fois super mock up
Tu pourrais préciser comment les nouveaux ennemis interagissent avec la magie de glace ?
Comment le mudman se retourne (peut il le faire ? ) ? J'avais pensé qu'il pourrait se tourner du coté du joueur au début la phase de spawn
____________
Relm ---Fantôme--- Lv 0
Nombre de messages : 40942 Age : 33
Sujet: Re: [CoRoLia] GD - Ennemis Mar 01 Mai 2012, 16:37
Bons points ! C'est fou ce que c'est varié et complexe malgré la simplicité du jeu !
Pour Mudman : Il se tourne vers le joueur avant de faire son spwan donc ? Et ensuite reste dans sa direction jusqu'à la fin ? Ca me semble ok !
Pour la glace : Note : je fais ça de tête, depuis le boulo, au pire je peux confirmer en rentrant chez moi, mais voilà déjà les infos qui me sembles bonnes pour la glace.
Bat => On peut la glacer. Ca fait le petit cube de glace, tout simplement. Elle reprend son I.A une fois dégelée. Si elle était gelée alors qu'elle était encore inactive (pendue la tête en bas) elle peut revenir dans cet état voir directement partir dans son mode "tête chercheuse" (à toi de trancher, au plus facile).
Mudman => On peut le glacer. Ca fait le petit cube de glace (vérifier si ce n'est pas choquant). Une fois dégelé il reprend soit là où il en était soit il passe directement en Attack Mode ou Unspawn Mode (à toi de choisir).
Spider => Il est un peut spécial... j'hésite à simplement interdire qu'on puisse le glacer. Mais ce serait un peu étrange, non ? Est-ce qu'on fait que ça le gèle dans un petit bloc et que le fil reste affiché ? S'il meurt, forcement le fil disparaît aussi. Une fois dégelé il reprend son pattern là où il en était.
____________
Alex RE a écrit:
C'est comme utiliser une hache pour trancher du pain. Je suis peut-être trop vieux pour ça.
AlexRE Admin trop trizo Lv 65
Nombre de messages : 29934 Age : 37
Sujet: Re: [CoRoLia] GD - Ennemis Jeu 03 Mai 2012, 02:32
Elle me fait peur cette arraignée, ouin !
____________
Relm a écrit:
Merci pour la confirmation Gary et fuck my life.
Relm ---Fantôme--- Lv 0
Nombre de messages : 40942 Age : 33
Sujet: Re: [CoRoLia] GD - Ennemis Dim 20 Mai 2012, 19:00
Je te préviens, Coco, je viens de réfléchir à un truc. Je suis en train de faire les niveaux pour la démo et je me rends compte que pour le niveau des plaines il manque vraiment des ennemis. Je pense qu'il faudra en créer un nouveau, qui serait un gros ennemi et une deuxième version d'un ennemi simple comme le lutin vert, genre un lutin rouge qui a plus de HP.
Je pense aussi que je ferai un niveau de grotte et qu'il nous faudra un genre d'obstacle dedans, style une roche ou un stalactite qui tombe. Bref, je t'en reparle. Pour le moment faut se focaliser sur la mécanique des sauts des héros déjà, ensuite, pour les niveaux, je vais te faire au plus vite le design des nouveaux ennemis. Mais je vais donc commencer par le niveau de la forêt, qui devrait être le 3ème, et dernier. J'ai tous les ingrédients pour celui-ci.
____________
Alex RE a écrit:
C'est comme utiliser une hache pour trancher du pain. Je suis peut-être trop vieux pour ça.
Voici notre première "version 2" d'un ennemi, le Lutin rouge. Pas besoin de faire un grand développement pour lui, il est très similaire au Lutin de base. Sa vitesse est la même cependant il ne tombe pas s'il arrive au bord d'un trou mais revient sur ses pas.
-Mouvement- Immobile sauf lors de ses attaques (voir plus bas).
A.I.
Poses et animations
-Pour l'Idle Mode, l'animation des poses ses fait ainsi : A, B, C, B (loop). La durée de chaque pose est de 5 frames.
-Juste avant son attaque dans le Punch Mode, le Troll se met en pose "ready". Le tout dure 20 frames. La pose A dure 5 frames et la pose 2 dure 15 frames.
-Quand le Troll saute dans son Jump Mode, il possède deux poses. La A lorsqu'il monte en l'air et la B lorsqu'il redescend (comme les héros).
-Quand le Troll exécute son attaque dans le Punch Mode, il possède deux poses. La A dure 2 frames et la B dure le reste du temps.
-Une fois que le Troll a fini son attaque ou son saut, juste avant de revenir en Idle Mode il joue une pose nommée "transition" pendant 5 frames.
Détails du Jump Mode
Le Troll ignore totalement les tiles de type "plateforme" et ne pourra pas tenir dessus s'il sautait (afin d'éviter que ce gros monstre tienne sur des branches).
Quand le Troll retombe sur le sol, il joue sa pose de "transition" pendant 5 frames et à ce moment là de la poussière apparaît simulant l'impact sur le sol. Voici un mockup vidéo de l'effet voulu :
La poussière cause du dégât. Sa force est de 5.
Sprites.
Détails du Punch Mode
Quand il est dans son Punch Mode, le Troll, subit la gravité malgré son attaque, c'est à dire qu'il aura une trajectoire différente s'il fait son attaque devant un trou par exemple.
Détails audio Voici les actions qui devront avoir un son relié : -Saut -Poussière -Attaque
Sprites et collisions
Sprites, résolution 150x100. Ici ils sont tous positionnés de manière à que le Troll soit bien positionné si on remplace le sprite par un autre à la même place. Cependant, tu peux voir qu'ils ne sont pas tous centrés et que les collisions doivent se faire au cas par cas.
Exemple de collisions. Vu que c'est un gros monstre on ne peut pas faire comme avec un petit où un simple bloc suffit pour définir sa collision. J'ai fait en sorte dans ces exemples de réduire au mieux le nombre de boites de collisions (entre 2 et 3). A toi de voir comment tu veux faire mais il faut éviter que le Troll nous touche avec simplement un gros carré basique.
Détails additionnels
-Le Troll ne peut pas être gelé. -Le Troll possède une explosion de mort différente de la normale, voici un mockup :
Ce genre d'explosion sera utilisé pour d'autres gros monstres, et sera aussi sûrement utilisé pour des boss en partie.
Sprites des grosses explosions, 64x64 pixels. 7 poses qui se lisent une fois chacune. Elles durent toutes 1 frame sauf la 3ème et la 5ème qui en durent 2.
-Type- Air (ne subit pas la gravité, ignore les collisions de tiles ou d'events)
-Mouvement- 3 pixels par frame horizontalement. Il va un peu plus vite verticalement.
-A.I- Le joueur ne le voit que lorsqu'il saute du bas de l'écran. Donc l'ennemi est loadé même s'il est hors de l'écran (un ou deux tiles plus bas de quoi le faire disparaître).
L'ennemi apparaît, saute. S'il n'est pas tué il disparaît en retombant. 2 secondes s'écoules et un nouveau Piranha apparaît. Contrairement aux ennemis classique il respawn toujours. S'il est tué 3 secondes s'écoulent avant qu'il respawn.
Afin d'éviter de voir qu'il respawn toujours au même endroit et simuler plusieurs Piranhas différents l'ennemi n'apparaît pas toujours exactement là où il a été placé dans l'éditeur : il peut apparaître aléatoirement dans une zone de 100 pixels (50 pixels de décalage à droite ou à gauche du point central).
Le Piranha vérifie la position du joueur juste avant d’apparaître et sautera dans sa direction (droite ou gauche).
Sprites et animation
Sprites 24x24 pixels. La pose 1 et 2 bouclent rapidement quand le Piranha monte. Elles durent chacune 2 frames. La pose 3 se joue quand le Piranha redescend.
Détails audio Quand le Piranha apparaît en sautant dans l'écran un bruitage jouera.
Détails additionnels
-Si le Piranha est gelé puis dégèle il finira sa trajectoire comme normal.
-Mouvement- 2 pixels par frame horizontalement. Il ne tombe pas s'il arrive au bord d'un trou mais revient sur ses pas.
-A.I-
Spiky se promène lentement de gauche à droite sur des terrains plats. Toutes les 3 secondes il arrête son déplacement et passe en Defense Mode. Dans cet état il est invincible à la plupart des attaques. Il reste en Defense Mode 2 secondes puis sort de ce mode et recommence à se déplacer comme avant.
Si le joueur l'attaque quand il est en Defense Mode et qu'il ne lui fait pas de dégât la durée du Defense Mode recommence (si le joueur tire sans arrête sur Spiky en Defense Mode il n'en sortira jamais, donc). Si cela arrive, Spiky contre-attaque en déposant un tas de bulles toxiques sur le sol, là où il se tient. Ce tas de bulles est un sprite qui reste sur place et blesse le joueur avec une Force de 5. Il ne disparaît pas avec le temps ni si le joueur le touche, il disparaît seulement si le joueur va assez loin pour faire re-spawner le monstre qui l'a posé.
Un Spiky peut poser un maximum de 3 tas de bulles. Il ne peut pas en poser plus d'un dans sa même phase de défense (il faut qu'il en soit sortit entre temps).
Sprites et animations
Sprites 35x29. Les premières poses sont pour sa marche, elles bouclent. Chaque pose dure 3 frames. Sa dernière pose est son Defense Mode.
Sprites des bulles-toxiques. 24x16 pixels, 3 poses. Ça boucle en faisant Pose 1, pose 2, pose 3, pose 2, ... Chaque pose dure 4 frames.
Détails audio
-Quand Spiky est en Defense Mode et que des attaques le touchent mais ne le blessent pas un bruitage simulant sa protection jouera.
-Quand Spiky dépose ses bulles sur le sol un bruitage doit jouer.
Détails additionnels
-On peut geler Spiky même s'il est dans son Defense Mode. Le bloc de glace étant toujours destructible, cela peut être un moyen de le vaincre.
-Si Spiky est gelé puis dégèle il continue comme normal.
-Lorsqu'il est en Defense Mode il ne peut être blessé que par certaines attaques : Les flèches verticales de l'Archer, le Charge-Shot du Mage, la Magie "Plante" (brûle-sol), la Magie "Sacré" (colonne).
Note : Dis-moi s'il est bien possible de créer des immunités du style avec seulement des attaques précises qui peuvent passer au travers. Si c'est dur à faire, on peut laisser tomber pour la démo et en rediscuter car je pense que ce sera intéressant de l'avoir au final.
____________
Alex RE a écrit:
C'est comme utiliser une hache pour trancher du pain. Je suis peut-être trop vieux pour ça.
Dernière édition par Relm le Lun 28 Mai 2012, 23:32, édité 1 fois
C'est vraiment génial tout ces nouveaux ennemis (et super motivant aussi ) ! Je vois pas de problèmes techniques pour l'instant (je vais devoir modifier la gestion des hitbox, mais je voulais le faire de toute façon ). Pas de problèmes pour la note du spiky non plus, il faudra juste faire à la main ce qu'une fonction fait pour tous les ennemis ^^