Asset dumps
Ask your assistant to snapshot an asset, or a whole content folder, as readable text files. Your assistant then works from what your assets really contain, and you can read, search and compare them without opening the editor.
What it is
A .uasset is a binary file you can normally only read by opening it in the editor. A dump mirrors your content tree on disk as text: 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 was actually set and skip the engine defaults.
Why use it
- Read an asset's real state as text, without clicking through editor panels.
- Give your assistant an accurate, current picture of your project, so its changes start from what is really there.
- Snapshot an asset or folder before a change and compare afterward to see what moved.
- Snapshot a whole folder once, then look things up in it as often as you like.
Note: a reading aid
Dumps help you and your assistant understand your project. They don't replace source control. A dump reflects the saved package on disk, not unsaved edits open in the editor. Save first, or re-run the dump, when you need it current.Run a dump
Ask your assistant in plain language. It runs the dump and waits for it to finish.
You: Snapshot everything under /Game/UI so you know what widgets we have.
Done. Dumped 38 assets under /Game/UI.Point it at one folder (/Game/UI), the whole project (/Game), or a single asset. Dumping only reads. It writes text files to disk and changes nothing in your project.
Note: it can take a while
A small folder dumps in a minute or two. A full/Game on a large project can take tens of minutes, because every asset has to be loaded and written out. Your assistant waits for it and tells you when it is done, and you can keep working meanwhile.For a single asset you can also ask for a change file next to the snapshot, or a preview image of a widget. For a folder you can choose whether to include subfolders and levels.
What you get
The dump root defaults to <YourProject>/Saved/PinWright/asset-dumps/ and mirrors package paths. A Blueprint dump folder looks like this:
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.
Keeping dumps fresh
A folder dump only rewrites assets whose saved content changed since the last dump (it keeps track in a .dumpcache.json file beside the snapshots). To get a fresh one:
- Folder: ask your assistant for a fresh, forced dump of the folder.
- Single asset: ask again. A single-asset dump always reads the asset anew.
- 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 → PinWright → 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).