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.
  • Backpack slot and grid size:
    • The character always has a base inventory grid (default: 24 cells).
    • The inventory grid is shown in WB_MainInventoryPanel via WB_OnBodyInventory.
    • A backpack item increases the available cells using its Inventory Size parameter.

2. Step 1 – Create the Bag via ItemsAssistant

  1. Open ItemsAssistant (Editor Utility Widget).

  2. In Item Type, select Bag.

  3. Fill General Data:

    • Name, Short Name, Description, Abbreviation
    • Weight, Price
    • Type = World.Items.Types.Bag
  4. 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 – usually 1 for bags/backpacks.
    • For Sale – whether this bag can be sold by vendors.
  5. 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 Backpack slot.
      • WB_OnBodyInventory uses this value to expand the playable area of the grid.
  6. Press Generate:

    • ItemsAssistant creates:
      • A BP_ItemData child.
      • An Inventory DataAsset (based on the skins/clothing inventory chain).
      • A BP_BagsClarData_* Clarification DataAsset.
      • A DT_ItemData row linked to these assets.

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.
  • Type Of Mesh Used For Cloth
    • Chooses whether StaticMesh or SkeletalMesh is the primary equipped visual.
    • If set to StaticMesh, you can leave Skeletal Mesh empty.
  • 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.
  • HiddenBones
    • List of bones to hide when the bag is equipped.
    • Only relevant when AttachmentType == CopyPoseFromMesh and 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, usually false for backpacks).

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 VisualizationMode uses MutableObject.
    • MutableParameter
      • Name of the parameter inside the Mutable Object that controls this particular bag visual (for example Backpack_01).
      • Also required if VisualizationMode contains MutableObject entries.
    • VisualizationMode
      • Map: SkinName -> Initialization Method.
      • Used to decide how the bag is initialized per character skin (see next section).
    • CharacterSkinVariations
      • Per-skin initialization data used when VisualizationMode uses CharacterSkinVariation.

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 MutableSection and MutableParameter to 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 CharacterSkinVariations instead of SimpleVisualization.
      • Use this when you need a different mesh/scale/offset for certain character skins (for example, different backpacks for specific body types).

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 VisualizationMode is CharacterSkinVariation.
      • Map player skins to bag skins that are compatible with the alternative meshes (so icons/visuals match).
    • SimpleVisualizationSkins
      • List skins that use DefaultAppearance and SimpleVisualization.

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 BaseObject UI metadata:
      • UISectionName for the base object should be Bags.
  • For all parameters you expose in the bag Customizable Object:
    • Use the same naming and ExtraInformation rules as for clothing.
    • Set UISectionName = Bags for each parameter so that all bag parameters are grouped under the “Bags” section in the UI.

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_Skins that use default SimpleVisualization-based initialization.
  • CharacterSkinVariations
    • Only if Clarification uses CharacterSkinVariation.
    • Keys: player skin names.
    • Values: lists of bag skin DataAssets compatible with that variation.
  • RecreatedTextureSize / Icon size
    • Resolution used by the icon generator (for example 512x512).
  • InventoryTextureType
    • Simple – you will assign a Texture2D icon 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_RecordSimpleItems using BP_EngineSimpleItemIconGener (or your project’s simple item icon generator).

  • After generation, assign the textures:

    • In the Inventory DataAsset:
      • If InventoryTextureType expects generated textures, assign the generated Texture2D (or texture array).
    • In each BP_DA_Skins used by this bag:
      • Set Icon Regular Resolution – standard icon.
      • Set Icon Custom Resolution – high-res icon (if used, for shop/big previews).

7. Step 6 – World Pickup

Bags use the same Interactable hierarchy and SimpleVisualization as clothing.

  • Parent class for world bag pickups: BP_Inter_Bags.
  1. When you generate the bag via ItemsAssistant, a corresponding world Interactable actor for Bag is created automatically (based on your project’s templates).

  2. 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).