Bonjour,
Je suis en train de refondre complètement le code du jeu: je l'ai rendu complètement déterministe. Avant, j'updatais le jeu en fonction d'un delta time que je mesurais entre chaque frame, or chaque frame n'avait pas la même durée, et comme ça implique plein de calculs avec des floats qui dépendent de ce temps, ça accumulait plein de petites imprécisions qui faisaient qu'il était impossible de jouer deux fois la même partie. Si vous avez déjà fait tourner le jeu sans rien faire plusieurs fois d'affilée, vous avez peut-être remarqué que ça ne donne pas toujours le même score :p Bon, en fait, il y avait aussi le fait que les 1ères flammes au début de la partie apparaissaient aléatoirement qui devait jouer.
Maintenant, l'update du jeu à chaque frame est fixe et ne dépend pas du temps, et s'il le faut je le fais plusieurs fois avant le rendu pour que le jeu semble toujours tourner à la même vitesse. J'ai banni les calculs qui dépendent vraiment du temps dans l'update, à part si ce sont des choses qui n'affectent pas le cœur du jeu, comme les mouvements des bras des persos. Ça permet de VRAIMENT pouvoir comparer les scores (avant, si quelqu'un avait 1 point de + ou de - que vous, c'était le plus probablement du à la chance.), et pourquoi pas, d'avoir des leaderboards et même des replays
J'ai aussi amélioré le rendu de la fumée, pour l'instant de façon naïve, donc ça fait ramer le jeu quand elles apparaissent :p
J'ai aussi corrigé le shader de texte: il y avait une erreur bête qui faisait apparaître un léger contour autour des lettres. Ça rend mieux maintenant.
J'ai aussi complètement refait la recherche de chemin des bonshommes: avant, j'avais implémenté un petit A* qui cherchait le chemin entre le point de départ des bonshommes et la fusée, et qui s'adaptait tant bien que mal à l'apparition des flammes.
Deux problèmes avec ça:
->Il n'y avait qu'un seul chemin possible pour les persos (et si je voulais mettre plusieurs points de départ pour les persos, je devrais calculer plusieurs chemins à chaque fois? Ou si je veux autoriser les bonshommes à prendre plusieurs chemins différents qui ont le même "coût", pour accentuer le côté chaotique?)
->Étant donné cette limitation, mon implémentation n'est pas super performante.
Maintenant, je donne un "score" à chaque case de la map en partant de la position de la fusée: plus la case est loin de la fusée, plus son score est grand, et ça prend en compte les obstacles sur la route (on n'affecte un score à une case que si elle peut être atteinte directement par sa voisine qui a déjà un score). Du coup je couvre toute la map, je pourrai potentiellement faire popper un bonhomme n'importe où sur la carte et il pourrait trouver son chemin sans calcul supplémentaire Et avec une petite dose de pseudo-aléatoire (avec toujours la même seed, pour avoir le même comportement d'une partie à l'autre), on peut les voir prendre des chemins différents. Pour ça, je pourrais peut-être aussi prendre en compte le taux d'"occupation" d'une case pour que le perso fasse son choix.
Désolé, je ne vous propose pas de nouvelle version: avant ça, je veux rendre le déplacement des persos plus joli si possible, et corriger les perfs de la fumée.
À bientôt,
Partager