We have started a team for the asset store with trello like the extension team.
https://trello.com/b/xoOCKFOf/gdevelop-assets
We want to know some guidelines and what licensing are going to be acceptable.
The main idea is that assets are grouped into folders and sub folders. Images, audio and fonts should have a name that is the plain English name that will be displayed to the user. By giving specific names to images, they will be used to create a single object.
Note that tilesheets are not supported! Each image of an object must be in a separate file (using the rules to name the files below). It's also recommended that all images of a single object have the same size (with transparent margins), because for now we can't specify the origin of an image.
Each image will be used to create an object. For sprites, more than one image can be used to create a single object, by following the rules described below.
By default, an image will be used to create a Sprite object.
For example, an image called "Spaceship.png" will create a Sprite object called "Spaceship", with this image as the first animation.
If the object is animated, use different image files with the same base name, and add an underscore followed by the image index: Spaceship_1.png, Spaceship_2.png, Spaceship_3.png.
If the object has multiple animations, you can add the name of the animation between the base name and the index.
For example:
Spaceship_flying_1.png,Spaceship_flying_2.png,Spaceship_flying_3.png,Spaceship_1.png,Spaceship_idle.png,Spaceship_damaged_1.png,Spaceship_damaged_2.pngwill create an object with three animations: Flying (3 images), Idle (1 image), Damaged (2 images)
_METADATA.json. For example: Spaceship_METADATA.json. Inside, put this JSON:{
"timeBetweenFrames": 0.2,
"loop": false
}
For example:
_METADATA.json file for each animation. For now, just one is supported for all animations of the object.If you want to create a Tiled sprite (for backgrounds or repeating patterns):
tiled_. For example: tiled_Grass Background.pngIf your image is a 9 patch, that can be stretched with the center and the border repeated:
9patch_base name_gravity.png with gravity being: southwest, southeast, south, northwest, northeast, north, west and east.For example: 9patch_Orange leaves_center.png, 9patch_Orange leaves_east.png, 9patch_Orange leaves_north.png, 9patch_Orange leaves_northeast.png, 9patch_Orange leaves_northwest.png, 9patch_Orange leaves_south.png, 9patch_Orange leaves_southeast.png, 9patch_Orange leaves_southwest.png, 9patch_Orange leaves_west.png,.
These assets from scratch are a bit cumbersome to author right now. Here is an example folder that shows how the particle emitter objects from Wishforge Games are done: Particles.zip
Create an file with extension .asset.json, for example: My Particle Effect.asset.json. The format of this asset is:
{
"id": "",
"name": "",
"authors": [""],
"license": "",
"shortDescription": "",
"description": "Enter a description. Leave the rest empty, it will be autogenerated",
"previewImageUrls": [],
"tags": [],
"objectAssets": [
{
"object": { ...JSON CONTENT OF AN OBJECT... },
"resources": [ ],
"customization": []
}
],
"gdevelopVersion": "",
"version": ""
}
Leave almost everything empty. Create your object in GDevelop, then copy it in the clipboard. Paste the content in a file, and then copy just the "content.object" key:

Paste it inside the .asset.json file you created, replacing ...JSON CONTENT OF AN OBJECT...:

Finally, if your object uses image resources, make sure to add them in the resources array:

Put all images with the name that you put in the resources array next to your .asset.json file.
Finally, add:
.preview.png that will be shown in the assets storeIGNORED_FOR_IMAGE_ASSETS.md so that the importer will ignore the images and won't try to create objects automatically :) For example:
Put a license.txt file in your folder. The importing will recognize it and apply to all files in the folder :)
Make sure to put your name in this license file too (or the name of the original author).
The importer will be adapted to understand the license file.
Just ask me in this thread :) If the rules here are too complicated or are giving you too much work, you can suggest me a new rule and I'll see if I can adapt the importer so that it can understand your asset structure :)
The goal is to make objects more or less automatically!
Zip the folder containing them and send them to @4ian, either by opening an issue here or by tagging @florianrival on a card on the GDevelop Assets Trello board: https://trello.com/b/xoOCKFOf/gdevelop-assets
How are we going to deal with file-name collisions? I am working on a large project now and have experienced the frustrating problem when you have two objects that use the same file name.
(鈿狅笍 Advanced!) To make an object from scratch, for example particle emitters
Maybe we could add an option to export an object to the asset store format from the IDE in the future?
How are we going to deal with file-name collisions? I am working on a large project now and have experienced the frustrating problem when you have two objects that use the same file name.
It's handled by GDevelop itself. When an asset is added, GDevelop looks for all resources:
In other words: no worries :) If there are 100 objects in 100 different folders that are all named "Player.png" (generating an object called Player), you'll still be able to search and import all of them without clashes - and without clashes with your own existing resources.
Maybe we could add an option to export an object to the asset store format from the IDE in the future?
Totally. By lack of time I've not added it already, but if someone wants to do that, it should be doable to have an option that would export the object in a .asset.json file, with the resource (images basically) next to it.
It's handled by GDevelop itself. When an asset is added, GDevelop looks for all resources:
Does GDevelop beta102 currently handle name collisions when importing assets? This is the second time I've run into this problem on this project.


I'm trying to make it a bit easier for my self to make the files for the time being but is this the right format?
https://www.youtube.com/watch?v=XfVbTVCW8rs
Where is the description shown in the UI of GDev ?, I think I'm getting confused by the automatically generated ones.
"an empty filed called IGNORED_FOR_IMAGE_ASSETS.md so that the importer will ignore the images and won't try to create objects automatically"
What would be a example of when to use this?
Is it only for when making a asset.json?
Does the importer automatically ignore image files based on its existence?
The files I used had an extra underscore in them and don't contain the asset name, file names don't matter for asset.json right?
But probably should use the same naming conventions though.
I'm trying to make it a bit easier for my self to make the files for the time being but is this the right format?
This looks mostly correct!
Only thing I could spot is that the resource files in the json are have a relative path with a sub folder (NinjaAdventure/Slide___001.png, etc...) while they should be referred to without this sub folder (Slide___001.png, etc...).

Is it only for when making a asset.json?
Does the importer automatically ignore image files based on its existence?
Yes and yes. If you had a file called IGNORED_FOR_IMAGE_ASSETS.md, the importer won't try to automatically create object from the images found in this folder. It's only useful for your folder containing a .asset.json file
The files I used had an extra underscore in them and don't contain the asset name, file names don't matter for asset.json right?
Yes, there is no convention for the .asset.json file, but as with others the filename should be in plain English:
My Super Ninja.asset.json (will be used to create an asset called My Super Ninja). The name of the resource files (the images) are not important because they won't be used to create objects... but still try to use similar name/same convention so that the creator that uses the asset does not have weird file names in its resources :)
Does GDevelop beta102 currently handle name collisions when importing assets? This is the second time I've run into this problem on this project.
Can you post the steps to reproduce this? Thanks!
In this video, I start from a new project and add two sprite objects with multiple frames each. Source files for both objects have the same names, which GDevelop doesn't handle properly.
https://user-images.githubusercontent.com/8879811/103448259-34b25b80-4c54-11eb-9f96-3a0cd06e2d5b.mp4
@tristanbob Ok I see, this is not related to the assets store so let's continue the discussion on a new issue :)
There is no check for existing files made when you add a resource from another folder. The solution for now is to copy by yourself the images in your project folder.
The asset store does not have this issue as images are compared to existing resources :) To fix your specific issue, we would need when copying assets that are to be added from a folder outside of the project, to check the content of each overwritten file.
Most helpful comment
It's handled by GDevelop itself. When an asset is added, GDevelop looks for all resources:
In other words: no worries :) If there are 100 objects in 100 different folders that are all named "Player.png" (generating an object called Player), you'll still be able to search and import all of them without clashes - and without clashes with your own existing resources.
Totally. By lack of time I've not added it already, but if someone wants to do that, it should be doable to have an option that would export the object in a
.asset.jsonfile, with the resource (images basically) next to it.