Possibilité de rajouter manuellement des fichiers JS comme resources


#1

Par example si j’utilise une librarie js ca m’éviterait de devoir la copier a chaque fois


#2

Dans la philosophie de GDevelop 5, il est voulu que l’utilisateur ajoute lorsqu’il en a besoin les ressources (Sprite, sons, vidéo) lorsqu’il ajoute un objet de ce type.

Autrement ajouté d’un coup un paquet de ressources ne serait pas très utile si vous ne les utilisez pas toutes.
Si vous avez des ressources inutilisé dans votre dossier de projet les ressources seront quand même incluse dans le jeu final, ce qui est une perte d’optimisation pour vous et pour les joueurs qui télécharge du contenu inutile.

Néanmoins si vous voulez le faire vous pouvez ajouter dans un objet Sprite une multitude de fichier image d’un coup dans une animation, ensuite supprimer l’objet, les ressources d’images seront toujours dans le projet.
Pensez à faire une copie du fichier source de votre jeu avant !

Spoiler

Sinon éditez le fichier source de votre jeux avec un éditeur de texte, mais je ne vous aiderais pas à ce sujet.
Pensez à faire une copie du fichier source de votre jeu avant !


#3

Ce n’est pas des images que je veux ajouter mais des fichiers JS. Comme ca, si j’en utilise dans mon code js, je n’ai pas besoin d’exporter manuellement pour rajouter les fichiers JS.


#4

Ah !

Pour les fichier JS tu ne peut simplement pas les ajouter comme une ressources.
Il faudra copié entièrement le contenu de la lib dans un bloc javascript.

Sinon tu peut charger du JS avec mon extension, vois sur le wiki comment en ajouter une.

extension_load_script_javascript.json
{
  "author": "@Bouh",
  "description": "Authorize to load Javascript script in your game, with online or offline method",
  "extensionNamespace": "",
  "fullName": "Load Javascript script",
  "name": "LoadJavascriptScript",
  "shortDescription": "Authorize to load Javascript script in your game, with online or offline method",
  "tags": "javascript, load",
  "version": "0.0.1",
  "eventsFunctions": [
    {
      "description": "Load a javascript script from base64",
      "fullName": "Load JS from Base64",
      "functionType": "Action",
      "name": "loadFromBase64",
      "sentence": "Load a script from Base64",
      "events": [
        {
          "disabled": false,
          "folded": false,
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "inverted": false,
                "value": "DepartScene"
              },
              "parameters": [
                ""
              ],
              "subInstructions": []
            },
            {
              "type": {
                "inverted": false,
                "value": "BuiltinCommonInstructions::Once"
              },
              "parameters": [],
              "subInstructions": []
            }
          ],
          "actions": [],
          "events": [
            {
              "disabled": false,
              "folded": false,
              "type": "BuiltinCommonInstructions::JsCode",
              "inlineCode": "window.loadscript = function(data){\n    var script = document.createElement(\"script\");\n    script.innerHTML  = data;  \n\n    document.body.appendChild(script);  \n};\n\nvar encoded = eventsFunctionContext.getArgument(\"data_base64\");\n\nloadscript(atob(encoded));",
              "parameterObjects": "",
              "useStrict": true
            }
          ]
        }
      ],
      "parameters": [
        {
          "codeOnly": false,
          "defaultValue": "",
          "description": "Javascript script to load in Base64 (field not active need code it)",
          "name": "data_base64",
          "optional": false,
          "supplementaryInformation": "",
          "type": "string"
        }
      ],
      "objectGroups": []
    },
    {
      "description": "Load Javascript script from URL, require online",
      "fullName": "Load JS from URL (Online)",
      "functionType": "Action",
      "name": "loadFromUrl",
      "sentence": "Load JS script from _PARAM1_",
      "events": [
        {
          "disabled": false,
          "folded": false,
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "inverted": false,
                "value": "DepartScene"
              },
              "parameters": [
                ""
              ],
              "subInstructions": []
            },
            {
              "type": {
                "inverted": false,
                "value": "BuiltinCommonInstructions::Once"
              },
              "parameters": [],
              "subInstructions": []
            }
          ],
          "actions": [],
          "events": [
            {
              "disabled": false,
              "folded": false,
              "type": "BuiltinCommonInstructions::JsCode",
              "inlineCode": "window.loadscript = function(data){\n    var script = document.createElement(\"script\");\n    script.src  = data;\n\n    document.body.appendChild(script);\n};\n\nvar script_url = eventsFunctionContext.getArgument(\"script_url\");\n\nloadscript(script_url);",
              "parameterObjects": "",
              "useStrict": true
            }
          ]
        }
      ],
      "parameters": [
        {
          "codeOnly": false,
          "defaultValue": "",
          "description": "URL of Javascript script",
          "name": "script_url",
          "optional": false,
          "supplementaryInformation": "",
          "type": "string"
        }
      ],
      "objectGroups": []
    }
  ],
  "eventsBasedBehaviors": []
}

#5

Ca, je le sais. Justement, je proposait comme nouvelle fonctionalité de pouvoir les ajouter comme resource pour qu’elles puissent etre inclues lors d’un build non manuel et du preview.


#6

En tout cas avec les changements à venir dans les prochaines update il sera possible de mettre un json en tant que ressource. Mais rien pour du JS encore.

Il y avait eu des discutions à ce sujet sur le Github du projet.
Tente une recherche là-bas, je ne sais pas trop ce qu’elle sont devenu.