SQLite ou autre systeme permettant une gestion dynamique

Hep!

Bon je rage un peu là, je suis encore sur mes histoires de classes qui communiquent entre elles et j’en ai fait le tour, je n’en peux plus de devoir faire des calculs savant et devoir recréer des tables de correspondance de valeurs… Gdevelop est très bien pour faire un jeu statique en l’état, où tout est écrit “en dur”, mais ce n’est pas la direction que j’ai prise car je veux que les joueurs puissent modder le jeu en instanciant des classes d’armes ou d’autres “modules”. Je pense que c’est déjà pas courant sur Gdevelop… Mais je me sens bien mal outillé !

Bon le premier constat est que les variables structures sont très rigides à utiliser, quasi impossibles à débugger sans écrire une formule à rallonge qui ne permet jamais d’avoir une vision globale et claire des contenus. Les utiliser comme tables de bases de données relationnelles s’avère complexe, fastidieux, et m’obligeant à parser des tonnes de choses dans des tas de boucles"Tant que". 4ian m’a parlé d’un moyen d’afficher leur contenu en JSon mais ça ne marche que sur le mode HTML5, et je fais du natif… Ou alors si ça marche en natif 1) j’ai pas reussi à utiliser la fonction et 2) du Json ça va si tu as 4/5 éléments à afficher, pas si tu en as 250 !

Le minimum syndical serait d’avoir un débogueur qui serve à déboguer et qui permette d’explorer les variables structures de fonds en comble, car je ne déclare pas mes variables de manières statiques, je créé des centaines d’enfants à la volée en fonction de contenus de fichiers XML.

La meilleure solution dans mon cas, la plus pragmatique en tout cas rapport à mes connaissances en web, c’est e la base de données relationnelle, et victor avait suggérer SQLite, qui pourrait être un très bon point pour moi. Le XML alimenterait des tables qui seraient directement exploitable en SQL via des id uniques et des tables de correspondance sans avoir à faire des concaténation à rallonge sur25 lignes de l’éditeur d’expression.

Bon ma demande fait sortir Gdevelop de son contexte de base “codingless”, mais j’adore ce qu’on peut faire avec l’inverse pour concevoir des algorythmes très rapidement, et j’ai un peu plus d’ambitions pour ce que je suis en train de développer qu’un jeu “statique”. Je sais qu’en l’état je ne pourrai pas “externaliser” tout sur les contenus, car j’utilise des sprites et des masques de collision en pagaille, mais l’externalisation de valeurs en xml pour laisser les joueurs tripoter et ajuster des variables, c’est vraiment le minimul syndicale que je puisse fournir à ma communauté de alpha testeurs actuelle.

Donc demande 1) faisaibilité d’intégrer un moteur de base de données comme SQLite, 2) un débogueur plus complet, qui permette d’explorer les variables structures.

Ha et point 3) un débogueur qui ne “saute” pas dans la list des objets, j’avais déjà fait remonter il y a des mois (je ne retrouve pas le topic) ce probleme: la liste des objets disparait dans l’onglet “objets” du débogueur: pour faire réapparaitre la liste il faut cliquer sur “jouer en fenetré”… Puis au bout de qqs secondes si on a pas eu le temps de presser sur pause la liste saute à nouveau et on se retrouve avec une fenetre blanche… Hyper relour quand j’ai 40 objets à vérifier pour savoir quelobjet avec quel id,de quelle classe, a tiré tel projectile (lui meme avecun id, id_classe,etc.).

Bon ça fait bcp de chose, mais je pense qu’au moins sur la partie des débogueurs des choses assez simples peuvent etre faites.

Le problème, c’est que l’on n’arrive pas à reproduire le bug, donc on peut pas le corriger…

Au lieu de t’emmerder avec toutes tes structures (pourquoi as-tu besoin de tout stocker en RAM tout le temps ?). Pourquoi ne pas lire dans le fichier XML à la volée ?
Tu as besoin de la description de l’arme n°10, tu vas dans le fichier XML, tu cherches l’arme n°10 et tu stockes ça dans une variable. Tu peux même garder quelques données (mais pas toutes) en cache (l’arme actuelle, ou les quelques armes possédées par l’utilisateur).

C’est exactement ce que je fais, le problème c’est en amont : X items parmi lesquels x classes armes. on stocke les items en inventaire dans 18 slots statiques en var structure globale qui stockent l’id de l’item et le nombre d’items pour l’inventaire, plus au moins 3 autres boutons d’interface différents : un extension de l’inventaire depuis laquelle on améliore les armes, on positionne les armes dans des slots d’un objet parent qui lui aussi a un nombre de slots dynamiques en fonction d’une configuration externe), et enfin l’ui sur laquelle repose le gameplay où on interagit avec des fonctionnalités de ces armes : activer/desactiver ; donner +/- d’énergie aux armes ; activer des perks sur l’armes.

Ca c’est juste sur la base, j’ai de très beaux modèles logiques de données qui si je devais faire çà en base de données marcheraient du feu de dieu. Là en gros j’ai réinventé des boucles qui me permettent d’utiliser des variables structures comme une base de données où au final on récupère un id_item qui me permet de récupérer les infos que je veux pour les afficher/affecter à des objets.

Là où j’en chie, c’était déjà une difficulté, c’est sur l’écriture des jointures dans des boucles tant que en fonction du nombre d’item, du nombre d’armes, du nombre de perk, etc. Mais plus encore sur le débogage : je me retrouve à écrire des truc encore plus tordu à afficher dans des champs textes pour tracer les valeurs de mes variables et vérifier que mes jointures fonctionnent…

J’ai pas mal d’expérience en base de donnée relationnelle, ça m’a pas mal aidé sur la conception du jeu, mais je me heurte à l’outil qui n’est pas adapté, et je n’aurais ne meme temps pas pu concevoir le jeu différemment en l’état de mes connaissances sur GD.

Pour le bug sur le débogueur, je regarde à vous pondre un gdg qui illustre, une bonne grosse génération de 5000 objets devrait faire l’affaire. EDIT : bon je n’arrive pas non plus, en revanche je traine ce probleme sur mon projet depuis décembre dernier alors que je n’avais rien de folichon à ce stade du projet). Pour expliquer plus à même le problème, quand j’ouvre le debogueur, quelque soit l’onglet, l’affichage saute toutes les 1 à 2 sec : la fenetre n’affiche plus que du blanc puis raffiche son contenu : en revanche sur l’onglet “Objets” ça va sauter de la meme façon 2/3 fois pis hop black out !

Si vous avez une astuce à me proposer pour afficher les variables structures je suis preneur.