Asset dumps
Write the full state of an Unreal asset, or a whole content folder, to disk as readable text:
JSON for properties and structured data, and text for graph assets like Blueprints and materials.
It turns opaque .uasset binaries into something you and your assistant can read,
grep, and compare.
What it is
A .uasset is a binary blob you can normally only inspect by opening it in the editor.
A dump mirrors your content tree on disk: the package /Game/UI/WBP_HUD becomes a
folder Game/UI/WBP_HUD/ holding per-aspect sidecar files (meta.json,
properties.json, bpir.txt, tree.xml, and so on).
properties.json lists only the values that differ from the class default, so you
see what is actually authored, not engine boilerplate.
Why use it
- Inspect an asset's real state as text, instead of clicking through editor panels.
- Give your assistant accurate, current context, so its edits are based on what the asset actually contains rather than a guess.
- Snapshot an asset or folder before a change and compare afterward to see what moved.
- Sweep a whole folder once, then read the results cheaply many times.
Run a dump
You just ask your assistant in plain language; it runs the dump and waits for it to finish.
You: Dump everything under /Game/UI so you can see the current widgets. The assistant runs: asset.dump_folder /Game/UI ... writing a text snapshot of each asset ... Done. Dumped 38 assets under /Game/UI.
Point it at one folder (/Game/UI), the whole project (/Game), or a single
asset. Dumping is read-only: it writes text files to disk and changes nothing in your project.
/Game on a
large project can take tens of minutes, because every asset has to be loaded and serialized. Your
assistant waits for it and tells you when it is done, and you can keep working meanwhile.
Under the hood your assistant uses two operations: asset.dump for a single asset (with
options to also write a change file or a widget preview image) and asset.dump_folder to
sweep a folder (with options for recursion, including levels, and forcing a fresh re-dump). You do
not call these yourself.
What you get
The dump root defaults to <YourProject>/Saved/EditorAutomation/asset-dumps/ and
mirrors package paths. A Blueprint dump folder looks like this:
asset-dumps/Game/Drone/BP_DroneCharacter/
meta.json class, parent, kind, and the list of files written
properties.json only values overridden from the class default
bpir.txt the Blueprint graphs, decompiled to text
scs.json the component tree
The sidecars vary by asset type: Blueprints get bpir.txt, materials get
mgir.txt, Widget Blueprints get tree.xml and
widget_animations.json, Niagara gets nir.txt plus a few JSON files,
levels get a world_settings.json and an actors/ folder, and textures,
static meshes, data tables, and sound each get a typed JSON. meta.json always lists
exactly which files were written. If an asset fails to load, its folder holds only a
meta.json marked "skipped": true, so check that before reading the rest.
Freshness and forcing a re-dump
A folder sweep is incremental: it skips assets whose saved content has not changed since the last
dump (tracked in a private .dumpcache.json beside the sidecars). To force a fresh dump:
- Folder: pass
force=truetoasset.dump_folder. - Single asset: just call
asset.dumpagain. It always re-inspects and rewrites. - Or delete the asset's dump folder.
Editing an asset in the editor without saving marks it dirty, which also forces a re-dump on the next sweep.
Configuration
Set the dump root under Edit → Editor Preferences → Plugins → Editor Automation RPC Gateway → Asset Dump Root Directory (absolute, or relative to the project).
Limitations
- Binary content is not exported. You get structured metadata (
texture.json,static_mesh.json), not pixels, vertices, or audio samples. The only image written is the opt-in widgetpreview.png. - It reflects the saved package, not unsaved live editor state.
- On Windows, very deep package paths can exceed the 260-character path limit and are skipped (the layout is literal, not hashed).
- A full-project baseline can be large (hundreds of MB). Keep the dump tree out of your main repo, or gitignore the diff residue (
*_new.*,*_diff.txt,*.tmp).