Jeu de tactique

Hello tout le monde :smiley: !

Depuis quelques temps j’ai en tête l’idée de faire un petit jeu de tactique dont le principe serai simple: deux joueurs (humain) s’affronteront en contrôlant chacun 3 personnages avec différentes caractéristiques…

Je ne sais pas si j’irais au bout de ce projet mais j’aimerais bien au moins mettre en place le gameplay de base du jeu comme les déplacements, les sorts, etc…

À la base j’avais commencé à le developper sur le Game Engine de Blender mais je me suis dit en cours de route que ce type de jeu pourrait être cool sur tablette/smartphone, d’où ma réorientation vers GDevelop (que je connais un peu).

Après tout ce blabla voici mon problème:
j’ai réussi à configurer la base pour sélectionner/déselectionner un perso mais je n’arrive pas à le faire se déplacer seulement par “incrément” de case. Le perso peut bouger de 2 cases de base, mais je ne sais pas comment faire pour qu’il soit “snapé” (je sais pas dire snap en français :slight_smile: ) automatiquement à la grille à la manière d’un FF Tactics ou de Disgaea.

J’espère que je suis assez clair dans mon explication et j’attends votre réponse avec impatience ! Merci !

p.s: petit lien vers le projet simplifié https://www.dropbox.com/s/e7g5fxkqj3kpq7q/plateau_gameplay_tests.zip?dl=0.

Personne n’a d’idées pour résoudre ce problème ? :frowning:
Je ne sais pas du tout quoi faire… et je n’ai pas envie de me lancer dans des calculs de positions complexes…

pour rappel je souhaite que le pion déplacé se place au centre de la case sélectionnée et non ailleurs:
explications.jpg

Même des petites pistes pourrait m’aider !

J’ai modifié les événement et les sprites depuis la première version pour que ce soit un peu plus classe (les sprites seront bien sur à remplacer dans la version finale :wink: )

vous pouvez dl la seconde version https://www.dropbox.com/s/d0gvy3dngfjqv8q/Tactic%20Game.zip?dl=0

Je ne sais pas si c’est ce que tu cherche ou si je répond à coté de la question mais j’ai tout récemment eu besoin de gérer le magnétisme de pièce de jeu de puzzle et j’ai procéder de cette façon un peu barbare mais qui fonctionne :

en gros j’ai définit un quadrillage sur la zone où le spieces doivent venir se placer et en fonction de leur coordonnées je force leur position, l’objet Pieces est un groupe d’objet et j’utilise le déplacement à la souris et le point d’origine de chaque pièce est déplacer au centre du sprite :slight_smile:

Merci pour ta réponse ! :mrgreen:

A priori, cela ressemble à mon problème ! J’ai essayé d’étudier un peu ton code mais j’ai quelques questions :smiley: :

  • tu forces la position de ta pièce mais est-elle relative à son emplacement finale ?
  • je ne comprends pas comment tu peux forcer une position sans définir une condition qui vérifie la distance entre ta pièce et son emplacement finale…
  • Comment gères tu la souris dans ton jeu ? un simple MouseX() et MouseY() pour la position de ta pièce ?

Il faudrait donc que je force mon pion à se déplacer au milieu du sprite de case la plus proche du clic de souris…

Alors, j’explique le soucis qui m’a pousser à ce système, le petit projet de puzzle est tout bête d’un coté j’ai des portions d’image que le “joueur” peu déplacer sur une zone particulière pour reconstituer l’image complète, pour déplacer les pièces je n’ai pas besoin de gérer les coordonnées de la souris j’ai juste ajouté “Automatisme Déplaçable” dans le projet donc chaque portion d’image qui constitue les pièces du puzzle sont “drag and drop” ce qui je pense répond à ta 3ème question GDevelop gère les déplacement donc inutile de réinventer la roue :slight_smile:

ensuite chaque pièces doit se caler pile comme il faut sur la zone de construction du puzzle cette zone se situe sur la gauche dans la fenêtre de jeu, en fait du coin supérieur gauche jusqu’à 500 pixels vers la droite et toute la hauteur de la fenêtre qui elle fait 800x600 en tout, donc quand une pièce du puzzle à sa position X inférieur à 500 je sais qu’elle se trouve dans la zone de construction du puzzle, si le bouton de la souris n’est pas enfoncé à ce moment, alors je doit la caler sur un quadrillage virtuel pour être sur que chaque pièce au final se positionne correctement, les pièces font 100 pixels de coté et l’image final fait 500px sur 600px donc je test si la position X de la pièce est entre 0 et 100, si oui alors je met la pièce en X à 50 soit pile entre 0 et 100, si la coordonnées X de la pièce est entre 100 et 200 alors je la position en X pile à 150 soit entre 100 et 200 et je fait cela également pour 200 et 300, pour 300 et 400 et pour 400 et 500 puis je test la même chose mais pour la coordonnées Y cette fois, et pareil je positionne la position Y de la pièce en fonction de la zone où elle se trouve sur ce quadrillage virtuel, comme j’ai déplacer les points d’origine de chaque sprite (il y en a 30) la pièce de puzzle qui à donc le focus se positionne juste là où elle doit sur le quadrillage au moment où elle n’est plus en train d’être déplacé et mon effet de magnétisme fonctionne, donc pour répondre à ta première question la position final de la pièce est pile au centre de la zone ou la pièce est relâchée :slight_smile:

enfin pour répondre à ta seconde question, oui j’ai une condition qui teste où se situe la pièce c’est en fait toutes les conditions dans les groupe Horizontal et Vertical sur ma capture d’écran précédente, ce sont ces conditions qui me permettent de savoir où se trouve la pièce de puzzle qui à le focus :slight_smile:

j’ajoute que tout le “code” du jeu est dans la capture sauf une ligne qui sert à faire tourné la pièce quand on fait un clic droit le principe est très basique

Dans le cas de ton jeu, je pense que tu dois pouvoir positionner ton pion non pas à la position de la souris comme tu le fait mais a la position de la case survolé (même plutot au centre de la case) par la souris au moment ou on clic pour déplacer le pion

Mais sinon perso je n’aurai pas ainsi, je pense que se serai plus simple de juste faire des case avec 3 animations, une avec la case vide, une avec la case en vert et une avec la case avec un pion dessus et ensuite il suffirai de switcher les animation des case en fonction des besoins

Ça c’est de la réponse ! :smiley:

Je n’ai pas tout compris de ton système mais j’ai pigé le principal !
Je vais voir comment je peux positionner mon pion sur la case survolée comme tu me l’as dis, j’espère que je vais y arriver !

Pour la solution de la 3ème animation j’y avais déjà pensé mais j’hésitais à intégrer un mouvement de déplacement progressif d’une case à une autre, ce qui ne serait pas possible avec une animation… enfin c’est à voir :wink: .

En tout cas merci beaucoup pour tes réponses ! :laughing:
Et je posterai mon avancement sur le problème !

EDIT:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

       J'ai réussi ! Le pion déplacé se positionne parfaitement au milieu du sprite de la case selectionnée !
        Grâce aux groupes d'objets j'ai pu ajouter d'autres pions se déplaçant de la même façon, sans rajouter de "code" !
       Je suis content  :smiley: 
        Encore merci [b]KamiGeek[/b] !

      [u]La prochaine étape:[/u] le système de tours !

bonne nouvelle :slight_smile:

j’avais tester également de mon coté et j’avais fait ainsi :

en ajoutant la condition “le numéro de l’animation est = à 1” on oblige à n’utiliser que les case verte
et bien sur il faut replacer le point d’origine du pion au centre

Et bien c’est ce que j’ai fait ! À la différence près que je ne choisi pas de point précis où le pion doit se placer mais seulement le sprite de la case (je vais peut être modifier comme dans ton exemple pour être sur de son emplacement).
De plus ayant la zone de déplacement à gérer, j’ai quelques événements en plus.

Voilà à quoi ressemble le jeu en mode aperçu, une fois un pion sélectionné avec clic droit: