TLDR: what are the pros and cons of using a naming convention for tagging and sorting game assets?
- for the UI to search and handle it
- for devs and gamers to move files around
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.
This has to be organised well to avoid issues later on, and for the UI to be able to handle it in a user friendly way.
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.
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
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
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.