How to Add Bag or Backpack
This guide explains how to add a new bag or backpack so it works with
the inventory grid (extra cells), the Backpack slot,
character skins, Mutable, world pickups and icons.
1. Prerequisites and Item Types
Before you start, understand:
- Item type:
- Bags use a dedicated item type:
World.Items.Types.Bag.
- Bags use a dedicated item type:
- Backpack slot and grid size:
- The character always has a base inventory grid (default: 24 cells).
- The inventory grid is shown in
WB_MainInventoryPanelviaWB_OnBodyInventory. - A backpack item increases the available cells using
its
Inventory Sizeparameter.
2. Step 1 – Create the Bag via ItemsAssistant
Open ItemsAssistant (Editor Utility Widget).
In Item Type, select
Bag.Fill General Data:
Name,Short Name,Description,AbbreviationWeight,PriceType = World.Items.Types.Bag
Fill Inventory Data:
- Use an inventory parent from the clothing/skins chain (for example,
a child based on
BP_II_C_Skins_Master). Size– how many cells the bag item itself occupies in the grid (for example 3×3).Maximum Number In Slot– usually1for bags/backpacks.For Sale– whether this bag can be sold by vendors.
- Use an inventory parent from the clothing/skins chain (for example,
a child based on
In Clarification Data (bag section):
- Inventory Size
- Set Inventory Size – how many grid cells the player will have when this bag is equipped.
- This value replaces the default inventory size (24
cells) while the bag is in the
Backpackslot. WB_OnBodyInventoryuses this value to expand the playable area of the grid.
- Inventory Size
Press Generate:
- ItemsAssistant creates:
- A
BP_ItemDatachild. - An Inventory DataAsset (based on the skins/clothing inventory chain).
- A
BP_BagsClarData_*Clarification DataAsset. - A
DT_ItemDatarow linked to these assets.
- A
- ItemsAssistant creates:
3. Step 2 – Configure Bag Clarification (SimpleVisualization)
Open the generated BP_BagsClarData_* Clarification
DataAsset.
3.1. SimpleVisualization
Bags use the same SimpleVisualization structure as clothing:
- Skeletal Mesh
- Skeletal mesh used to initialize the bag on the character and (optionally) for world pickups.
- Fill this if
Type Of Mesh Used For Cloth == SkeletalMesh.
- Static Mesh
- Static mesh used for the world Interactable actor (bag dropped on the ground).
- Also used for the equipped visual if
Type Of Mesh Used For Cloth == StaticMesh.
At least one of Skeletal Mesh or Static Mesh must be filled.
- Socket
- Socket on the character skeleton where the bag will be attached (for
example
BackpackSocket). - If empty, the bag will be attached to the character’s root.
Make sure this socket exists on all player skeletons you plan to use:
- UE5 skeleton
- UE4 skeleton
- Metahuman skeleton
Add the same socket (same name) to all three skeletons so the bag attaches correctly on any skin.
- Socket on the character skeleton where the bag will be attached (for
example
- Type Of Mesh Used For Cloth
- Chooses whether
StaticMeshorSkeletalMeshis the primary equipped visual. - If set to
StaticMesh, you can leaveSkeletal Meshempty.
- Chooses whether
- AttachmentType
SetLeaderPoseComponent:- The bag mesh simply copies the character body pose.
- Recommended for rigid backpacks and bags without their own animation.
CopyPoseFromMesh:- The bag mesh uses
CopyPoseFromMesh, can have its own AnimBlueprint, AnimMontages, ControlRig, PostProcessAnimBP. - Use this only if the bag has extra animated parts that must move independently.
- The bag mesh uses
- HiddenBones
- List of bones to hide when the bag is equipped.
- Only relevant when
AttachmentType == CopyPoseFromMeshand ControlRig/PostProcessAnimBP are configured. - Can be used to hide parts of the character body that would clip through the bag (for example, some straps or accessories).
- HideDuringDialogue
- If
true, the bag will be hidden during dialogues (rarely needed, usuallyfalsefor backpacks).
- If
Other bag-specific settings (like Inventory Size) are
usually configured in ItemsAssistant and stored in the bag
Clarification; you typically do not need to change them manually
here.
4. Step 3 – Bag-Specific Parameters (Mutable)
If you want the bag to integrate with the Mutable system (for example, be part of a Mutable Object for the character body):
In
BP_BagsClarData_*Clarification:- MutableSection
- Name of the Mutable Object group this bag belongs to (for example
Bags). - Used only if at least one skin in
VisualizationModeusesMutableObject.
- Name of the Mutable Object group this bag belongs to (for example
- MutableParameter
- Name of the parameter inside the Mutable Object that controls this
particular bag visual (for example
Backpack_01). - Also required if
VisualizationModecontainsMutableObjectentries.
- Name of the parameter inside the Mutable Object that controls this
particular bag visual (for example
- VisualizationMode
- Map:
SkinName -> Initialization Method. - Used to decide how the bag is initialized per character skin (see next section).
- Map:
- CharacterSkinVariations
- Per-skin initialization data used when
VisualizationModeusesCharacterSkinVariation.
- Per-skin initialization data used when
- MutableSection
If you do not use Mutable for bags and only rely on standard
Skeletal/Static meshes, you can leave MutableSection,
MutableParameter, VisualizationMode and
CharacterSkinVariations empty. In this case the bag will
always initialize via SimpleVisualization.
5. Step 4 – Skins and Mutable for Bags
Bags support the same VisualizationMode and CharacterSkinVariations concepts as clothing.
5.1. VisualizationMode
In the bag Clarification DataAsset
(BP_BagsClarData_*):
VisualizationMode (map
SkinName -> Method):DefaultAppearance- The bag is initialized using SimpleVisualization for this skin.
- Default behavior for skins not listed in the map.
MutableObject- The bag visual is controlled by the player’s Mutable body object.
- The system uses
MutableSectionandMutableParameterto enable the bag visual in the Mutable Object. - Works only for character skins implemented with a Mutable Object.
CharacterSkinVariation- The bag is initialized using data from
CharacterSkinVariationsinstead ofSimpleVisualization. - Use this when you need a different mesh/scale/offset for certain character skins (for example, different backpacks for specific body types).
- The bag is initialized using data from
For all character skins not present in
VisualizationMode, the engine uses
DefaultAppearance and SimpleVisualization.
5.2. CharacterSkinVariations (Clarification)
If you set VisualizationMode = CharacterSkinVariation
for some skins:
- Add entries for those skins to
CharacterSkinVariations in the bag Clarification:
- Each entry defines how to initialize the bag for that specific skin (custom mesh, different settings, etc.).
- Initialization for that skin will use this data instead of
SimpleVisualization.
5.3. Inventory DataAsset: CharacterSkinVariations
If you use CharacterSkinVariation in the
Clarification:
Open the bag’s Inventory DataAsset (child of the skins/clothing inventory chain).
Configure:
- CharacterSkinVariations
- Add entries for the same skins where
VisualizationModeisCharacterSkinVariation. - Map player skins to bag skins that are compatible with the alternative meshes (so icons/visuals match).
- Add entries for the same skins where
- SimpleVisualizationSkins
- List skins that use
DefaultAppearanceand SimpleVisualization.
- List skins that use
- CharacterSkinVariations
This mirrors the setup used for clothing and ensures both in-world visuals and icons are correct for each skin.
5.4. Mutable Objects for Bags
If you want to drive bag visuals through the Mutable plugin, the
setup is the same as for clothing Mutable objects (see the clothing
how-to-configure-mutable-cloth-skin-asset). The only
differences are in the group names you choose:
- In the bag Customizable Object:
- In Attached to external object:
- Select the character skin Customizable Object (same as for clothing).
- When choosing the object group for this bag, use the group that
represents bags:
Bags.
- In the
BaseObjectUI metadata:- UISectionName for the base object should be
Bags.
- UISectionName for the base object should be
- In Attached to external object:
- For all parameters you expose in the bag
Customizable Object:
- Use the same naming and
ExtraInformationrules as for clothing. - Set UISectionName =
Bagsfor each parameter so that all bag parameters are grouped under the “Bags” section in the UI.
- Use the same naming and
The rest of the Mutable setup (Skeletal Mesh node, MeshSection nodes,
Add to Skeletal Mesh Component, RuntimeParameters in the character skin
Customizable Object, MutableSection and
MutableParameter in the bag Clarification) follows exactly
the same pattern as described in the Mutable clothing guide.
6. Step 5 – Inventory Data and Icons
Open the bag’s Inventory DataAsset.
Check and configure:
- SimpleVisualizationSkins
- Array of
BP_DA_Skinsthat use default SimpleVisualization-based initialization.
- Array of
- CharacterSkinVariations
- Only if Clarification uses
CharacterSkinVariation. - Keys: player skin names.
- Values: lists of bag skin DataAssets compatible with that variation.
- Only if Clarification uses
- RecreatedTextureSize / Icon size
- Resolution used by the icon generator (for example
512x512).
- Resolution used by the icon generator (for example
- InventoryTextureType
Simple– you will assign aTexture2Dicon manually.Generated Texture(or your project’s generated type) – icon will be produced by the icon generator.
- Inventory Texture
- Icon that will be shown for this bag in the inventory by default.
- Should always be filled (either the final icon or a fallback).
Icon generator and skins
If you use the icon generator:
Generate icons on the map
L_RecordSimpleItemsusingBP_EngineSimpleItemIconGener(or your project’s simple item icon generator).After generation, assign the textures:
- In the Inventory DataAsset:
- If
InventoryTextureTypeexpects generated textures, assign the generatedTexture2D(or texture array).
- If
- In each
BP_DA_Skinsused by this bag:- Set Icon Regular Resolution – standard icon.
- Set Icon Custom Resolution – high-res icon (if used, for shop/big previews).
- In the Inventory DataAsset:
7. Step 6 – World Pickup
Bags use the same Interactable hierarchy and SimpleVisualization as clothing.
- Parent class for world bag pickups:
BP_Inter_Bags.
When you generate the bag via ItemsAssistant, a corresponding world Interactable actor for
Bagis created automatically (based on your project’s templates).In that actor’s settings:
- Ensure it references your
BP_ItemData. - Confirm that:
- Meshes are initialized via the bag’s Clarification
SimpleVisualization. - Skins are applied via
BP_DA_Skins(if used).
- Meshes are initialized via the bag’s Clarification
- Ensure it references your