Manually package the assets
Overview of a pack
Warning
This page may be not exhaustive. Contact the GDevelop team if you need help, or use the .gdo
export.
If you have too many files, you can manually package an asset pack without the game engine editor.
Here is an example for an imaginary French food
asset pack:
French food
│
├── pack.json << Asset pack metadata
│
├── previewImages << Sub folder with public resources
│ ├── IGNORED.md
│ ├── thumbnail.png << png only
│ ├── preview1.png << png only
│ └── preview2.png << png only
│
├── previewSounds << Sub folder with public resources
│ ├── IGNORED.md
│ ├── preview1.aac << aac, wav, ogg or mp3
│ └── preview2.wav << aac, wav, ogg or mp3
│
│
├── Character
│ ├── Enemy 1_Attack Bottom_METADATA.png
│ ├── Enemy 1_Attack Bottom_1.png
│ ├── Enemy 1_Attack Bottom_2.png
│ ├── Enemy 1_Attack Bottom_3.png
│ ├── Enemy 1_Attack Bottom_4.png
│ ├── Enemy 1_Attack Top_METADATA.png
│ ├── Enemy 1_Attack Top_1.png
│ ├── Enemy 1_Attack Top_2.png
│ ├── Enemy 1_Attack Top_3.png
│ ├── Enemy 1_Attack Top_4.png
│ ├── Enemy 2_Attack Bottom_METADATA.png
│ ├── Enemy 2_Attack Bottom_1.png
│ ├── Enemy 2_Attack Bottom_2.png
│ ├── Enemy 2_Attack Bottom_3.png
│ ├── Enemy 2_Attack Bottom_4.png
│ ├── Enemy 2_Attack Top_METADATA.png
│ ├── Enemy 2_Attack Top_1.png
│ ├── Enemy 2_Attack Top_2.png
│ ├── Enemy 2_Attack Top_3.png
│ └── Enemy 2_Attack Top_4.png
│
├── Props
│ ├── 9patch_French Table_all_128.png
│ ├── 9patch_French Table_center.png
│ ├── 9patch_French Table_east.png
│ ├── 9patch_French Table_north.png
│ ├── 9patch_French Table_northeast.png
│ ├── 9patch_French Table_northwest.png
│ ├── 9patch_French Table_south.png
│ ├── 9patch_French Table_southeast.png
│ ├── 9patch_French Table_southwest.png
│ ├── 9patch_French Table_west.png
│ ├── quiche_resting_1.png
│ └── quiche_resting_2.png
│
├── Audio
│ └── cooking.aac
│
├── Font
│ └── bonne maman.ttf
│
└── Splash << Sub folder with a partial asset
├── IGNORED_FOR_IMAGE_ASSETS.md
├── SauceSplashing.asset.json
├── SauceSplashing.png
└── SauceSplashing.preview.png
The title, description, and price
Each pack needs to be defined in a pack.json
file located at the root of your pack folder. In it, you'll put the pack's name, description, price in Euro or USD in cents, and the categories.
Note:
- Value:
123
=1.23€
(Euro) - Categories: full-game-pack, character, props, background, visual-effect, interface, prefab, sounds]
// pack.json
{
"longDescription": "Write the description of your pack here. You can add a new line like this:\nThis is a new line.",
"tag": "The name of your pack",
"sellerId": "LEAVE EMPTY",
"sellerStripeAccountId": "LEAVE EMPTY",
"prices": [
{
"value": 399,
"usageType": "commercial",
"currency": "USD"
},
{
"value": 1099,
"usageType": "unlimited",
"currency": "USD"
}
],
"categories": ["interface"]
}
Make a thumbnail & previews files
A pack with an attractive thumbnail makes it more visible. Additional images can help them decide if a pack suits their needs. Use contrasting colors to make your thumbnail stand out. The thumbnail should accurately represent the contents of the pack. Thumbnails that show assets in context are preferred over simple grids of assets.
All preview images and the thumbnail must be submitted inside a folder named previewImages
.
Thumbnail requirements:
- Size: 16:9 ratio. Example:
1280x720
or1920x1080
- File:
.png
- Name:
thumbnail.png
Previews of your assets: Extra images that display your pack to convince the user to purchase it. If you contribute a Free Asset Pack, preview assets are not mandatory.
- They can be from 1 to 9
- Must be named
preview1.png
,preview2.png
, ...,preview9.png
- Must be 16:9,
1280x720
or1920x1080
- File format in
.png
or.gif
License
Put a license.txt file in your 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.
Danger
Free asset packs with unclear licenses won't be accepted. In this case, you should get in touch with the author for clarifications and ask if they allow redistribution of their assets. The license must:
- Allow to Use the assets for free and for any purpose
- Allow modifications or derived work
- State if attribution is required or not
Adding tags to your assets
Tags allow creators to search your assets. These tags can be things like "side view," "pixel art," and so on. We recommend you use the Asset Store's existing tags.
Put all your images in a single folder, and inside that folder create a file called TAGS.md
. In this file, put the tags of the assets, separated by a comma. All tags must be singular, not plural. Start the file with one of these tags (depending on the type of pack): top-down
, side view
, or interface
.
For example:
side view, pirate, ship, sea
Tip:
- Folder names will be read as tags. Make sure to use plain English for each folder.
- You can put your images in different subfolders. Each subfolder will be used as a tag name. Some folder names like "PNG," "SVG," etc., will be ignored (so don't change the whole structure of your assets, we'll ignore anything that does not make sense).
- Note that you can put assets in a folder called
Unimplemented
,TODO
, andSOURCE FILE
if the packaging isn't completely done, or if you want to keep source files of the pack. These folders will be entirely hidden in the store but are useful for updates or edits on the pack.
Limitations
GDevelop have several limitation for now, as they are:
Note
- Sprite sheets are not supported yet! Each animation frame must be a separate image.
- Each animation image must have the same pixel size as the other animation states.
- GDevelop does not support image the origin point for different animations yet.
- Audio files are not yet supported within the
.gdo
format. Please place your audio files in anAudio
folder located in the same directory as your.gdo
file. Subsequently, compress both the.gdo
file and the Audio folder into a.zip
or.rar
archive for submission via the application form.
Package your art
Sprite
You can put them in a folder of your choice. You Still have to make sure to follow the naming best practices.
Static sprite
For unanimated Sprites, a single image with the name of the object is enough.
Chair.png
Sprites with animations or states
For animated sprites require multiple animated frames, which have to be named properly. While writing your file names, it is important that you follow a specific naming structure:
BaseName_AnimationState_frame#.png
For a character called "Red Hero," with 4 frames of a Running animation:
RedHero_Run_1.png
RedHero_Run_2.png
RedHero_Run_3.png
RedHero_Run_4.png
If the same character is carrying a prop, the naming should appear on the Animation State, not on the Character name.
RedHero_RunJewel_1.png
RedHero_RunJewel_2.png
RedHero_RunJewel_3.png
RedHero_RunJewel_4.png
Note on animation states:
If the animated object only has one animation state, there is no need to specify if the animation is "Walk, Idle, Climb, Death..." on the name. An animation index will do: Jewel_1.png
, Jewel_2.png
, Jewel_3.png
.
Assets with specific time duration
To specify FPS and looping for an animation, you'll need to add some metadata with the animations files.
Save the METADATA.json
file of your object with the following structure: BaseName_METADATA.json
// basename_METADATA.json
{
"timeBetweenFrames": 0.2,
"loop": false
}
If you have multiple animation states and each must have a different speed, create a .json
file per animation state, using this name: BaseName_AnimationState_METADATA.json
.
For example:
Spaceship_Idle_METADATA.json
Spaceship_Flying_METADATA.json
Spaceship_Destroyed_METADATA.json
- ...
Your file should look something like this:
If you are not sure about the number that "time between frames" will represent, this article explains it.
Tiled sprite
If you want to create a Tiled sprite (for backgrounds or repeating patterns):
Prefix the base name by tiled_
. For example: tiled_Grass Background.png
Panel sprite
A Panel sprite object can be stretched with the center and the border repeated.
In an image software, slice your image into 9 different images, and name them: 9patch_BaseName_gravity.png
with gravity being: southwest
, southeast
, south
, northwest
, northeast
, north
, west
, and east
.
All these files will be used by our server to generate a unique texture used in the 9-Patch object.
For example:
9patch_Grass_center.png
9patch_Grass_east.png
9patch_Grass_north.png
9patch_Grass_northeast.png
9patch_Grass_northwest.png
9patch_Grass_south.png
9patch_Grass_southeast.png
9patch_Grass_southwest.png
9patch_Grass_west.png
3D Box
3D Box are not yet supported for manual packaging. It must be integrated and configured in GDevelop then exported as .gdo
by a right-click on the object.
3D Models
Supported 3D file formats are:
- .glb
- .blend
- .gltf
- .obj
- .fbx
- .x3d
- .vrml
Animation names should be meaningful such as run
, jump
, idle
, etc.
Dimensions of 3d models must be consistent across a pack. For instance, props should fit characters hands.
The point of origin is important, it will be used as the position and rotation center of object in GDevelop.
Textures are supported only in format types that are contained, such as .glb
, .blend
, .fbx
.
Note
There's no need to add images preview for the models, the asset store will automatically generate them.
Tile map
Tile map are not yet supported for manual packaging. It must be integrated and configured in GDevelop then exported as .gdo
by a right-click on the object.
Fonts
Put the fonts in to a Font
folders.
Formats supported are:
- .ttf
- .otf
Package audio
Put your audio files .aac
, .wav
, .mp3
(prefer .aac
) directly in a Audio
folder, with the name to be displayed: Laser effect.aac
, Background music.aac
.
TAGS.md
files will work like for images. Subfolders are also used for tags as described for images.
Warning
🚨 Careful about the size! Players are sensitive to the size of a game download (especially on mobile and on the web). Try to keep music file sizes around 1 to 2 MB. In rare cases, these can be 4 or 5 MB, but not larger. Consider downgrading the quality a bit to keep the music files around these sizes.
Sound effects are usually even smaller. If a sound file is larger than 200 or 300 KB, consider downgrading the quality.
A great tool to convert audio files to AAC format is fre:ac. fre:ac is free, open-source, and cross-platform. It can process batches of files, with many options on how they are named and put into folders.
- Choose the encoder called "Fraunhofer FDK AAC Encoder".
- Select "File format > AAC"
- Select "Quality > Set Quality > 3"
This will create high-quality audio files, but using a variable bit rate that won't exceed 96 kbps (assuming stereo input).
Spine
Spine are not yet supported for manual packaging. It must be integrated and configured in GDevelop then exported as .gdo
by a right-click on the object.
Custom objects
Custom object (prefab) with and without variant(s) are not yet supported for manual packaging. It must be integrated and configured in GDevelop then exported as .gdo
by a right-click on the object.
2D & 3D Particules emitter
3D and 2D particle emitter with and without variant(s) are not yet supported for manual packaging. It must be integrated and configured in GDevelop then exported as .gdo
by a right-click on the object.