Export
Exporting copies the files of a collection
into a folder, typically inside your game project, and writes two files next
to them: manifest.json, which lists what was copied, and CREDITS.md,
which lists the packs, licenses and authors to credit. Your library’s files
are only read, never changed.
For a walkthrough, see the Export a collection tutorial.
Start an export
Section titled “Start an export”Any of these opens the export dialog for a collection:
- Export… in the collection header (open the collection in the sidebar first).
- Right-click the collection in the sidebar and choose Export….
- Export current collection… in the command palette (Cmd/Ctrl+K), while the collection is open. With no collection open, the status bar says “Export: select a collection in the sidebar first.”
The export dialog
Section titled “The export dialog”
The title names the collection, with “N assets · size · from N packs” under it. Those numbers leave out archived assets.
Destination
Section titled “Destination”Type a folder path or click Choose… to pick one. The folder is created if it doesn’t exist. The dialog remembers the last destination you exported each collection to and fills it in next time.
Folder layout
Section titled “Folder layout”| Card | Where each file goes | Example |
|---|---|---|
| By type | A folder per asset type, named in lower case: texture, model_3d, audio, model_2d, shader, font, video, archive, doc, unknown. |
texture/stone_wall.png |
| Keep paths | The same path the file has inside its library folder. | textures/stone_wall.png |
| Flat | Straight into the destination, no subfolders. | stone_wall.png |
Each card previews the first entries it would create in the destination. By type is the default; after that, the dialog uses the layout of your last export.
If a file already exists
Section titled “If a file already exists”| Option | What happens when the target file is already there |
|---|---|
| Skip | The existing file is kept and the asset isn’t copied. The default. |
| Rename | The asset is copied under a new name with _1, _2, … before the extension (wood_planks_1.png). |
| Overwrite | The existing file is replaced. This can’t be undone. |
The dialog remembers your last choice. It checks the destination as you type and says what will happen, for example “2 files already exist and will be skipped.” or “No existing files will be touched.” On macOS and Windows, names that differ only in case count as the same file.
Name clashes inside the export. Two assets can end up with the same
target, such as two wood_planks.png from different packs with By type or
Flat. The note counts them separately (“1 file conflicts (1 share a name
in this export) and will be …”). The first one is copied; the policy decides
what happens to the next: Skip leaves it out, Rename saves it as
wood_planks_1.png, and Overwrite replaces the first copy with it, so
only one file is left. Keep paths avoids clashes unless both files have
the same path in different library folders.
Include archived assets
Section titled “Include archived assets”Include N archived assets adds the collection’s archived members to the export. It’s off every time you open the dialog, and reads No archived assets (disabled) when there are none.
Also written
Section titled “Also written”This section names the two extra files. The CREDITS.md line lists the packs
that will be credited (“Credits 2 packs: Stone and Wood Textures (CC0-1.0),
…”, showing each pack’s license line).

When some assets in the export have no license, a NO LICENSE warning says “N assets have no license and will be listed under “No License Detected” in CREDITS.md.” Fix… closes the dialog and opens the License fixer. Come back with Export… when you’re done. You can also export anyway.
Export
Section titled “Export”The button says how many files will be copied (Export 11 files). Under Skip, files that would clash aren’t counted. It’s disabled until there’s a destination and something to copy.
The export runs as soon as you click it; the dialog closes and the status bar reports “Exported N files (N skipped, N errors)”.
What gets copied
Section titled “What gets copied”- Each asset in the collection, as an exact copy of its file. Archived assets only when you include them.
- Nothing else. Files that belong with an asset aren’t picked up on their
own: an
.objmodel’s.mtlfile, or the textures a model uses, are only copied if they’re in the collection too. - Assets whose file is missing on disk, or whose library folder was removed, count as errors and aren’t copied.
manifest.jsonandCREDITS.mdare written at the top of the destination every time, replacing any earlier ones, whatever you chose under If a file already exists.
Exporting isn’t on the undo stack. Delete the exported files yourself if you need to.
manifest.json
Section titled “manifest.json”manifest.json describes the export and every file that was actually copied.
This is a real one, from a collection of five assets exported with By
type:
{ "assets": [ { "hash": "714af7e5fa31c775af8ddce92bb0d2ac8baf91c4463f0e7e182d4cb4a4390f6d", "name": "stone_wall.png", "size_bytes": 7125, "source": "textures/stone_wall.png", "tags": [ "dungeon", "tileable" ], "target": "texture/stone_wall.png", "type": "TEXTURE" }, { "hash": "4def744015d7f16f6b6615bc5ecc6a760dc592eb8dc97bb1e63713660c3ac707", "name": "mossy_ground.png", "size_bytes": 12344, "source": "textures/mossy_ground.png", "tags": [ "dungeon" ], "target": "texture/mossy_ground.png", "type": "TEXTURE" }, { "hash": "457336ae1317b223fbfbad5b4276228fff80d869bafec5c7bcf03862d73082ab", "name": "coin.svg", "size_bytes": 280, "source": "ui_icons/coin.svg", "tags": [], "target": "texture/coin.svg", "type": "TEXTURE" }, { "hash": "07e7a15b7df51e600099973c9eb9b40f34292245e1bbf101d34be1fdab97239e", "name": "magic_glow.png", "size_bytes": 927, "source": "particles/magic_glow.png", "tags": [], "target": "texture/magic_glow.png", "type": "TEXTURE" }, { "hash": "a197bb3411f09909f1b664bbebaf64eb70c15b7626e76bef14117483d6110198", "name": "spark.png", "size_bytes": 875, "source": "particles/spark.png", "tags": [], "target": "texture/spark.png", "type": "TEXTURE" } ], "collection": "Dungeon Level 1", "exported_at": 1794457456.86875, "stats": { "copied": 5, "errors": 0, "skipped": 0, "total": 5 }}Keys appear in alphabetical order, indented with two spaces.
| Field | Type | Meaning |
|---|---|---|
collection |
string | The collection’s name. |
exported_at |
number | When the export ran, in seconds since 1970-01-01 UTC (Unix time), with a fractional part. |
stats.copied |
integer | Files copied. |
stats.skipped |
integer | Assets not copied because the target existed and the policy was Skip. |
stats.errors |
integer | Assets that couldn’t be copied (file missing, folder removed, write failed). |
stats.total |
integer | Assets the export tried: the collection’s members, plus archived ones if included. |
assets |
array | One entry per copied file, in collection order. Skipped and failed assets aren’t listed. |
assets[].source |
string | The file’s path inside its library folder, with / separators. |
assets[].target |
string | Where it was written, relative to the destination, after any rename (texture/wood_planks_1.png). |
assets[].name |
string | The file name. |
assets[].type |
string | The asset type: TEXTURE, MODEL_3D, MODEL_2D, AUDIO, SHADER, FONT, VIDEO, ARCHIVE, DOC or UNKNOWN. |
assets[].size_bytes |
integer | File size in bytes, as of the last scan. |
assets[].hash |
string | SHA-256 of the file’s contents in hex, as of the last scan. "" if the file hasn’t been hashed yet. |
assets[].tags |
array of strings | The asset’s tag names, alphabetically. |
Use source and hash to find where a file came from, or to tell whether a
re-export would bring in a changed file.
CREDITS.md
Section titled “CREDITS.md”CREDITS.md is a Markdown file meant to go in your game’s credits, or to be
pasted into them. It covers every asset the export tried, including ones
that were skipped because they already existed. This is the real one written
next to the manifest.json above:
# Credits
## Stone and Wood Textures**Author:** Salaryman Inc.**License:** CC0 1.0 Universal
Assets:- mossy_ground.png- stone_wall.png
---
## LICENSE.txt
CC0 1.0 Universalhttps://creativecommons.org/publicdomain/zero/1.0/
Stone and Wood Textures: these files were made by Salaryman Inc. as demo content for the SalarymanAsset Manager documentation. To the extent possible under law, Salaryman Inc.has waived all copyright and related or neighboring rights to them. You cancopy, modify, distribute and use them, even for commercial purposes, allwithout asking permission. Credit is appreciated but not required.
## ui_icons
# UI icons
Five flat icons for menus and HUDs.
License: CC0 1.0 (public domain dedication).
---
## Own Work
No attribution required.
Assets:- magic_glow.png
---
## No License Detected
Assets:- spark.pngIt’s built from up to four kinds of sections, in this order, with a ---
line between kinds:
- One section per pack, in the order the packs were added:
## Pack name, then**Author:**,**Source:**and**License:**lines (each only when that field is filled in; the license is its first line), thenAssets:and the file names, alphabetically. - One section per license file used by the exported assets (found by a scan or chosen in the License fixer), headed by the folder the file is in, relative to its library folder, or by the file’s name when it’s at the top of the library folder (a file you chose outside your library folders is headed by its folder’s name). The section holds the file’s full text. Assets in a pack get both their pack section and their license file’s section.
- Own Work: assets you marked as your own work in the License fixer that aren’t in a pack, under “No attribution required.”
- No License Detected: every exported asset that is unlicensed. The export dialog warns about these before you export.
Before you ship, make sure the No License Detected section is gone, and read the license sections: some licenses ask for specific wording in your credits.
