Je reprend mon BlueMan (Pac-Man) - L'école en ligne des programmeurs de jeux vidéo

Je reprend mon BlueMan (Pac-Man)

Je reprend mon BlueMan (Pac-Man)
Maraudeur Il y a 6 jours Premium Infinity3

Après une pause pour cause de GameJam dans laquelle je suis fière d’avoir produit mon premier jeu (simplissime… Mais c’est juste le reflet de mon niveau pour l’instant) je reviens sur mon projet de clone de Pac-Man.
Je l’appellerai Blue-Man, pour des raisons évidentes ^^

Donc le jeu a subit une évolution importante graphiquement et pour la suite : J’ai ajouté un calque sur la TileMap pour afficher les “Gommes” sur la carte.
Bien sur je suis loin de pouvoir les faire enlever et je me demande d’ailleurs si c’est la bonne façon de faire.
J’imagine qu’il faudra passer par des tableaux et des listes (ma bête noire pour l’instant), mais on verra cela plus tard. (Je pense à une valeur 1 sur la case pour afficher la gomme, et une valeur 0 pour l’effacer… !?)

On verra cela plus tard car je suis toujours en train de me débattre avec le déplacement de Blue-Man. Je suis arrivé à une version fonctionnelle mais insatisfaisante : BlueMan se déplace pixel par pixel dans l’update, mais l’affichage est fait avec un math.floor, donc en case par case. J’ai été obligé de faire comme ça, car j’avais trop de bug en pur pixel par pixel.
Du coup, je me dis que je ferai mieux de passer en case par case aussi dans l’update pour simplifier et clarifier le tout.

Pour la suite : d’abord régler les déplacements de manière satisfaisante, puis il faudra probablement du tweening linéaire pour lisser l’affichage. Ensuite il faudra que je revois l’animation de Blue-Man (animation qui n’existe plus pour l’instant !) et ensuite je pourrais commencer à penser à lui faire manger des Gums !

Je n’avance pas vraiment je trouve mais bon, tant que je n’abandonne pas … 🙂

 

Comments (3)

raaaahman

Ton raisonnement me semble valide:

Tant que tu affiches les gommes dans un calque séparé des murs et des chemins, tout va bien.
En effet, le déplacement de Pac-Man (blue man ici donc) doit combiner case par case et pixel par pixel:
Sa vitesse est en effet en pixel par pixel, et son déplacement à l’écran aussi MAIS
Son système de collision doit être géré case par case, pour pouvoir tourner notamment. En fait, je pense qu’il faut que tu lui donnes la position sur la grille qui correspond à la case dans laquelle se trouve son “nez” (le premier pixel dans la direction dans laquelle il se dirige). Ainsi ton joueur peut amorcer le mouvement un peu avant que blue man ne soit complètement rentré dans la case (mais tu dois laisser blue-man aller se centrer avant de tourner)

Courage, je ne pense pas que pac-man soit le jeu le plus simple à programmer en premier, mais il sera très formateur!

Maraudeur

Merci raaaahman ! C’est encourageant !

Oui, PacMan me semblait simple mais quand je pense à ce que je devrais coder pour les fantômes !?… lol

Mais bon, comme tu dis ce sera formateur et c’est le but !

J’ai avancé aujourd’hui, j’arrive à faire “manger” les gommes par Blue-Man et à augmenter un score selon le type de gomme ! 🙂 (je ferai un autre Devlogs dans quelques jours, avec, j’espère, d’autres évolutions)

Je n’ai pas modifié le déplacement encore, merci pour tes explications mais c’est encore nébuleux pour moi… Il faut que j’avance sur ce point, c’est fondamental quand même !
Penses-tu qu’en l’état actuel des choses (déplacement dans l’update en pixel et dans le draw en case par case), je puisse utiliser le tweening pour que le déplacement paraisse être en pixel par pixel, ou alors il faut que j’arrive à afficher directement le déplacement en pixel par pixel (mon souhait, mais ça bug de partout : Blue-Man se coince dans les murs régulièrement…)

raaaahman

Attention, je n’utilise pas le tweening moi-même, et je n’ai jamais codé pac-man jusqu’au bout.

Normalement tu devrais être en mesure de récupérer la position de blue man dans le draw() et ne pas avoir à gérer deux fois son déplacement, tu l’affiches juste à la position à laquelle il se trouve actuellement.

Ce que tu vas devoir déplacer case par case par contre, c’est sa hitbox, qui va te servir à gérer les collisions avec les murs, gommes et fantômes. Mais ça va se faire dans l’update() également.

Après je ne connais pas bien Lua ni Love2D, et je n’ai pas vu si David a fait un atelier sur le pac-man.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Avatar
Commencez dès maintenant à vous former à la programmation gratuitement pendant 30 jours :
Holler Box

Dialoguez avec les autres membres de la gamecodeur school.

Accédez maintenant à notre serveur Discord privé : Entraide, Game Jams, Partage de projets, etc.

Vous devez être membre de la Gamecodeur School Premium pour être autorisé à accéder au serveur.