-
Notifications
You must be signed in to change notification settings - Fork 1
Validators Reference
Every rule, what it looks at, whether it ships on, and the property that controls it.
Rule IDs do not change between versions. You can rely on them in CI output, in JSON reports and in config.
Priorities run P0 for things that break the pipeline, P1 for major, P2 for minor, P3 for information. Each rule carries its own, and you can change it in the config.
Note: Every check here is a property on its validator inside your
ASVCheckerConfigasset. Configuration shows where to click.
Class UASVValidator_NamingConvention. Checks names against the prefix, suffix and pattern conventions from Allar's UE5 Style Guide. It reads asset registry tags, so nothing gets loaded and a full pass stays cheap.

| Rule ID | What it checks | Default | Config property | Auto-fix |
|---|---|---|---|---|
missing_prefix |
Asset name doesn't start with the required prefix for its class (e.g. BP_, T_, SM_) |
On · P0 |
bCheckPrefix, DefaultClassPrefixes, ClassRules
|
Yes, renames asset, adds prefix |
duplicate_prefix |
Prefix is repeated in the name (e.g. BP_BP_MyActor) |
On · P0 |
bCheckPrefix, DefaultClassPrefixes
|
Yes, renames, removes duplicate |
missing_suffix |
Required suffix for the class is absent (e.g. _SC for SoundConcurrency) |
On · P1 |
bCheckSuffix, DefaultClassSuffixes
|
Yes, renames, adds suffix |
missing_allowed_suffix |
World asset doesn't end with one of the allowed level suffixes (_P, _Audio, _Lighting, _Geo, _Gameplay) |
On · P1 |
bCheckAllowedSuffix, ClassRules[].AllowedSuffixes
|
Yes, renames, adds first allowed suffix |
name_pattern_mismatch |
Name doesn't match the regex pattern or contains a disallowed substring (__, -) |
Off · P1 |
bCheckNamePattern, NamePattern, DisallowSubstrings
|
No |
non_ascii_name |
Asset name contains non-ASCII characters (Cyrillic, CJK, etc.) | Off · P1 | bCheckNonAsciiName |
No |
junk_name |
Name contains a placeholder/junk word anywhere (start, middle or end): New, Default, Untitled, Copy, Temp, Test, Example, Template, Placeholder. Matched as a whole word, so Temple and Latest are left alone |
Off · P1 |
bCheckJunkName, DisallowedNames
|
Yes, strips junk word when a meaningful name remains |
wrong_case |
A word segment in the asset name starts with a lowercase letter (e.g. T_cross instead of T_Cross). Skipped when the prefix itself is missing to avoid double-flagging. |
Off · P2 |
bCheckPascalCase, PascalCasePriority
|
Yes, capitalizes first letter of each name segment |
| Asset type | Prefix | Asset type | Prefix |
|---|---|---|---|
| Blueprint | BP_ |
Widget Blueprint | WBP_ |
| Animation Blueprint | ABP_ |
Function Library | BPL_ |
| Static Mesh | SM_ |
Skeletal Mesh | SK_ |
| Material | M_ |
Material Instance | MI_ |
| Texture / Texture2D | T_ |
Render Target | RT_ |
| Sound Wave | S_ |
Sound Cue | SC_ |
| Niagara System | NS_ |
Particle System | PS_ |
| Data Asset | DA_ |
Data Table | DT_ |
| Enum | E_ |
Struct | F_ |
| World (Level) | L_ |
Level Sequence | SEQ_ |
There are 80+ types in the full list, taken from Allar's UE5 Style Guide. Change any of them, or add your own, in DefaultClassPrefixes or ClassRules.
For project-specific asset types (e.g. GA_ for Gameplay Abilities, GE_ for Gameplay Effects, GC_ for Gameplay Cues):
- Open
Content/Data/DA_ASV_AllarStyleGuide - Expand ASVValidator_NamingConvention in the Validators list
- Under Class Rules, click + to add a new entry
- Set Class Picker to the parent class,
UGameplayAbilityfor instance. Every Blueprint subclass matches on its own throughIsChildOf, so you list the parent once. - Set Prefix to
GA_ - Optionally set Suffix or Target Folders
Tip: Default Class Prefixes on the same validator is a plain key/value map: class name on one side, prefix on the other. Use it when you do not need inheritance, for example
"GameplayEffect_C"with"GE_".ClassRulesis the one that follows subclasses.
Class UASVValidator_FolderStructure. Checks that an asset sits in the folder its class belongs in, and that the folder names themselves follow the project's path conventions.
| Rule ID | What it checks | Default | Config property | Auto-fix |
|---|---|---|---|---|
wrong_folder |
Asset is not under any of the allowed folders for its class (e.g. a Material outside Materials/) |
On · P0 |
bCheckWrongFolder, ClassRules
|
Yes, moves asset to best matching folder |
folder_contains_unicode |
A folder segment contains non-ASCII characters | On · P0 | bCheckUnicode |
No |
folder_not_pascal_case |
A folder segment starts with a lowercase letter or contains underscores | Off · P1 | bCheckPascalCase |
No |
folder_disallowed_name |
A folder has a generic/redundant name: Assets, AssetTypes, Meshes, Textures, Materials
|
Off · P1 |
bCheckDisallowedNames, DisallowedFolderNames
|
No |
folder_in_developers |
Asset sits in /Game/Developers/, which is a scratch area and should not ship |
On · P2 | bCheckDevelopersFolder |
No |
Note:
folder_disallowed_nameships off. Plenty of existing projects are full of folders called Assets or Meshes, and turning this on there gives you a wall of results. It suits a new project, or one that has already been cleaned up.
To turn it on: openDA_ASV_AllarStyleGuide, expand ASVValidator_FolderStructure, tickbCheckDisallowedNamesand put the names you do not want intoDisallowedFolderNames.
Class UASVValidator_Texture. Most of it runs off asset registry tags, so textures are not loaded to be checked.
Render targets and a few other generated types are skipped: ExcludeClasses ships with TextureRenderTarget2D, TextureRenderTargetCube, TextureLightProfile, MediaTexture and RenderTarget in it. Add your own types there if a check keeps firing on something it should not.
| Rule ID | What it checks | Default | Config property | Auto-fix |
|---|---|---|---|---|
texture_not_power_of_two |
Texture width or height is not a power of two (required for mipmaps and some GPU formats) | Off · P1 | bCheckPowerOfTwo |
No, the texture has to be reimported at the right size |
texture_exceeds_max_size |
Texture dimension exceeds MaxTextureSize (default 8192) |
On · P0 |
bCheckMaxSize, MaxTextureSize
|
No, the texture has to be reimported smaller |
texture_wrong_srgb |
sRGB flag doesn't match texture type. Color textures (_D, _C, _Albedo) must have sRGB on; data textures (_N, _M, _R, _ARM) must have it off. |
Off · P1 | bCheckSRGB |
Yes, sets correct sRGB flag |
texture_wrong_compression |
Compression settings don't match texture type by suffix (e.g. normal maps should use TC_NormalMap) |
Off · P2 | bCheckCompression |
Yes, sets correct compression |
texture_wrong_group |
LOD group doesn't match expected for texture type (e.g. UI textures should use TEXTUREGROUP_UI) |
Off · P2 |
bCheckTextureGroup, ExpectedTextureGroup
|
Yes, sets correct LOD group |
Texture type comes from the name suffix. These are the suffixes the validator actually knows, and what each one implies:
| Suffix | sRGB | Compression | Texture group |
|---|---|---|---|
_D |
on | not checked | TEXTUREGROUP_World |
_BC |
on | not checked | not checked |
_E |
on | not checked | not checked |
_N |
off | TC_Normalmap |
TEXTUREGROUP_WorldNormalMap |
_M |
off | TC_Masks |
not checked |
_Mask |
off | TC_Masks |
not checked |
_R |
off | TC_Grayscale |
not checked |
_AO |
off | TC_Grayscale |
not checked |
_H |
off | TC_Grayscale |
not checked |
_DP |
off | not checked | not checked |
_ORM |
off | not checked | not checked |
_RMA |
off | not checked | not checked |
_UI |
not checked | not checked | TEXTUREGROUP_UI |
Note: A texture whose name ends in something else is invisible to these three checks. There is no guessing from content, so if your project writes
_Normalor_Albedoinstead of_Nand_D, either rename them or add your suffixes toNonColorSuffixes,ColorSuffixes,ExpectedCompressionandExpectedTextureGroupon the validator.
Class UASVValidator_Blueprint. This one has to load each Blueprint to read its variables and its compile state, which costs a lot more than the tag-only checks. On a big project lean on the OnSave trigger and keep full Blueprint passes for when you actually want them.
| Rule ID | What it checks | Default | Config property | Auto-fix |
|---|---|---|---|---|
bp_bool_no_prefix |
Boolean variable doesn't start with b (Allar 3.2.1.3) |
Off · P1 | bCheckBoolPrefix |
Yes, renames, adds b prefix |
bp_bool_is_pattern |
Boolean uses bIs, bHas, bCan pattern. Allar 3.2.1.4 prefers bDead over bIsDead. |
Off · P2 | bCheckBoolIsPattern |
Yes, renames, removes Is/Has/Can
|
bp_var_not_pascal_case |
Variable name doesn't start with an uppercase letter (Allar 3.2.1.2) | Off · P1 | bCheckPascalCase |
Yes, capitalizes first letter |
bp_var_atomic_type_name |
Variable name contains atomic type in the name such as ScoreFloat where Score would do (Allar 3.2.1.6) |
Off · P2 | bCheckAtomicTypeName |
No |
bp_var_redundant_context |
Variable name repeats the Blueprint class name (e.g. PlayerHealth in BP_Player) (Allar 3.2.1.5) |
Off · P2 | bCheckRedundantContext |
No |
var_array_not_plural |
TArray variable name is not plural (e.g. Enemy should be Enemies) (Allar 3.2.1.8) |
Off · P2 | bCheckArrayPlural |
No |
var_missing_type_name |
Struct/Object variable doesn't include the type name (e.g. Hit instead of HitResult) (Allar 3.2.1.7) |
Off · P2 | bCheckComplexTypeName |
No |
| Rule ID | What it checks | Default | Config property | Auto-fix |
|---|---|---|---|---|
bp_editable_missing_tooltip |
Editable variable (EditAnywhere / EditDefaultsOnly) has no tooltip (Allar 3.2.2.1) | Off · P2 | bCheckEditableTooltips |
No |
bp_editable_missing_range |
Editable numeric variable has no ClampMin/ClampMax range defined (Allar 3.2.2.2) | Off · P3 | bCheckEditableRanges |
No |
bp_var_config_flag |
Variable has the Config flag set. Blueprints should not use Config (Allar 3.2.8). | Off · P1 | bCheckConfigFlag |
No |
bp_vars_uncategorized |
Blueprint has more than UncategorizedVarThreshold editable variables with no category (Allar 3.2.3) |
Off · P3 |
bCheckUncategorizedVars, UncategorizedVarThreshold (default 5) |
No |
| Rule ID | What it checks | Default | Config property | Auto-fix |
|---|---|---|---|---|
blueprint_compile_error |
Blueprint has compilation errors (BS_Error state) | On · P0 | bCheckCompilation |
No |
blueprint_compile_warning |
Blueprint compiles with warnings (the BS_UpToDateWithWarnings state), usually deprecated nodes left behind by an engine upgrade | Off · P2 | bCheckCompileWarnings |
No |
Note:
var_array_not_pluralandvar_missing_type_nameship off. On real projects they fire on a lot of variables that are fine, and they only make sense once the team has agreed on the naming they enforce.
To turn them on: openDA_ASV_AllarStyleGuide, expand ASVValidator_Blueprint, tickbCheckArrayPluralorbCheckComplexTypeName.
Class UASVValidator_Mesh. Loads the UStaticMesh to look at collision, LODs and Nanite.
| Rule ID | What it checks | Default | Config property | Auto-fix |
|---|---|---|---|---|
mesh_no_collision |
Static mesh has no collision geometry (no simple or complex collision set up) | Off · P1 | bCheckCollision |
No, add collision in the mesh editor |
mesh_no_lods |
Mesh above MinTriCountForLOD triangles has only one LOD level |
Off · P2 |
bCheckLODs, MinTriCountForLOD (default 5000) |
No, set LODs up in the mesh editor or let auto-LOD do it |
mesh_nanite_policy |
Mesh Nanite state doesn't match project policy (MustEnable, MustDisable, or AllowAny). Triangle threshold applies for MustEnable. |
Off · P2 |
bCheckNanite, NanitePolicy, MinTriCountForNanite (default 10000) |
Yes, enables or disables Nanite per policy |
Note:
mesh_nanite_policyships off, and the policy behind it does not:NanitePolicydefaults to Must Enable. Tick the check before the project has decided and every mesh over the threshold turns into a result.
To turn it on: openDA_ASV_AllarStyleGuide, expand ASVValidator_Mesh, tickbCheckNanite, pick theNanitePolicyyou want out of Must Enable, Must Disable and Allow Any, and setMinTriCountForNaniteif 10 000 triangles is not your line.
Class UASVValidator_AssetHealth. Right now this means stale redirectors; more health checks will land here later. Reads the asset registry, loads nothing.
| Rule ID | What it checks | Default | Config property | Auto-fix |
|---|---|---|---|---|
stale_redirector |
An ObjectRedirector is sitting at this path, left behind by a rename or move that nobody cleaned up |
On · P1 | bCheckRedirectors |
Yes, runs Fix Up Redirectors (same as right-click in Content Browser) |
This page is generated from the in-editor documentation. Do not edit it here. Edit Plugins/AssetStandardsValidator/Content/Docs/*.html and regenerate.