unreal 4 – How to set up a sorting and tagging system for game assets in a moddable game?


I am building a game that is designed to be moddable under UE4.

I am going to have tons of assets (clothes, hairs, jewleries and their textures materials and whatnot) to deal with.

Eventually the game has to be localized for a bunch of non-latin character systems, too.

The easiest way would be to use a prefix/suffix system when naming the assets, which would come in the game in as Blueprints, containing the asset and some extra data as well. This would be a requirement for modders.

For example:

tag_othertag_clothname.uasset
tag          |name        

And then all I do is just search tru the name of the asset. I feed it the text the user typed for the name part, and the tags as strings for the tag part, and than hide the tag part from the user.

I set up a test scene and it does work ok with 500 assets, running the search every time you hit a button.

Later on I can store tag data in json or just as a plain string in the Blueprint.

The issue is that as the number of tags grow, the length of the string grows too, which can be a problem later on.

I thought about using strings and json files to store the tagging data in the Blueprint as well.

I would like to have 2 categories of tags by default

  1. region or body part: head, torso etc —> makes searching and
    categorizing very easy but not as efficient, can be appied to nearly all asset types

  2. asset type: cloth, jewlery, armour, etc

My questions are:

In your experience

  • are there pitfalls of using a prefix suffix system, for example security, performance, ease of use etc? if yes what are they?
  • what are the alternatives – I thought of using databases, but I don’t have much experience with them, not sure which one works best with a high number of Blueprints, I saw quite a few on the Marketplace…

I ‘d like to make it as simple as it can be, no overcomplication or overengineering.
I just want it to be usable, user friendly and easily extendable as the project grows.