Partage
  • Partager sur Facebook
  • Partager sur Twitter

Un langage de script à utiliser avec C++

    27 août 2021 à 20:37:01

    Bonjour,

    J'utilise la SDL2 v2 dans certains de mes projets avec des classes boutons, polices, images, etc.. pour différentes interfaces dans ces jeux. Jusqu' ici ces classes étaient construites à même le code source ce qui fait que si je voulais changer l'interface je devais recompiler l'exécutable. Ce qui m' a fait penser à un éventuel langage de script avec son parser pour construire ces interfaces sans avoir besoin de recompiler, il n' y aurait qu' à modifier le fichier utilisant ce langage. Il n'y a pas si longtemps j'ai vu des personnes sur ce forum parler de XML et je me demandais si utiliser par exemple une bibliothèque comme "Tiny-XML 2" serait une bonne idée dans ce but au lieu de réinventer la roue carrée. Qu' en pensez vous ?

    Merci

    Edit:

    Pour vous donner une idée de ce que je cherche à faire (ou à utiliser si bibliothèque tierce) comme langage c'est par exemple celui-ci:

    //Ici on crée une image avec son chemin qui sera déssiné dans le programme aux coordonnées 430, 522 de la fenêtre
    image path "cheminImage" position x 430 y 522



    -
    Edité par Warren79 1 septembre 2021 à 17:18:01

    • Partager sur Facebook
    • Partager sur Twitter

    Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

      27 août 2021 à 22:39:10

      Salut,

      Oui le XML est pratique a faire et modifier. Et pour le parser bah soit tu utilises une lib externe, soit comme tu dis tu réinventes une roue carrée. Pour mon boulot j'ai recodé un parser XML qui marche bien from scratch. C'est pas infaisable. 

      Maintenant j'imagine que la lib externe dont tu parles fait bien le boulot

      • Partager sur Facebook
      • Partager sur Twitter

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

        27 août 2021 à 23:59:32

        Quel est le problème de recompiler l'exécutable ? C'est finalement pas si différent de devoir parser un fichier XML ou autre
        • Partager sur Facebook
        • Partager sur Twitter
          28 août 2021 à 7:17:06

          Xml n'est pas exactement un langage de script, c'est plutôt un format de données.

          Avec un langage de script, on "scripte" des actions. Qui peuvent aussi consister à faire charger des données en xml.

          Il y a plein de bibliothèques qui font ça, genre rhino pour du javascript , LUA, LISP, etc

          • Partager sur Facebook
          • Partager sur Twitter
            28 août 2021 à 11:20:50

            JadeSalina a écrit:

            Quel est le problème de recompiler l'exécutable ? C'est finalement pas si différent de devoir parser un fichier XML ou autre


            En fait c'est en modifiant le moteur d'un de mes jeux que j'ai eu cette idée. Avant, à chaque fois que je créais une arme pour le joueur, je créais une nouvelle classe. Maintenant j'ai certains types d'armes avec leurs comportement et le moteur de mon jeu va lire des fichiers de configuration qui vont définir les options des armes (laser droit / à missile / à échantillon auto-dirigé vers l'ennemi , etc...)

            En plus de ça l'exécutable est plus petit généralement.

            -
            Edité par Warren79 28 août 2021 à 11:34:52

            • Partager sur Facebook
            • Partager sur Twitter

            Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

              31 août 2021 à 10:52:55

              Heu, le besoin, c'est pas juste rendre les objets d'IHM sérialisable/désérialisable ?

              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                31 août 2021 à 20:52:15

                bacelar a écrit:

                Heu, le besoin, c'est pas juste rendre les objets d'IHM sérialisable/désérialisable ?

                Ce que vous voulez dire par là c'est les empiler dans un std::vector ? Sinon par sérialisable je pense au données que l'on transmet dans un réseau, mais là, je ne vois pas trop l'intérêt.
                • Partager sur Facebook
                • Partager sur Twitter

                Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

                  1 septembre 2021 à 1:07:51

                  Non en fait ce n'est pas du tout ça, la sérialisation est un "processus" dont le but est de mapper un objet en mémoire dans un fichier et inversement. Quand je dis fichier, c'est un raccourci, il faut comprendre mémoire de masse, la plupart du temps, ce sera un fichier mais cela peut également être par exemple, une base de données et du coup, tu peux avoir de la sérialisation qui va passer sur un réseau. Dans le cas d'un jeu online par exemple, la sauvegarde de ta partie sera faite sur les serveurs du jeu (pour simplifier à l'extrême, car c'est plus compliqué que ça, mais c'est l'idée). La sérialisation est le modèle ultra basique de la persistance des données dans le temps. Lorsque je sauvegarde ma partie, je m'attends à pouvoir la reprendre à l'endroit où je l'ai laissé, c'est le mécanisme de sérialisation qui va permettre au programme de repartir exactement là où je l'ai arrêté.

                  L'intégration de scripting dans un programme, consiste dans un jeu, à mettre en place un pilotage du moteur de jeu personnalisé, c'est ce que tu vas retrouver dans un mod. Un mod va le plus souvent introduire des scripts qui vont modifier le comportement du moteur de jeu. Un grand classique, sur le jeu Skyrim, l'action de couper du bois est scriptée, lorsque tu coupes du bois, c'est géré par un script qui te limite à 3 séquences de coupage de bois, et à 3 bois par séquence. En modifiant le script qui gère, ça tu peux couper plus ou moins de bois par séquence et tu peux également changer le nombre de séquences, la modification de ce script va rendre le jeu plus facile, ou plus difficile, tout va dépendre des modification que tu vas faire sur le script.

                  -
                  Edité par int21h 1 septembre 2021 à 1:26:50

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Mettre à jour le MinGW Gcc sur Code::Blocks. Du code qui n'existe pas ne contient pas de bug
                    1 septembre 2021 à 1:47:59

                    Par sérialisable/désérialisable, je veux dire convertible en chaîne de caractère, donc assez proche de "que l'on peut transmettre sur le réseau".

                    C'est la méthode habituelle pour rendre des IHM modifiable/customisable sans avoir à tout recompiler et rendre ce travail possible aux "vrais" spécialistes du sujet : les UX Designer. Cela consiste à spécifier non seulement l'aspect mais aussi le comportement de l'IHM sous forme de fichier éditable par un programme : soit en WYSWYG via un outil dédié, soit un simple éditeur de texte "basique".

                    QML de Qt ou XAML de .NET sont des exemples de ce type où le format du fichier "de sortie" est un simple fichier texte. Dans le cas de XAML, c'est un fichier XML, pour QML cela semble être plus du JSON. Mais des choix comme HTML/CSS peuvent très bien être viable, si vous avez un moteur de rendu qui gère correctement ce capharnaüm. 

                    Comme l'indique la réponse de @michelbillaud, des bibliothèques d'IHM qui gèrent cela, ou des projets connexes qui ajoute cela à ces bibliothèques, c'est pas ce qui manque. Si vous voulez gardez SDL2, vérifiez que la bibliothèque support ce type de fonctionnalité, ou qu'un projet lui ajoute cette fonctionnalité, avant de vous engager dans le développement d'une roue carrée (même très carrée car vous semblez manquer de pas de recul sur le "problème").

                    Votre message du "28 août 2021 à 11:20:50" montre que vous maîtrisez déjà ce concept de "sérialisation", car ce que vous faites en lisant ces fichiers, c'est de dé-sérialiser les réglages de votre jeu. Vous pouvez faire exactement la même chose avec l'IHM, et les bibliothèques évoluées le font déjà pour vous. Si l'éco-système SDLv2 ne le fournit pas, vous pouvez vous bricoler un truc vite fait mais attention, un "langage de script", c'est vraiment pas une bonne idée, en général. Un truc bien plus simple comme un "langage" de spécification d'interface est bien plus efficace et donne la main aux UX Designers comme le fait de sérialiser les réglages du jeu donne la main aux Game Designers (même si vous êtes actuellement tous regroupé dans la même boite crânienne (les affres du confinement ?)).

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

                    Un langage de script à utiliser avec C++

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