Skip to content

Validators Reference

Terro Fergius edited this page Jun 3, 2026 · 4 revisions

Validators Reference

All rules, what they check, their defaults, and configuration properties.

Rule IDs are stable identifiers you can use in CI output, JSON reports, and config overrides.

Priority levels: P0 = critical (pipeline-breaking), P1 = major, P2 = minor, P3 = info.

Note: All checks can be toggled per-validator in your ASVCheckerConfig DataAsset. See Configuration for setup.

Naming Convention

Class: UASVValidator_NamingConvention. Checks asset names against Allar's UE5 Style Guide prefix/suffix/pattern conventions. Works via asset registry tags — no asset loading required.

Panel detail view — one violation traced from rule to validator to config to setting, with Navigate

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 starts with a placeholder/junk word: New, Default, Untitled, Copy, Temp, Test, Example, Template, Placeholder 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

Common prefixes (built-in defaults)

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_

The full list (80+ types) follows Allar's UE5 Style Guide. Override or extend via DefaultClassPrefixes or ClassRules.

Custom class prefixes

For project-specific asset types (e.g. GA_ for Gameplay Abilities, GE_ for Gameplay Effects, GC_ for Gameplay Cues):

  1. Open Content/Data/DA_ASV_AllarStyleGuide
  2. Expand ASVValidator_NamingConvention in the Validators list
  3. Under Class Rules, click + to add a new entry
  4. Set Class Picker to the parent class (e.g. UGameplayAbility) — all Blueprint subclasses will match automatically via IsChildOf
  5. Set Prefix to GA_
  6. Optionally set Suffix or Target Folders

Tip: Use Default Class Prefixes (a key/value map on the same validator) for simpler cases where you only need a class name → prefix mapping and don't need inheritance matching. Example: add "GameplayEffect_C" → "GE_".

Folder Structure

Class: UASVValidator_FolderStructure. Checks that assets are in the expected folder for their class, and that folder names follow 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 is inside /Game/Developers/ — should not ship to production On — P2 bCheckDevelopersFolder No

Note: folder_disallowed_name is off by default because many existing projects use generic folder names. Enable it for new projects or when enforcing stricter standards.

To enable: open DA_ASV_AllarStyleGuide → expand ASVValidator_FolderStructure → set bCheckDisallowedNames = true and add names to DisallowedFolderNames (e.g. Assets, Meshes, Textures).

Texture

Class: UASVValidator_Texture. Reads texture properties from asset registry tags — no full asset load required for most checks.

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 — must reimport at correct size
texture_exceeds_max_size Texture dimension exceeds MaxTextureSize (default 8192) On — P0 bCheckMaxSize, MaxTextureSize No — must reimport at smaller size
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

Suffix-based type detection

The texture validator detects type from the asset name suffix:

Suffix Type sRGB Compression
_D, _C, _Albedo, _BC Diffuse / Color On BC1/BC3 (default)
_N, _NRM, _Normal Normal map Off TC_NormalMap
_M, _R, _S, _Mask Mask / Roughness / Metallic Off TC_Masks
_E, _Emissive Emissive On BC3 (default)
_ARM, _ORM Packed channel (AO/R/M) Off TC_Masks
_UI UI texture On TC_EditorIcon

Blueprint

Class: UASVValidator_Blueprint. Loads each Blueprint to inspect variable definitions and compilation state. Slower than tag-only checks — prefer OnSave trigger.

Variable naming

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 — prefer bDead over bIsDead (Allar 3.2.1.4) 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 (e.g. ScoreFloat — use Score instead) (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

Variable metadata

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 uses the Config flag — BPs 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

Compilation

Rule ID What it checks Default Config property Auto-fix
blueprint_compile_error Blueprint has compilation errors (BS_Error state) On — P0 bCheckCompilation No

Note: var_array_not_plural and var_missing_type_name are off by default — they produce many false positives on real projects and require the team to adopt strict naming conventions first.

To enable: open DA_ASV_AllarStyleGuide → expand ASVValidator_Blueprint → set bCheckArrayPlural or bCheckComplexTypeName to true.

Static Mesh

Class: UASVValidator_Mesh. Loads UStaticMesh to inspect collision, LODs, and Nanite settings.

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 mesh editor
mesh_no_lods Mesh above MinTriCountForLOD triangles has only one LOD level Off — P2 bCheckLODs, MinTriCountForLOD (default 5000) No — set up LODs in mesh editor or via auto-LOD
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_policy is off by default. Enable it only when your project has a firm Nanite policy — it will flag every mesh above the triangle threshold that doesn't comply.

To enable: open DA_ASV_AllarStyleGuide → expand ASVValidator_Mesh → set bCheckNanite = true, choose NanitePolicy (MustEnable / MustDisable / AllowAny), and optionally adjust MinTriCountForNanite (default 10 000).

Asset Health

Class: UASVValidator_AssetHealth. Checks general asset health — stale redirectors, potentially more in future versions. Reads from the asset registry without loading assets.

Rule ID What it checks Default Config property Auto-fix
stale_redirector An ObjectRedirector asset exists at this path — left over from a rename or move that was never cleaned up On — P1 bCheckRedirectors Yes — runs Fix Up Redirectors (same as right-click in Content Browser)

Clone this wiki locally