Aller au contenu | Aller au menu | Aller à la recherche

Pmgp3

(alias pm's game project 3), bon en fait c'est au point mort.

Bonjour, voici un nouveau projet de jeu (PM game project 3), les deux précédents étant le SF2 et le DOOM dsp.

Le concept de ce jeu est très simple, proche de puzzle bobble: vous devez créer des chaînes de 3 billes ou plus pour qu'elles disparaissent de l'écran, avant qu'elles n'atteignent la sortie.

Plusieurs versions/clones de ce jeu existent déjà pour win32, MacOSX ou autres:

Funny bubble (Arcade)
Puzz loop (Arcade)
Ballistic (Playstation, Gameboy)
Zuma (win32)
Luxor (win32, MacOS X)
Atlantis (win32, MacOS X)

Il n'y a pas de version Linux, et encore moins de version Atari. Et j'aimerais remédier à ce désagrément.

20051003 - Un peu de dessin

Je suis pas un bon graphiste, et je pourrais toujours demander à quelqu'un de plus doué que moi pour cette partie là, mais j'ai besoin de matière pour démarrer. Donc voilà, il me faut:

  • un fond (bidon).
  • dessin de la piste (en marron foncé pour qu'on le voit).
  • point de départ (en rose).
  • point d'arrivée (en vert foncé).
  • des billes de plusieurs teintes différentes (3 pour l'instant).
20051004 - Un peu de code

Avec tous ces éléments, je peux commencer à coder un peu, donc là j'ai défini le chemin (la piste) sous forme d'une liste de segments, que les billes parcourent automatiquement.

En gros, ca donne ça:

20051005 - Le joueur à l'écran

Pour le joueur, j'ai le choix entre un machin rotatif au centre de l'écran (Puzz Loop, Zuma), ou bien une raquette de casse-briques (Luxor, Atlantis). J'ai choisi la raquette, j'ai qu'un dessin à faire. Le contrôle est fait à la souris.

Voilà avec la raquette affichée (et un peu de transparence au milieu, qu'on puisse voir les deux billes que le joueur peut utiliser.

20051006 - Le joueur en action

Donc maintenant, sélection aléatoire de deux billes pour le joueur, et affichage sous la raquette, et possibilité de shooter. Pas de bol, c'est la que je m'aperçois que la piste descend trop bas sur l'écran (sous la raquette), en plus j'ai pas prévu la place pour la barre d'état.

Ca commence à avoir de la gueule.

20051011 - Les courbes de bézier

Bon, il faut tout de même définir les morceaux de courbe de la piste, zou, un petit tour dans les maths pour savoir comment calculer des courbes de bézier. A la manière récursive, ça marche très bien.

En blanc, le chemin défini: segments droits, et courbes de bézier (3 points).

20051012 - Tous ensemble!

Voilà, maintenant les billes parcourent la piste défini en suivant la courbe. Je peux tirer dessus, petit test de collision (en fonction de la distance) et suppression de la bille qui a été touchée.

Bon là j'appuie sur une touche pour générer une nouvelle bille sur la piste. Donc quand on appuie trop vite, les billes se superposent.

20051018 - La bille pousseuse

Là aussi, un choix à faire. Dans Puzz Loop et Zuma, les billes sont dans une unique file, et avancent automatiquement. Dans Luxor et Atlantis, vous avez affaire à plusieurs files de billes successives, poussées par une autre bille.

Voilà ce que ça donne avec une bille pousseuse.

20051019 - Insertion de la bille tirée

Moment délicat, il faut maintenant insérer la bille tirée dans la file existante. Pas de bol, ya un bug, et il arrive que les billes restent coincées. Voilà des billes coincées, car elles ne sont plus poussées.

20051106 - Supprimer le recalcul des courbes de bézier

Un premier bug corrigé: quand les billes se trouvaient sur une courbe, le calcul de distance entre les billes n'était pas fait correctement, et la distance entre deux billes devenait variable. Donc, maintenant les courbes de bézier sont découpées en segments pour faciliter les calculs, et aussi supprimer ce bug.

Les billes se retrouvent toujours coincées, car le déplacement des billes est gérée deux fois au lieu d'une: une fois quand elles sont poussées, et une fois en cas de collision avec la bille tirée. Gérer le déplacement dans une seule routine devrait résoudre ce bug.

20051116 - Décoinçage des billes

Autre correction de taille: les billes ne se retrouvent plus coincées après insertion de la bille tirée. Sur l'image, on voit la bille tirée juste au moment de la collision et les billes qui ont été poussées un peu plus loin.

20051130 - Suppression des chaines

Voila, maintenant quand la bille tirée se retrouve dans une chaine de 3 billes ou plus de même couleur, la chaine est supprimée. Ca marche pas à tout les coups, mais on peut vider toutes les billes de la piste maintenant, si on est assez rapide.