Voici la fontionalité tant attendue et merveilleuse! Le prout de
princesse. Mesdammes et messieurs vous n'allez pas en croire vos
narines ni vos panflet pantouflés. La princesse en plus de son retour
haptique à base de vibreur dans la manette vous offre également une
prestation graphique des plus prestigieuse, à savoir, des particules! Et
oui vous avez bien lu! Vous chez public singulier qui passe trop de
temps à lires les messages de commits. La princesse vous communique la
durée et la direction des dash proutés grâce à cette belle trainée
verdâtre. Vous m'en direz des nouvelles!
YO LES CHEUMS§§ 9A FAIT LONGTEMPS QUE J4AI PAS COMIT2§§
ALORS 9A SERA TOUT EN CAPSLOCK AUJOURD4HUI§§
En vrai ça va bien deux phrases le capslock.
Bon la princesse avait un saut analogique, le wall kick c'est bien
d'être cohérent, le feeling est bon, des petites pressions sur sauter
contre un mur permettent de remonter vite le long de celui ci.
A vos claviers pour tester!!
lorsque le joueur pointe dans une direction accroché au mur il a 20
frames pour décider d'où aller. Si il ne le fait pas, alors le
personnage se décolle du mur. Pour être plus clair dans le décollage du
mur, mettre une marge suffisante.
Coller au mur se produit quand on à les flêches du bon côté du touchent.
peut importe qu'on ait de la vitesse ou pas. Ce qui fait que projeté au
mur, même avec une vitesse de 0 à l'arrivée, on va s'y coller.
Les deux fonctionalités étaient cassées, mais ensemble.
Donc le wall kick, quand la princesse est au mur, le joueur peut
maintenant donner une direction et à le temps de la maintenir sans que
la princesse sorte de se position "collée au mur". Et ce pendant 20
frames soit 333ms. Une fois passé ce délai, la princesse se décolera du
mur. Une fois décollée, rien ne sert de sauter, mais ça se voit.
Vu que le joueur a le temps de pointer dans une direction pour kicker,
alors, il en va de même pour le dash. J'ai supprimé les rêgles complexes
qui liaent le dash au wall hug. Maintenant, le joueur doit pointer dans
une direction pour que le dash ait lieu correctement. Si le joueur ne
pointe pas dans une direction, alors le dash ne se produit pas.
Plus quelques autres corrections:
Le dash counter passait à -1 et donc faisait boucler la dash speed sur
la fin de l'execution. C'est corrigé. J'ai aussi rajouté de la durée de
dash globalement c'est plus agréable.
Dans l'air, lorsqu'une décélération doit avoir lieu pour repartir dans
la direction opposée, appliquer également le multiplicateur de
différentiel de friction.
Le contrôle aérien est rétabli correctement de manière globale.
La princesse accélère et décélère 3 fois plus lentement dans l'air.
Avec l'exception que ses deux premières frame d'accélération dans l'air
sont immédaites pour un meilleur feeling bien connecté à la manette.
Pour pas que la princesse commence par tomber dès qu'on la voit, activer
sa physique mais ne pas lui permettre marcher au travers des murs
Faudrait voir si le dash ne permet pas de passer au travers du coup.
Cet item supprime les vents de la princesse en lui permettant
d'immédiatement digérer le lactose. Ce qui a pour effet de couper son
dash en cours et de lui vider les intestincs.
J'ai rajouté plein d'éléments dans le niveau numéro deux pour tester ça.
Addition supplémentaires:
- le fromage peut être de différentes couleurs avec pour conséquences
différentes intensités. Ce qui a pour effet de recharger plus ou moins
vite la jauge de pét.
- J'ai rajouté une passerelle à sens unique qui permet de créer un
petit point de non retour, j'aimerai bien aussi l'avoir à la
verticale, mais pour le moment, je n'y arrive pas.
Avant quand la princesse était sur un mur proche du sol elle était
forcément en wall jump. J'évite ça en faisant en sorte que si le raycast
qui détecte le sol de loin est triggé alors, l'état "s'appuye au mur"
est désactivé.
Merci Raph!
avant jouer au clavier, c'était impossible. Voic les améliorations:
- une fois que le joueur a décidé de se coller au mur, on le laisse
collé tant qut'il ne décide pas d'en partir volontairement.
- j'ai rajouté des ray_cast à la tête et aux pieds de chaque côté pour
que l'on puisse continuer de wall jumper jusqu'au bout
- si au cours d'un dash ou d'un kick on s'écrase contre le mur, la
princesse s'y colle toute seule.
- faire flèche du bas permet d'accélérer la chute.
Bon c'est mieux sans ça et je me souviens plus de pourquoi je l'avais
mis. Aucune raison d'annuler un dash dans tous les cas il se finit
suffisament vite.
Entre les niveaux et à la mort il y a maintenant un fondu au noir qui se
met en place pour éviter d'avoir la gerbe sur les mouvements de caméra.
la physique est en pause pendant la transition.
Maintenant 3 geauges de prout sont présentes et permettent au joueur de
savoir si il a du pet de dispo ou pas. Le joueur peut accumuler jusqu'à
trois prouts. Le temps de recharge est de 3 secondes par prout. C'est
peut être trop long.
Il faudra probablement bouger du code que j'ai mis dans game au dans le
code de niveau. Mais bon j'y réfléchirai le prochain coup.
Plutôt que d'enfoncer une touche spéciale pour s'accrocher au mur,
utiliser le joystick ainsi que sa direction pour avoir la friction au
mur.
Rajout d'un coyote time permettant d'avoir suffisament d'aisance pour
wall kicker.
Il est maintenant possible d'avoir des niveaux indépendants et de
switcher de l'un à l'autre en utilisant une porte. La porte doit
indiquer le nom du niveau suivant et ensuite dans game.gd un mapping
statique permet de passer d'un niveau à l'autre.
Les limitations actuelles et la todo liste:
- La princesse spawn toujours au même endroit, elle devrait spawner par
la porte qui l'a fait venir et bien sur dans la carte pas dans le vide
à côté.
- On perds l'état du niveau quand on meurt, il faut que ça change dans
le futur, c'est pas préssé ceci dit.
- Le niveau devrait s'inscire automatiquement à l'événement de mort de
la princesse pour pas oublier de le faire à chaque fois.
En tout cas, ce chantier va permettre de travailler des niveaux
indépendament les uns des autres et paralléliser si on veut être
plusieurs à tweaker en parallèle.
Lorsque la princesse meurt, une animation de mort est lancée qui la fait
disparaitre dans un tourbillon de la mort. A la fin du tourbillon de la
mort, un signal est renvoyé à la princesse pour que la scene redémarre.
Basique mais fait le taff!
Le dash accroché au mur est maintenant fonctionnel
Le dash par défaut fait avancer dans la précédente direction du
personnage si le joueur ne donne pas de commande et sinon utilise la
commande du joueur pour choisir la direction
Le dash en diagonnale est maintenant cohérent avec le dash sur un seul
axe.
Lorsque la princesse est accrochée au mur, ne pas lui permettre de
partir de son accroche tant que le joueur maintient le bouton d'accroche
au mur. De cette manière, le joueur peut prendre le temps d'orienter son
stick comme il veut avant de sauter ou dasher.
Maintenant, la princesse à besoin de manger du fromage pour récupérer un
prout dans le compteur de prout pour lui permettre de dasher. Il manque
le fait d'avoir un timer qui délaye l'ajout du prout au compteur de
prout et le HUD pour savoir où on en est de son nombre de prouts
réstants.
En vrai, pour l'instant voilà ce qui est fait:
- le fromage existe et est plaçable sur le niveau à convenance. Autant
qu'on veut.
- le fromage est une entité autonome dans ses animations et c'est lui
qui va enoyer un signal à la princesse quand elle rentre en collision
avec lui.
Reste à mettre en place:
- Un timer pour faire réaparaitre le fromage
- Un affichager de jauge à prout pour la princesse
Dans le bug du pic+mur, si princesse était en colluision avec un mur et
des pics à la fois et toujours en train de marcher en direction du mur
pour forcer la collision avec celui ci, alors les pics n'étaient pas
traités car en ne récupérant que la dernière collision au lieu de toutes
les collisions c'était au petit bonheur la chance.
Maintenant le petit bonheur n'est plus là, la chance est partie et ça
marche à chaque fois!
Certaines variables d'état nécessaire au bon déroulement des
décélérations et de la marche n'étaient pas remises au bon état
correctement en fin de marche. Ce commit essaye d'addresser ce soucis.
Si la princesse touchait la plateforme pour moi de la durée du buffer,
il se trouvait que ça buggait. A la place de regarder uniquement le plus
ancien élément du buffer de coyote, je fais un OU logique entre tous ses
éléments, comme ça si on a éffleuré une plateforme même pour une frame
ça compte.
La princesse peut kicker depuis le mur! Sans pour autant que ça lui
donne la capacité de remonter au mur, en kickant elle tombe
progressivement vers le bas. Le joueur ne peut rien y faire.
Pour y voir plus clair maintenant que la physique se porte bien dans ce
jeu vidéo, j'ai fait du ménage et organisé les fonctions de la
princesse. Ca devrait être plus facile de rajouter du fromage et des
sauts muraux qui demandent un peu plus d'intrication dans les états.
Dans un cas particulier où un saut emmenant la tête du personnage sur un
pan incliné lui donnait une vélocité en x différente de zéro et
qu'aucune command du joueur n'était envoyé via le controleur alors, la
princesse glissait à l'infi et l'au delà (surement même un peu plus). Il
en va donc de sa survie et de la santé mentale du joueur de limiter ces
comportements ératiques et qui semblent tout bien d'être une
fonctionalité pour certains. Je m'égare, je m'égare! En attendant
l'écureil, la princesse freinera. voilà.
Si le joueur appuyer sur la touche de saut un peu avant de toucher le
sol, alors le personnage sautera au moment d'avoir touché le sol. ça
permet au joueur de ne pas avoir totalement besoin d'être super précis
sur la commande de saut pour pourtant faire bouger le personnage.
Le mécanisme utilise un RayCast sous les pieds de la princesse pour
savoir où se trouve le sol.
Il restera à tuner cette variable dans le futur.
Uniquement se reposer sur is_on_wall() ne fonctionne pas, car
move_and_slide() parfois ne nous indique pas qu'une collision avec
un mur a eu lieu. ça doit être à cause d'un pixel de décalage ou
un truc du genre.
Pour palier au soucis, j'utilise deux RayCast, un à gauche et un
à droite. si ils sont trigger, alors ça veut dire qu'un mur est dans
le coin. Ils sont uniquement sensibles aux plateformes.
Voilà voilà, maintenant s'accrocher au mur ne nécessite plus de
maintenir la touche de direction dans le bon sens.
Le personnage doit perdre en vélocité sur l'axe précédant lorsque
le jour demande de changer de direction pour avoir un effet smooth
de déplacement.
La stratégie choisie consite à détecter qu'un changement de direction
est en cours puis de remettre l'index d'accélération à son état
d'initialisation et de laisser accélérer le personnage classiquement.
Sauf que lorsque l'on va calculer sa vitesse, l'on va rajouter la
vélocité déjà présente ce qui aura pour effet de smoother tout ça.