Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SFML] Créer balle pour un jeu de type shooter

    10 mai 2022 à 17:59:25

    Salut a tous !

    En fait je suis en train de réaliser un jeu de type shooter

    et j'aimerais pouvoir tirer sur les ennemis

    en fait la balle doit partir du Sprite et avancer tout droit

    en respectant comment le sprite est orienté

    merci !

    • Partager sur Facebook
    • Partager sur Twitter
      11 mai 2022 à 9:57:38

      C'est très très flou tour ça.

      Pourquoi une balle ne serait ou ne contiendrait pas un sprite, tout du moins dans la partie gestion visuelle du programme ?

      Sprite = Fée en Anglais.

      Un sprite, dans les années 70, c'était des mécanismes spécifiques hardware pour gérer "efficacement" l'affichage répétitif de motif graphique.

      Les bibliothèques graphiques "modernes" ont repris/complété/enrichi le concept pour faciliter la manipulation d'image au moment de l'affichage.

      Les bibliothèques purement graphiques ; contrairement à des moteurs de jeu, qui disposent de moteurs "physiques", moteurs "réseau", etc ...; ne gèrent que l'affichage.

      C'est à toi, en tant qu'utilisateur d'une librairie graphique, qu'incombe les autres tâches que l'affichage.

      Vérifie les fonctionnalités de SFML sur les aspects qu'il te manque, comme les animations, calcul de collision/simulation physique, etc... et architecture ton code pour en tirer partie.

      Normalement, on fait pas comme cela. On analyse les besoins, on architecture une solution évolutive, et on implémente l'architecture avec les technologies disponibles.

      Mais dans ton cas, on fera dans le simple, direct, et pas évolutif pour le coup.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        11 mai 2022 à 10:51:00

        J'imagine que c'est quelque chose comme ça que tu veux faire https://www.youtube.com/watch?v=p1RNBkyZ2dA&t=75s

        Avant de réfléchir à l'architecture, il faut déjà avoir ne serait-ce qu'une petite idée de ce qu'il faut faire pour résoudre le problème. Cette idée, la voici :

        Quand tu déplace un sprite, il a bien quelque chose qui représente la vitesse non ? Par exemple un sf::Vector2 qui donne la direction dans laquelle on veut qu'il aille. Donc au moment où tu veut lancer une balle, il faut lui donner le vecteur vitesse adéquat en fonction de l'orientation du joueur. Soit tu as directement le vecteur vitesse du joueur et du coup c'est le même, soit tu as juste l'angle de rotation du joueur et dans ce cas il faut construire le vecteur vitesse, qui est simplement (cos(angle), sin(angle)) (attention si les angles sont en degrés il faut les convertir en radians). 

        Je sais pas si c'est clair mais c'est l'idée (dans la vidéo que j'ai donné il montre juste le résultat mais je sais pas dans quelle autre vidéo il l'explique, peut être que tu peux chercher ses explications)

        • Partager sur Facebook
        • Partager sur Twitter
          11 mai 2022 à 11:36:28

          >Avant de réfléchir à l'architecture,

          = On analyse les besoins (BIS)

          Oui, je vais être "agressif" avec @JadeSalina car il a tendance à être un peu trop prosélyte de la méthode "à l'arrache" en ce moment, je trouve.

          Donc, l'idée de Mr @JadeSalina commence par utiliser un type d'objet spécifique à SFML, c'est donc une parfaite illustration d'un des inconvénients majeur de la méthode "à l'arrache", on n'a plus le choix de la librairie graphique, GG.

          Si SFML ne supporte pas des fonctionnalités d'animation ou de simulation physique, utiliser des "sf::Vector2" n'aura que des inconvénients par rapport à l'utilisation d'équivalents dans la STL ou dans les librairies de moteur/librairies physiques ou librairies d'animation que le PO pourrait choisir. (à moins que @JadeSalina veuille encore nous faire une construction de "roue carrée" ?)

          Donc, j'insiste, on commence par voir ce qu'offre la SFML pour nous simplifier le travail, plutôt que de réinventer une roue carré bille en tête à la @JadeSalina, SVP. (Si SFML n'offre rien, il est très probable qu'un "sur"librairie/un moteur fait ce genre de chose, n'en déplaise à @JadeSalina)

          Si votre objectif est de faire un jeu et non d'apprendre un langage, je vous conseille vivement l'utilisation d'un moteur de jeu plutôt que la SFML "de base".

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            11 mai 2022 à 13:15:21

            Oui là j'ai juste commencé par donner une idée globale du petit truc que veut faire l'auteur, après on est toujours libres d'utiliser nos propres vector2 ou autre, mais quand on utilise la SFML ou autre en général on utilise ce que la lib propose, ici il s'agirait des sf::Vector2, des Sprite et des fonctions de rotation intégrées. Pour les besoins ici ils sont simples c'est juste de pouvoir donner une direction à une balle, ce n'est pas d'intégrer un gros moteur physique 2D, ce qui aurait été le cas si l'auteur voulait faire un jeu comme Angry Birds par exemple. Et je pense que l'auteur veut juste faire un petit jeu "pour s'entrainer", pas dans le but d'être portable sur PS5, switch ou autre.

            Sinon je suis d'accord avec vous que c'est nul d'utiliser des sf::Vector2 qui obligent à utiliser la SFML, en général il y a des libs génériques spécialement conçues pour manipuler des vecteurs, comme GLM ou Eigen (il n'y a rien de tel dans la STL à ma connaissance par contre), mais si on a déjà la contrainte d'utiliser la SFML, j'ai envie de dire que de toute manière c'est déjà trop tard pour faire quelque chose de générique et flexible.

            D'ailleurs même Casey le dit qu'il n'utiliserait jamais de la vie une bibliothèque qui impose les classes de vector2 (https://guide.handmadehero.org/code/day215/#5072) donc c'est clair qu'on est d'accord là dessus.

            • Partager sur Facebook
            • Partager sur Twitter
              12 mai 2022 à 17:58:02

              Je pense plutot que je vais m'orienter vers un moteur de jeu en C++ comme Godot Engine

              merci quand même !

              • Partager sur Facebook
              • Partager sur Twitter
                12 mai 2022 à 18:54:33

                Pourquoi se limiter aux moteurs de jeu en C++ ?

                Maintenant, un grand nombre permettent de faire des jeux quasiment sans coder, comme Unreal (où on peut y ajouter du code C++ si nécessaire).

                • Partager sur Facebook
                • Partager sur Twitter
                Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                  12 mai 2022 à 19:52:50

                  Personellement, je ne sais pas pourquoi mais j'ai quand même envie de coder le jeu

                  Pour le plaisir de l'avoir fait après peut-être

                  • Partager sur Facebook
                  • Partager sur Twitter
                    12 mai 2022 à 20:04:37

                    @bacelar

                    À 13 ans, on ne fait pas un jeu commercialisable, et on ne réfléchit pas à des architectures et des patterns compliqués, ni à une "architecture évolutive" la question de l'indépendance des librairies OSEF. On ne prospecte pas non plus sur les technologies disponibles. Sur la base de quoi d'ailleurs ? On apprend à utiliser UN outil, UNE librairie (pas parfaitement, c'est entendu) et c'est déjà bien. On fait de petites fonctions simples  de géométrie, de physique de base, des petits jeux. La sfml est très bien pour ça.

                    @MathiasRubert

                    Moi je te conseille de continuer à faire des petits jeux avec la sfml si tu le souhaites, c'est un bon entrainement. Les gens ici pourront t'aider à progresser peu à peu, et te débloquer au besoin.

                    Pour ta question des balles pour tirer sur les ennemis, qu'as-tu fait ? où bloques-tu ? Il faut que tu sois un peu plus précis pour qu'on puisse t'aider.

                    -
                    Edité par Umbre37 12 mai 2022 à 21:58:28

                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 mai 2022 à 20:57:57

                      @Umbre37, à 13 ans, je pense qu'on est plus attirer par/motiver pour faire un jeu, avec RPGMaker, Unity, Unreal, etc..., qu'apprendre les arcanes des variadic template ou une architecture MVC ou même calculer des trajectoires 2D à base d'Arctan2 et d'algorithme Bresenham avec la SFML.

                      Mais bon, moi, à 13 an, j'appuyais comme un androïde (très con) sur les boutons de game&watch Nintendo. :euh:

                      L'utilisation de moteurs "clé en main/WYSIWYG" (Unity, Unreal, GDevelop (pour 2D), ...) est très vulgarisé sur Internet (Youtube, etc...) pour les "non programmeur" et le "coût d'entrée" est bien plus faible que l'apprentissage d'un langage informatique + bibliothèque graphique + toutes les maths qu'il faut pour combler les "manques" de la dite bibliothèque.

                      C'est des moteurs très très riches en fonctionnalités mais l'apprentissage y est très progressif. Avec peu de connaissance, on fait déjà beaucoup de choses sympas, même des animations dynamiques (ce qui est le besoin initial du PO).

                      Donc avec les moteurs "clé en main" (et pas à base de Godot Engine), pas besoin de se prendre là tête avec tous les détails que tu mentionne, @Umbre37 :

                      New Projet, Add (Platform|Shooter|RPG|...) Player Controler, Add Sprites, et "Go, dans l'éditeur de niveau" pour y mettre tout ce que l'on veut et les animer en appuyant sur 2/3 boutons et 2/3 sliders. Finito.

                      Je suis pas sûr que @MathiasRubert reste motivé quand il verra son camarade, plutôt douer en dessin, faire un "super" jeu en 2 heures alors que notre ami suera sang et eaux pendant 2 mois pour faire un jeu franchement pas terrible ; et un gameplay aux fraises parce qu'il n'a pas pû prototyper son idée avant.

                      Mais il aura de super notes en trigonométrie, voir dans les calculs matriciels dans au moins 5ans. :-°

                      Mais, si le but, c'est que @MathiasRubert est de super notes en maths, pas de problème, on l'aidera.

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                        12 mai 2022 à 21:54:26

                        @bacelar @MathiasRubert

                        Totalement d'accord avec toi pour la facilité d'accès des Unity, Unreal (j'avoue que je ne connais pas bien). Mais je crois comprendre qu'il a envie de coder. Cf : "j'ai quand même envie de coder le jeu". Je comprends bien l'envie que peuvent avoir certains à cet âge de dompter un peu son ordi et d'appréhender ce qui se passe dans la machine. Effectivement cela implique un peu de maths (pas forcément beaucoup - à condition de rester sur de petits projets simples). Et ce n'est pas une mauvaise chose, il va découvrir plein de trucs.

                        Enfin... c'est à lui de voir ce qu'il veut vraiment faire ! Je ne vais pas décider à sa place.;)

                        Si le plus important c'est de faire un jeu sympa et utilisable -> prendre un moteur répandu et éprouvé (j'espère pour lui qu'il y a quelques ressources en français).

                        Si le but est plutôt de découvrir la programmation en faisant des petits projets ludiques -> La sfml peut convenir il me semble (à utiliser dans un style plus impératif que OO peut-être ?)

                        -
                        Edité par Umbre37 12 mai 2022 à 22:01:11

                        • Partager sur Facebook
                        • Partager sur Twitter
                          12 mai 2022 à 23:27:53

                          MathiasRubert a écrit:

                          Salut a tous !

                          En fait je suis en train de réaliser un jeu de type shooter

                          et j'aimerais pouvoir tirer sur les ennemis

                          en fait la balle doit partir du Sprite et avancer tout droit

                          en respectant comment le sprite est orienté

                          merci !


                          Salut !

                          Ayant suivi ton premier topic, je connais exactement la réponse à ce que tu cherches.

                          La voici  : Tu définis ton personnage par un angle a, donc une balle qu'il tire suivra le vecteur unitaire V(cos(a),sin(a)), avec a en radian.

                          ça, c'est la réponse à ta question.

                          Maintenant, je sais que tu es en 5e, et hélas, la réponse que je t'ai donnée ne va pas forcément t'aider puisque je parle de vecteurs, de trigonométrie, choses que tu verras en fin de collège voir lycée.

                          Moi je pense que tu as cependant beaucoup de potentiel, et tu devrais continuer ton apprentissage, car ça va t'ouvrir pas mal de portes dans la vie.

                          Mais si j'ai un conseil pour l'instant, essaie de faire un jeu un peu plus simple, sans angles. 

                          Par exemple un shoot'em up vertical ou horizontal :)

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

                            13 mai 2022 à 6:11:04

                            @Umbre si il n'y a pas de ressource en français, ce n'est pas grave je comprends très bien l'anglais

                            @bacelar @Fvirtman oui, je pense que je ne me rendais pas compte a quel point il fallait un peu de maths

                            Je pense que je vais m'orienter vers un moteur de jeu et quand j'aurais acquis un peu + de connaissances en maths, je me tournerai alors vers la SFML

                            Merci bien d'avoir tous répondu !

                            • Partager sur Facebook
                            • Partager sur Twitter

                            [SFML] Créer balle pour un jeu de type shooter

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            • Editeur
                            • Markdown