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
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
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.
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.
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.
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 ?)).
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é.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Mon site web de jeux SDL2 entre autres : https://www.ant01.fr
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Mon site web de jeux SDL2 entre autres : https://www.ant01.fr
Mon site web de jeux SDL2 entre autres : https://www.ant01.fr