I’d like to take a minute to talk about something that’s been sorely missing from UE4 - naming convention enforcement (among other things). Any bigger project will eventually grow too big for humans to keep track of. Medium sized projects have hundreds of assets, and bigger ones can reach tens of thousands. Making sure that none of these assets break the project is difficult work, and two years into a project’s development it’s impossible to remember just which texture was used in a material that is now broken because of a broken texture reference.
This is why most big projects use automated tests and data validation. Unfortunately Unreal’s data validation falls short in a few departments. This is what this plugin aims to fix. It extends the default DataValidationManager and adds the following features:
1. Enforcing Naming Conventions
This is perhaps the single biggest addition. If someone creates a blueprint without a BP_ prefix the plugin will scream bloody murder the moment the asset is saved. Both prefixes and suffixes can be configured for various classes. Additionally, multiple valid entries can be specific. So for example, you want all of your textures to have the prefix T_ but valid suffixes include _BC, _N, _ORM etc. The configuration for that would simply be:
In addition you can also tell the plugin to either report violations as warnings or errors.
2. Validating Texture Settings
This one is a bit odd but we found it useful internally so I included it. Our artists routinely create textures for assets that include _ORM (Occlusion, Roughness, Metallic) textures which need to be configured to Masks compression and have sRGB turned off. A lot of times people miss this when importing textures so with the Advanced Data Validation plugin you can configure which compression and sRGB settings go with which texture suffix, so you can do for example:
Perhaps an oddly specific feature but I’m sure there are more people out there with this particular problem.
3. Validating LOD Settings
This one is simple - it can spit out warnings (or errors) if your static and skeletal meshes don’t have multiple LODs. In addition it can also do that if your textures have a LOD bias set to 0. Just as before, our artists create all their textures at 4k but most of the time we actually want the in-game texture to be smaller so we configure proper LOD bias for our textures. The plugin ensures that this is configured for every texture (all of these settings have whitelists to exclude specific assets)
4. Ensuring No Developers Folder References
I personally have to say that this is by far my favorite feature. Many times developers use the Developers/MyName folder as scratchpads - a place to create tests, experimental assets etc. These are most often configured to be excluded from packaging, and rightfully so. Unfortunately it still happens more often than not that a “final” assets ends up referencing a texture or material function from someone’s developer folder (ensuring that that asset won’t be cooked in a packaged game). The ADV plugin can warn you if such references exist so that they can be fixed.
Obviously this is just the beginning as more people will find more use-cases and things that can be validated. Off the top of my head, these are the features that will be added to the plugin in the future:
- Additional texture settings to validate - The current setup only validates compression and the sRGB textbox. This can be further extended to check other settings.
- Paths - Make sure that textures are in the /Game/Textures folder etc. Alternatively (or additionally) make sure that /Game/A/SomeMaterial doesn’t reference a texture in the /Game/B/ folder (i.e. that a given assets dependencies are all in the same top-level folder or something like that)
- Sound Classes - Make sure no sound assets use the default Master sound class (or that everything in the Audio/SFX folder uses the Sounds class etc.)
There are many more things that can be automated with this to make sure that as few errors slip through the cracks as possible. If you guys have any more ideas what you would like to see the plugin warn you about I will do my best to make sure it’s added ASAP.
Please let me know if you have any questions or suggestions!