A controlled enviromnent for Unreal Projects to grow
NsBonsai is a lightweight Unreal Engine editor plugin that standardises asset names while you work. It detects newly created/imported assets, waits for save, and opens one compact review table to classify and rename safely.
Default pattern:
<Type>_<Domain>_<Category>_<AssetName>_<Variant>
Example:
SM_Foliage_Tree_Birch_A
Zero-diff by design: NsBonsai does not write metadata into assets. It only renames assets when you explicitly confirm.
Naming is not just pretty formatting. It is searchability, automation, maintainability, and team sanity.
NsBonsai focuses on:
A..Z, then AA...Open with Bonsai.Edit -> Project Settings -> Ns Bonsai.ClassPath -> TypeToken).Open: Edit -> Project Settings -> Ns Bonsai
This page controls three things:
If you change one setting and the UI/validation changes, that is expected: most settings are intentionally connected.
| Setting | What it does | What changing it does |
|---|---|---|
NameFormatOrder |
Defines final token order in generated names. | Reordering changes preview and final output shape immediately. If a component is removed from this list, it is effectively disabled even if its toggle is ON. |
JoinSeparator |
Sets separator between components (default _). |
Every generated name uses this separator. Compliance parsing also expects this separator. |
Why this group exists:
Recommendation:
Type, Domain, Category, AssetName, Variant for classic UE-style pipelines._ unless your team has a strict alternative standard.These toggles control both naming and UI validation.
| Setting | What it does | If ON | If OFF |
|---|---|---|---|
bUseDomains |
Enables Domain component in naming and Domain column in UI. | Domain becomes a required input when Domain component is in NameFormatOrder. |
Domain is not used in names. Category can still work through Global Categories mode. |
bUseCategories |
Enables Category component in naming and Category column in UI. | Category becomes required when Category component is active. | Category is removed from naming and validation. |
bUseVariant |
Enables trailing variant token allocation. | Final rename allocates unique variants (A..Z, AA..) to avoid collisions. |
No variant component in output; collisions are more likely if base names repeat. |
bUseAssetNameField |
Enables editable Asset Name input in UI and naming. | Asset Name is required after sanitize. | Name is derived from parsed/original fallback; field is hidden. |
bCategoriesMustBelongToDomain |
Enforces domain-specific category membership when domains are enabled. | Category must exist under selected domain. | Any configured category is allowed regardless of selected domain. |
bAllowFreeCategoryTextIfNoCategories |
Allows category use when library is empty for the current context. | Empty category library does not hard-block category usage. | Missing category options will block validation until categories are configured. |
Recommendation:
bUseVariant=True for production projects.| Setting | What it does | What changing it does | Why |
|---|---|---|---|
TypeRules |
Maps class path to type token (example: StaticMesh -> SM). |
Affects Type column and Type token in preview/final names. Missing mapping for an active Type component produces validation warning. | Type token is resolved from actual asset class path, not folder/name guesses. |
Domains |
Defines valid domain tokens and per-domain category lists. | Updates dropdown choices and validation logic immediately. | Stable token libraries prevent drift and reduce naming debates in production. |
GlobalCategories |
Provides category options when Domains are disabled. | Category validation uses this global list instead of per-domain lists. | Keeps categories usable in domain-free naming setups. |
Recommendation:
| Setting | What it does | What changing it does |
|---|---|---|
bSkipCompliantAssets |
Skips enqueueing assets that already match active naming rules. | ON: less queue noise in migrated/clean projects. OFF: all tracked assets can still show up for review. |
PopupThresholdCount |
Minimum queue size before auto popup opens. | Lower value = more immediate popups. Higher value = more batching, less interruption. |
PopupCooldownSeconds |
Minimum time between automatic popups. | Higher value reduces popup frequency during large bursts/imports. |
bAutoCloseWindowWhenEmpty |
Closes review window automatically after all rows are handled. | ON: less cleanup clicks. OFF: keep window open for continuous/manual sessions. |
ReviewTriggerMode values:
| Value | Behavior |
|---|---|
Automatic |
track + auto popup by threshold/cooldown rules. |
ManualOnly |
track + queue only, open manually from menu. |
Disabled |
stops tracking/popup behavior. |
What changing it does:
| Setting | What it does | What changing it does | Why |
|---|---|---|---|
TokenNormalizationRules |
Maps deprecated aliases to canonical tokens (Ui -> UI). |
Domain/category token comparisons normalize through these rules. | Prevents token drift from mixed casing/legacy aliases. |
bNormalizeAssetNameExactMatch |
Applies normalization rules to AssetName tokens when exact token matches occur. | Helps unify known aliases in AssetName without aggressive rewriting. | Keeps naming consistency without over-transforming free text. |
| Setting | What it does |
|---|---|
bShowTypeColumn |
Shows/hides Type column. |
bShowDomainColumn |
Shows/hides Domain column when domains are in use. |
bShowCategoryColumn |
Shows/hides Category column when categories are in use. |
bShowAssetNameColumn |
Shows/hides editable Asset Name column when asset-name field is enabled. |
bShowFinalNameColumn |
Shows/hides live preview column. |
bShowCurrentNameColumn |
Shows/hides source/current asset name column. |
bCompactRows |
Reduces row padding for denser review throughput. |
Recommendation:
Final Name visible.| Preset | Settings | Best for |
|---|---|---|
| Strict team preset | bUseDomains=TruebUseCategories=TruebCategoriesMustBelongToDomain=TruebUseVariant=TruebSkipCompliantAssets=True |
large teams with clear taxonomy. |
| Lightweight preset | bUseDomains=FalsebUseCategories=False (or use global categories only)bUseVariant=TrueNameFormatOrder=Type,AssetName,Variant |
small teams and fast prototyping. |
| Quiet automation preset | ReviewTriggerMode=Disabled |
scripted imports/build steps where UI interruptions are unwanted. |
When enabled, compliant assets are skipped early.
Compliant means:
If target name exists, variant increments automatically.
Example:
BP_Thing_ABP_Thing_ABP_Thing_BExecute Renames applies staged set.Good style references:
NsBonsai folder into your project Plugins directory.Edit -> Plugins.