StarGrid Devlog #3
Lysenti Il y a 2 ans Premium Pro12

Salutations camarades Game(Pur)Codeurs ! Voici le 3ème devlog pour mon projet de GameJam «StarGrid».

Ca y est, on est à mi-chemin, et voilà un petit résumé de ce que j’ai pu implémenter :

  • la possibilité de passer en FullScreen à volonté
  • la capacité passive du personnage jouable « Agent » de pouvoir se camoufler dans les zones d’ombre (avec un effet de transparence sur le perso et un son)
  • StarGrid est une prison. Il lui fallait donc des gardes, c’est chose faite.

Et… c’est tout. mais en vérité je suis plutôt content, car les gardes sont non seulement présents, mais aussi entièrement fonctionnels. Il s’agit du coeur du gameplay, et je voulais que ce soit crédible ! Bon ils regardent tous vers le bas parce qu’il faut que je prenne le temps de leur dessiner les autres animations… c’est prévu. Petite démo :

Comme vous pouvez le voir les ennemis ont un cône de vision ! Il est graphique bien sûr mais pas que : il représente la zone dans laquelle on peut se faire repérer, sauf si on est camouflé.

Pour ceux que ça intéresse, voilà comment je m’y suis pris :

  • Pour dessiner les cônes, j’ai béni la fonction love.graphics.arc (que j’ai découvert pour l’occasion). Ca, c’était la partie facile…
  • Ensuite j’avais besoin que ces cônes correspondent à une zone de collision, et là c’est le drame, parce que ma sympathique fonction de love ne me servait plus à rien. Je me suis fait beaucoup, beaucoup, beaucoup de noeuds au cerveau. Je l’avoue, j’ai été voir si je pouvais trouver quelque chose sur le net, mais il n’y a franchement rien de clair (ou bien trop inaccessible pour mon niveau).
  • Finalement j’ai raisonné en 2 étapes : d’abord je vérifie si mon personnage se trouve dans un cercle de rayon égal à celui de l’angle du cône (merci Pythagore).

  • Ensuite je vérifie si mon personnage se situe entre les deux extrêmités de l’angle formé par le cône. C’était possible car justement, chaque extrêmité est en fait déterminée à partir d’un angle orienté (sisi, les trucs à base de Pi et de cercle trigonométrique). Je vous passe les détails mathématiques… mais ça m’a ramené à mes années lycée !

Ca c’est pour la détection, j’ai ensuite pas mal gambergé sur les patrouilles. J’avais besoin d’améliorer le système qu’on voit dans l’atelier Platformer, car je voulais que les gardes s’arrêtent un moment avant de changer de direction, et aussi qu’ils puissent tourner à 90° et pas seulement « rebondir » sur la tile invisible de changement de direction.

Pour finir sur les gardes, parmi ceux qui ne bougent pas, certains tournent sur eux-mêmes, selon 4 schémas différents (gauche-droite, haut-bas, sens horaire, sens anti-horaire). J’ai passé plusieurs heures pour faire fonctionner tout ce beau monde à peu près correctement… j’utilise pas moins de 3 timers différents et 7 booléens. Il y a sûrement mieux à faire ceci dit !

Tout ça peut paraître un peu cosmétique, mais je me suis dit que ça enrichissait les possibilités de level-design pour la suite. Avec ce système on peut imaginer une détection sonore aussi, ou des caméras à l’angle de vue plus restreint mais plus lointain, etc. Et au final même si j’ai encore une tonne de trucs que je voudrais mettre, ça me permet d’avoir un début de gameplay qui pourrait me permettre de livrer un petit quelque chose pour la Jam.

Prochaine étape :

  • Finir les animations des gardes, j’en peux plus de ne voir leur tronche que de face.
  • Dessiner une GUI, même rudimentaire, qui devra dans un premier temps afficher le personnage sélectionné et les objectifs de la mission en cours.
  • Agrandir la map, ce qui inclut la gestion des échelles pour passer d’une map à une autre.

Bon décidemment, je ne sais pas faire court… merci de m’avoir lu et bon code à tous !

Lysenti

Comments (12)

Merci Wile pour ton commentaire 🙂
Si le temps me le permet je regarderai le lien que tu m’as passé qui explique un peu le raytracing en 2d (au pire je verrai ça après la jam, ça m’intéresse de toute façon). Si non je pense qu’en l’état actuel c’est déjà pas mal pour les champs de vision. 🙂

vraiment sympa ton système de cône, sa me fait penser à « stealth inc ». en tout cas merci pour l’explication de ta méthodologie 😉 c’est bon de savoir comment résonnent les autres codeurs
hate de voire ta prochaine devlog !

Allez Lysenti ! La suite ! On veut jouer nous ! Et je veux pas te mettre la pression ( si je dis ça forcément c’est qu’en fait je veux te la mettre ^^ ) mais les autres ont déja soumis des trucs pas mal !

Haha Lost en mode coach !! 😀

J’ai bien avancé hier soir, et je bosse toujours mieux avec un peu de pression de toute façon. J’ai déjà fait un tri entre ce que j’ai besoin d’implémenter rapidement et ce qui pourra être ajouté après l’échéance de la Jam. Le prochain devlog sera normalement accompagné d’une version jouable, ou du moins testable, et ça devrait être d’ici demain à vendredi !
Ce qui me laissera le week end pour corriger les bugs que j’aurais manqués. 🙂

Merci coach ! 😉

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.