Fichier json externe et jeu web / mobile

Bonjour,

J’ai cherché sur le forum une solution, mais je n’ai pas trouvé comment faire.

Dans mon projet, je charge un fichier json externe que je stock dans une variable, jusque là tout va bien, et ça fonctionne bien durant les tests avec le logiciel.

Maintenant, mon projet est terminé, je veux l’exporter pour le web, et l’installer dans mon serveur.

J’ai donc changé le chemin d’accès au ficher json en donnant l’adresse du serveur où se trouve se fichier, mais ça ne fonctionne pas. J’ai essayé plusieurs chemin, comme l’URL qui pointe vers le fichier, le lien FTP direct qui pointe vers le fichier, tenté aussi “./filename.json” ou “/filename.json”, mais rien à faire, je n’arrive pas à charger ce fichier json.

Alors, je sais que l’option de “système de fichiers” dans Gdevelop est prévu pour Windows Mac et Linux, mais je suppose qu’il existe un moyen de charger un fichier externe quand on exporte pour web ou mobile ? Peut-être via une extension ?

Si vous avez une idée, ça m’aiderait beaucoup ! Merci !

Pour charger un fichier json depuis le web tu dois utiliser les actions de la catégorie networking au lieu de la catégorie filesystem :wink:

Okay merci.

Si c’est bien ce que je pense, ça donne ça : "Envoyer une requête???à : “Mon url qui pointe vers le fichier json ?avec le corps???”, et range le résultat dansmavariable” (ou dansautrevariableen cas d’erreur).

Les “???”, je ne sais pas quoi y inscrire, et dans l’url, c’est bien le lien direct vers mon fichier json qui est sur mon serveur ?

Normalement tu peux tout laisser vide. Si ça ne marche pas, essaie comme type de contenu “application/json” et comme mode “GET”. Tu n’as pas besoin de mettre un corps by que tu obtiens des données tu n’en envoies pas.

Okay merci, je testerai ça. Mais je peux laisser un dossier séparé sur mon serveur dans lequel je stock mes fichiers json, ça ne pose pas de problème ? Et l’URL je la fais pointer direct sur le fichier que je veux ?

Ou alors il faut que les fichier json soient à la racine du dossier du jeu exporté ?

Tu peux utiliser n’importe quelle URL

Bon, j’ai essayé plusieurs choses, je n’arrive pas à faire fonctionner.

URL qui pointe directement sur le fichier stocké dans un dossier sur le serveur.
URL qui pointe directement sur le fichier stocké dans le même dossier où sont tous les fichiers du jeu.
Lien en FTP qui pointe sur le fichier directement sur le serveur.

Avec le mode “GET”, sans. Rien à faire, ça ne veut pas charger le fichier json. Je sèche :confused:

Bah, tu vérifies d’un côté que ton fichier est bien accessible publiquement (via un navigateur où tu n’es pas identifié à ton site) et de l’autre côté, tu essaies de GET un fichier public trouvé sur un moteur de recherche.
Et la variable d’erreur, elle dit quoi ?
Et c’est toujours bien de nous montrer une capture d’écran des évènements.

Salut Gruk.

Voilà les captures (en partie) des évènements et de la fenêtre “requête web”.

J’ai fais un texte pour l’erreur, il m’affiche 0.

Mes fichiers json sont bien accessibles sur les navigateurs quand je pointe l’url directe dessus.

Pas d’erreur = pas de problème de ce côté. Peux tu montrer les évènements où tu utilises la variable?

J’utilise la variable pour avoir un mot au hasard parmi une liste, et ensuite en fonction de la longueur de ce mot, un nombre X de underscore va se créer.

56

Je vois 2 problèmes:

  1. Tu ne check pas si la variable jsonObject est pas “0” (la variable garde sa valeur par défaut jusqu’à ce que la requête en arrière plan soit terminée)
  2. Tu utilises la variable comme structure alors que ce n’est que du texte. Convertis le json en structure avec l’action appropriée.

Pour le point n°1, je ne comprends pas trop ce que tu veux dire et ce que je dois régler.

Pour le point n°2, j’ai tenté de faire ceci :

J’ai ajouté l’action “décoder la chaine json” de la variable jsonObjet (qui normalement contient ce qu’il ya a eu dans la requête), et je stock le résultat dans une nouvelle variable ("motJson).

Puis, j’ai modifié le nom de la variable plus bas, qui permet d’ajouter les “underscore” qui était initialement “jsonObjet”, je me suis dit que si cette variable avait été “décodée” puis stockée dans “motJson”, il fallait remplacer ça :

Mais rien à faire, je ne parviens pas à résoudre le soucis :confused:

Je suis tombé sur cette page : GDevelop 5 [GDevelop wiki]

J’ai tenté de suivre ce qui est dit, c’est à dire de mettre les fichiers json au même endroit que le index.html, puis de pointer juste le “file.json” plutôt que l’url complète, étant donné que les fichiers sont dans le dossier du jeu. Mais ça ne fonctionne pas non plus…

Ouvre le débogueur et vérifie le contenu de toutes tes variables, ça t’aidera sans doute à y voir plus clair.
Vérifie que la variable d’erreur est à 0, puis les variables du json avant et après conversion, puis ce qui en est fait.

(“la prescription en z”, au secours :man_facepalming: )

Voilà ce qu’il se passe :

Quand je lance le jeu, première scène on est sur le choix du thème :

Puis, je choisi “Véhicules”, et j’actualise, voilà ce que j’obtiens :

La liste de mot est bien chargée depuis l’url que j’ai mis et qui pointe directement sur le fichier json, il choisi bien un mot au hasard (on le voit dans la variable “motJson”, plusieurs test et le chiffre changeait). En revanche, il ne prend pas le mot en compte, ni son nombre de caractère.

Ton json est bien chargé, mais d’après ce que je vois, “motJson” devrait contenir le json entier converti en structure. Or, ce n’est pas le cas. Donc c’est là qu’est ton souci.
Les deux actions sont déclenchées en même temps, donc le json n’est pas encore téléchargé quand tu essaies de le convertir, donc la conversion échoue.

Pourtant, dans le screen de mon message précédent, je demande quand le texte de la variable est ≠ 0, il faut convertir le json. Donc ce n’est pas vraiment en même temps, si ?

Bon, je reviens une nouvelle fois vers vous pour ce problème. Après en avoir discuté avec Entropy sur le discord (encore une fois, merci à lui pour son aide !), il en a déduit qu’il y aurait un bug niveau logiciel sur la conversion de json (je lui ai envoyé l’intégralité du projet pour qu’il teste). Je ne saurai pas vous expliquer aussi bien que lui, mais si j’ai bien compris, il y a un soucis lors de la conversion du json.

Donc pour le moment je laisse en stand-by jusqu’à ce que ce soit corrigé. Mais est-ce qu’il faut que j’envoie un message à quelqu’un pour faire part de tout ça ?

Il faut en effet faire un rapport de bogue si tu veux que le soucis soit réglé. Il faut pour cela décrire le problème et si possible fournir un projet minimal qui a comme seul but de répliquer le problème. Si tu ne comprends pas assez bien le problème pour cela, tu peux peut etre demander a Entropy de le faire pour toi :wink: