[Feature Request], replace various UAssets with a text based importer.

It’s on my mind to make this myself, just need to check what the content browser supports. Unless I’m missing something else this feature doesn’t actually seem a big request for most data types. The importers exist already.

Definitions:

  • UAsset: (idea) Becomes a cached file in the new BuiltContent folder, read only. Folder excluded from Git. Binary.

  • SC: SoureContent file, data made from within the editor (datatable etc.) to build into UAsset when saved. Text based. Only exists for files made within the editor.

  • SCI: SourceContentImport file, used to build source as UAsset. Text based.

The SCI contains:

  1. A path to SourceContent.
  2. Any property + value if different from defaults.
  3. Importer instructions if different from defaults.

Concept

As a plugin perhaps an engine subsystem could listen to when an asset is requested or when one is failed to be retrieved. An asset should be looked up in this order: UAsset in BuiltContent, SC in Content, SCI in content. If the SCI step is reached and source file is found it will initiate the import process. After the import process all you need is a retry on finding the asset once more as UAsset. SC is not created by the importer.

Challenges

  • Use the original UAsset editor as a front to create text based SC assets with. This is preferred as shown property names often differ from c++ names and without access to UAsset files we would otherwise not be aware of any properties.

  • Assets which are too deeply tangled with the engine can be excluded for now by data types. Think of animation assets with hundreds of fragile event / skeleton / sound references. Sound files, textures, meshes etc should be very much doable.

  • Some work might need to be done on the redirector system and asset renaming system so we can rename the entire set of UAsset SC and SCI from one place.

  • Changes made to a UAsset by the engine must be reflected back to the SC file. This can easily be done, there are delegates for this.

  • If all works well and there is found no further reason to have a UAsset, deprecate the UAsset extension.

Something else but wrapping excel sheets in a binary file (UDataTable) is just too cursed. I’m a big fan of having my data to set up objects in text sheets, it’s just so easy to modify and calculate proper numbers. Especially if you need to rebalance things like EXP over 500 character levels or item spawn chances per faction and similar stuff. At least I would want to be able to diff that in 2024.

1 Like