NsBonsai keeps asset names in one pattern. When you add, import, or rename an asset and then save it, NsBonsai puts the asset in a review window. In the window, you pick the parts of the name, read the final name, and rename or ignore the asset. The default pattern is <Type>_<Domain>_<Category>_<AssetName>_<Variant>, for example SM_Foliage_Tree_Birch_A.
NsBonsai renames an asset only when you confirm it. It writes no metadata into assets, does not move assets to other folders, and does not scan the whole project. It is an editor module and is not part of a packaged game.
BP_Environment_Rock_Cliff_02 (StaticMesh) gives SM_Environment_Rock_Cliff_02_A. The wrong type token goes.t_ui_Icon_HeartOutline (Texture2D) gives T_UI_Icon_HeartOutline_A. The alias ui becomes UI.Props_Furniture_Chair_Wooden_FINAL (StaticMesh) gives SM_Props_Furniture_Chair_Wooden_A. The type token comes first. FINAL is all capitals, so it counts as an old variant and goes.Audio_UI_Click__03 (SoundWave) gives S_Audio_UI_Click_03_A. The double underscore goes.SM_Foliage_Tree_Birch_A (StaticMesh) gives SM_Foliage_Tree_Birch_A. The name is already in the pattern.Boulder_big_01 (StaticMesh) gives SM_AI_Behavior_Boulder_big_01_A. The old name has no domain, so the window selects the first domain from A to Z. Pick the domain.Config/DefaultNsBonsai.ini| Class | Type token |
|---|---|
| /Script/Engine.StaticMesh | SM |
| /Script/Engine.SkeletalMesh | SK |
| /Script/Engine.Skeleton | SKEL |
| /Script/Engine.PhysicsAsset | PHYS |
| /Script/Engine.Material | M |
| /Script/Engine.MaterialInstance | MI |
| /Script/Engine.MaterialFunction | MF |
| /Script/Engine.MaterialParameterCollection | MPC |
| /Script/Engine.Texture | T |
| /Script/Engine.Texture2D | T |
| /Script/Engine.TextureCube | TC |
| /Script/Engine.TextureRenderTarget2D | RT |
| /Script/Engine.TextureRenderTargetCube | RTC |
| /Script/Engine.ParticleSystem | PS |
| /Script/Niagara.NiagaraSystem | NS |
| /Script/Niagara.NiagaraEmitter | NE |
| /Script/Engine.AnimSequence | AS |
| /Script/Engine.AnimMontage | AM |
| /Script/Engine.AnimBlueprint | ABP |
| /Script/Engine.BlendSpace | BS |
| /Script/Engine.AimOffsetBlendSpace | AO |
| /Script/LevelSequence.LevelSequence | LS |
| /Script/Engine.DataTable | DT |
| /Script/Engine.CurveFloat | C |
| /Script/Engine.CurveVector | C |
| /Script/Engine.CurveLinearColor | C |
| /Script/Engine.CurveTable | CT |
| /Script/Engine.Font | Font |
| /Script/UMGEditor.WidgetBlueprint | WBP |
| /Script/Engine.SoundWave | S |
| /Script/Engine.SoundCue | SC |
| /Script/Engine.SoundAttenuation | SA |
| /Script/MetasoundEngine.MetaSoundSource | MSS |
| /Script/AIModule.BehaviorTree | BT |
| /Script/AIModule.BlackboardData | BB |
| /Script/AIModule.EnvQuery | EQS |
| /Script/EnhancedInput.InputAction | IA |
| /Script/EnhancedInput.InputMappingContext | IMC |
| /Script/Engine.Blueprint | BP |
Domains and their categories:
Aliases (token normalization):
FoliageProps to FoliageChars to CharacterChar to CharacterUi to UIui to UIVfx to VFXFx to VFXfx to VFXWhen the settings load, the alias Fx turns the domain FX into VFX. NsBonsai then removes it as a copy of VFX.
The demo has no other assets and no recent picks. Thus the variant is always A, and the domain and category lists are in A to Z order. At rename, NsBonsai takes the first free variant.
NsBonsai folder into the Plugins folder of your project.Foliage.Tree and Rock.The plugin ships 39 Type Rules in its Config/DefaultNsBonsai.ini. Add a rule only for an asset class that is not in the list.
These assets go to the window even if their names already match the pattern.
This also adds new assets that you did not save yet. If the queue is empty, a notification shows “NsBonsai review queue is empty”.
The value goes to all selected rows. A new domain clears the category and selects the first category of that domain.
NsBonsai adds the token to the project settings and saves them. A new category goes to the domain of the row, or to Global Categories when domains are off.
AI, UI, UX, HUD, VFX, SFX, FX, NPC, LOD, IK, and FK.NsBonsai removes the row and does not rename the asset.
The window closes. The queued assets come back in a popup after 10 minutes.
NsBonsai still queues assets. Open the queue from the Tools menu. Set Disabled to stop the queue too.
All settings are in Edit > Project Settings > Plugins > Ns Bonsai. NsBonsai saves them in Config/DefaultNsBonsai.ini of the project.
| Setting | Default | Effect |
|---|---|---|
| Name Format Order | Type, Domain, Category, Asset Name, Variant | The order of the parts in the final name. A part that is not in the list is not used. |
| Join Separator | _ |
The text between the parts. An empty value resets to _. |
| Setting | Default | Effect |
|---|---|---|
| Use Domains | true | Adds the domain part and the Domain column. |
| Use Categories | true | Adds the category part and the Category column. |
| Use Variant | true | Adds a letter suffix that makes the name unique in its folder. When false, a name collision blocks the rename. |
| Use Asset Name Field | true | Adds the asset name part and the Asset Name column. When false, the final name has no asset name part. |
| Categories Must Belong To Domain | true | A category must be in the list of the selected domain. When false, a category from any domain is valid. |
| Allow Free Category If Empty | false | When the domain (or Global Categories) has no categories, any category is valid. |
| Setting | Default | Effect |
|---|---|---|
| Type Rules | 39 rules from the plugin Config/DefaultNsBonsai.ini |
Each rule maps a Class Path to a Type Token, for example /Script/Engine.StaticMesh to SM. A child class uses the rule of its nearest parent. |
| Domains | Empty | Each entry has a Domain Token and a list of Categories. |
| Global Categories | Empty | The category list when Use Domains is false. |
| Setting | Default | Effect |
|---|---|---|
| Skip Compliant Assets | true | Assets that already match the pattern do not go to the queue. |
| Review Trigger Mode | Automatic | Automatic: queue assets and open the popup. Manual Only: queue assets, open from the Tools menu. Disabled: no queue and no popup. |
| Popup Threshold Count | 1 | The popup opens only when the queue has this many assets. Below it, a notification shows with an Open button. Range 1 to 1000. |
| Popup Cooldown Seconds | 2.0 | The minimum time from a closed window to the next automatic popup. Range 0 to 60. |
| Auto Close When Empty | true | Closes the window when you rename or ignore the last row. |
| Setting | Default | Effect |
|---|---|---|
| Token Normalization Rules | Empty | Each rule replaces a Deprecated Token with a Canonical Token. The match ignores case. NsBonsai applies the rules to type, domain, and category tokens. |
| Normalize AssetName Exact Tokens | false | This setting has no effect. |
| Setting | Default | Effect |
|---|---|---|
| Show Type Column | true | Shows the Type column when the type part is in use. |
| Show Domain Column | true | This setting has no effect. The Domain column shows when the domain part is in use. |
| Show Category Column | true | This setting has no effect. The Category column shows when the category part is in use. |
| Show Asset Name Column | true | This setting has no effect. The Asset Name column shows when the asset name part is in use. |
| Show Final Name Column | true | Shows the Final Name preview column. |
| Show Current Name Column | true | Shows the Asset column with the current name. |
| Compact Rows | true | Uses less padding in each row. |
NsBonsai keeps your recent domains and categories in EditorPerProjectUserSettings, 20 of each. The lists put recent tokens first, then the others in alphabetical order.
OK (ready), ! (a field is missing or not valid), X (a name conflict), or - (ignored). Hover over it to read the reason.Saved/Logs/NsBonsai_Rename.log, in CSV form OldPath,NewPath,Result. The results are Renamed, NoOp, RenameFailed, Ignored, BlockedMissingFields, ConflictNoVariant, DryRunQueued, and DryRunNoOp.LogNsBonsaiSettings shows a warning when NsBonsai fixes a setting value.NsBonsai has no console commands or CVars.
| Problem | Cause | Fix |
|---|---|---|
| A row shows “Domain is required.” | The domain list is empty, or the row has no domain. | Add a domain in Domains, or choose + Add Domain… in the row. |
| A row shows “Domain token is not configured.” | The domain is not in Domains. | Add the domain to Domains. |
| A row shows “Category is not valid for current configuration.” | The category is not in the list of the domain. | Add the category to the domain, or set Categories Must Belong To Domain to false. |
| A row shows “Type token mapping missing for this asset class.” | No Type Rules entry matches the class. | Add a rule for the class in Type Rules. |
| A row shows “Conflict: ‘…’ already exists.” | Use Variant is false and an asset with that name is in the folder. | Change the asset name, or set Use Variant to true. |
| A row shows “No free variant could be allocated.” | All 676 variants of the name are taken in the folder. | Change the asset name. |
| The popup does not open | The queue is below Popup Threshold Count, the window is snoozed, or the mode is Manual Only. | Click Open on the notification, or use Tools > NsBonsai Review Queue…. |
| The popup does not open after you close the window | NsBonsai waits for new assets after you close the window. | Use Tools > NsBonsai Review Queue…. |
| A notification shows “NsBonsai is disabled in settings.” | Review Trigger Mode is Disabled. | Set it to Automatic or Manual Only. |
| A warning about empty Global Categories | Use Domains is false, Use Categories is true, and Global Categories is empty. | Add tokens to Global Categories, or set Allow Free Category If Empty to true. |
A to Z, then AA to YZ, 676 names in total.HUD, as a variant.