Armor and Clothing

This document describes armor and clothing in RPG Engine v6: defensive stats, special ability devices (NVG, thermal, masks, headphones), and how they integrate with items, skins, Mutable, and interaction.

Item Types and Categories

Armor and clothing are configured through item data (BP_ItemData + DT_ItemData) and clothing/armor Clarification-type DataAssets.

High-level categories:

  • Protective items:
    • Armor vests, helmets, body armor pieces.
    • Provide protection against damage and use durability.
  • Special ability devices:
    • Headphones (“Ears”): change sound mix (muffle loud sounds, amplify quiet ones).
    • Eye protection (“Eyes”): protect against flashbang effects.
    • Visors (“Device”): night vision and/or thermal vision.
    • Gas masks: protect from gas grenade types.
  • No-abilities clothing:
    • Pure cosmetic garments that only change appearance.

All of them are ultimately clothing/armor items that:

  • Have a BP_ItemData entry.
  • Use a clothing/armor Clarification-type DataAsset.
  • Can be equipped through BP_EquipmentComponent.

Protective Armor

Protective devices include any wearable item that reduces or mitigates damage:

  • Typical examples:
    • Bulletproof vests.
    • Helmets.
    • Other armor pieces.

Key properties (from armor Clarification-type assets and equipment data):

  • Protection values:
    • Define how much damage is reduced for specific damage types or calibers.
    • Can be tied into the damage pipeline (hit zones, ammo types, etc.).
  • Durability / Health:
    • Each armor piece has its own durability value.
    • When durability is depleted, armor stops providing protection.
  • Hit zones:
    • Armor may protect only specific body zones (head, torso, etc.).
    • Damage to unprotected zones bypasses that armor piece.

At the world actor level, BP_Inter_Master_Cloth exposes:

  • Health (float) — durability of the physical item instance.
  • UseCustomHealth (bool) — if true, uses the custom Health value rather than the default from data.

The detailed numeric damage model and hitzone integration are documented in the damage/armor system; this file focuses on how armor is represented as items.


Clothing Clarification Assets and SimpleVisualization

Clothing and armor rely on clothing Clarification-type DataAssets (for example, BP_ClothesClarData_Master and its children). The central part of these assets is the SimpleVisualization structure.

SimpleVisualization

The SimpleVisualization section defines how the item is visualized on the character and how its world Interactable actor is initialized.

Fields:

  • Skeletal mesh / Static mesh

    • Mesh used to initialize the clothing or armor object and its world Interactable actor.
    • At least one of these must be filled; otherwise, the system cannot spawn the visual or the pickup actor.
  • Socket (optional)

    • Socket name where the clothing or device will be attached on the character skeleton.
    • If empty, the item will be attached to the character’s skeleton root.
  • Type Of Mesh Used For Cloth

    • Chooses between StaticMesh and SkeletalMesh as the main representation.
    • If set to StaticMesh, the Skeletal mesh field does not need to be filled.
  • AttachmentType
    Controls how the clothing/armor mesh follows the character’s pose and whether it can use its own Animation Blueprint.

    Supported values:

    • SetLeaderPoseComponent
      • Ideal for clothing/devices that do not require their own animations.
      • The mesh simply follows the character’s pose via SetLeaderPoseComponent and does not use its own AnimBlueprint.
    • CopyPoseFromMesh
      • Allows the clothing/armor mesh to use its own Animation Blueprint / AnimMontages while still copying the character pose.
      • Requires a properly configured ControlRig and PostProcessAnimationBlueprint on the clothing SkeletalMesh.

    Use CopyPoseFromMesh for items like hoodies with laces or gear with loose parts that need extra animation on top of the base pose. Use SetLeaderPoseComponent for rigid gear that only needs to follow the body.

  • HiddenBones
    A list of bones that should be hidden when this item is equipped. This field is only relevant when AttachmentType == CopyPoseFromMesh, and it requires ControlRig and PostProcessAnimationBlueprint to be configured correctly.

    Internally, this uses the HideBoneByName node, which works by setting the scale of the specified bone to 0. As a result, the entire chain of child bones is effectively hidden. For example, hiding spine_01 will also hide spine_02, spine_03, clavicle_l, clavicle_r, and all child bones.

    A typical use case is hiding the character’s feet while wearing sneakers. Because ControlRig usually copies not only location and rotation, but also scale from the character to the clothing mesh, you must adjust the clothing ControlRig to avoid propagating a zero scale to the clothing. In practice:

    • Open the clothing ControlRig.
    • Find the SetTransform (Bone) nodes that copy transforms from the character.
    • For the relevant bones, force the Scale value to (1,1,1) instead of copying it from the character.

    This prevents the clothing (for example, sneakers) from disappearing when the underlying bone is hidden.

  • HideDuringDialogue
    If true, the item will be automatically hidden during dialogues. This is used for equipment that covers the face, such as masks, helmets, and glasses, to ensure facial animation and lip sync remain visible.

  • HideCustomHairType
    If true, the item will hide specific custom hair types (for example, hair, beard) when equipped. This is typically used for helmets or headgear where visible hair would clip through the mesh.

  • Type
    Logical clothing type used to determine which equipment slot the item should occupy (Head, Face, Eyes, Jacket, Pants, Boots, Vest, etc.). This must be consistent with the equipment slot types supported by BP_EquipmentComponent.

Skins and Icons

Clothing and armor also support:

  • Skins
    • BP_DA_Skins DataAssets define visual variants (colors, patterns, etc.) for clothing and armor.
  • Icon generation
    • Clothing icon generator actors can automatically render inventory icons using the configured meshes and skins.

Skin and icon generation workflows are described in the skin/icon generator documentation; armor/clothing reuse those systems rather than reimplementing them.


VisualizationMode and Character Skin Variations

Clothing and armor can behave differently depending on which character skin is active. This is controlled by VisualizationMode and Character Skin Variations in the Clarification-type DataAssets.

VisualizationMode

VisualizationMode is a map:

Skin Name -> Clothing Initialization Method

It defines how the clothing/armor should be initialized for specific character skins. Supported methods:

  • DefaultAppearance
    The clothing/armor is initialized using SimpleVisualization. This is the default behavior and is applied to all character skins that do not require special handling.

  • MutableObject
    The clothing/armor appearance is controlled by the player’s Mutable body object. In this mode, the system reads MutableSection and MutableParameter and applies the clothing via the Mutable Object.

    Important: this method only works for character skins implemented with a Mutable Object. If the active skin is not Mutable-based, this initialization method will fail.

  • CharacterSkinVariation
    Clothing/armor is initialized using per-skin data from the Character Skin Variations map instead of SimpleVisualization.

Only skins listed in VisualizationMode use these custom rules. For all character skins not present in VisualizationMode, the system automatically falls back to DefaultAppearance and uses SimpleVisualization.

Example: a helmet that should look different on male and female character skins.

  • Most skins do not appear in VisualizationMode, so they use DefaultAppearance and the default mesh from SimpleVisualization (for example, SM_Helmet).
  • Specific female skins are added to VisualizationMode with method CharacterSkinVariation. For these skins, initialization uses Character Skin Variations (for example, SM_Helmet_Woman).

Character Skin Variations

Character Skin Variations is a map:

Skin Name -> Per-Skin Clothing/Armor Initialization Data

This map is used when VisualizationMode specifies CharacterSkinVariation for a given skin. In that case, the initialization data for that skin is taken from Character Skin Variations instead of SimpleVisualization.

Typical scenarios:

  • Female character skins that require smaller or alternative meshes for the same clothing/armor item (for example, a helmet that uses SM_Helmet on male skins and SM_Helmet_Woman on female skins).
  • Special character skins that need adjusted offsets, different attachment points, or unique visual variants for the same clothing item.

If you set CharacterSkinVariation for a given skin in VisualizationMode, you must add a corresponding entry to Character Skin Variations. If you do not, the clothing/armor will not be initialized correctly for that skin.

MutableSection and MutableParameter

MutableSection and MutableParameter are used when at least one entry in VisualizationMode uses the MutableObject initialization method.

  • MutableSection
    Name of the Mutable Object group/section that this clothing/armor item belongs to. Examples include Jacket, Pants, Shoes, Bags. The engine uses this section to determine which part of the Mutable Object should be updated for this item.

  • MutableParameter
    Name of the parameter inside the Mutable Object that controls this specific clothing/armor item (for example, Helmet_01, Jacket_01). This parameter is used to enable or switch the visual variant corresponding to the item.

If VisualizationMode contains any MutableObject entries, both MutableSection and MutableParameter must be filled. Otherwise, Mutable-based initialization for this clothing/armor will not work.


Special Ability Devices

Special ability items are clothing/armor devices that modify gameplay rather than (or in addition to) providing protection.

Headphones (Ears)

“Ears” devices are headphones:

  • Reduce the volume of loud sounds (gunshots, explosions).
  • Increase the volume of quiet sounds (footsteps, subtle noise).
  • Are configured as clothing/armor devices in the Clarification-type DataAssets.
  • When equipped:
    • Hook into the audio system to modify sound mix parameters.
    • Provide an advantage in detecting movement at the cost of dampened explosions/gunfire.

Exact audio implementation (which buses/curves are affected) is handled in the audio subsystem; the item data only defines that this device is of the “Ears” type.

Eye Protection (Eyes)

“Eyes” devices are goggles or glasses:

  • Protect from flashbang effects:
    • Reduce or eliminate blinding time from flash grenades.
  • Are configured in the clothing/armor Clarification-type assets as a device type “Eyes”.
  • When equipped:
    • The grenade/debuff system checks whether the player has appropriate eye protection equipped.
    • Flashbang debuff strength/duration is reduced or blocked.

Night/Thermal Visors (Device)

Night/thermal vision devices are defined as clothing/armor devices:

  • Parent class (for connected/equipped actors): typically BP_Con_Visors.

Key parameters:

  • ChangeVisorMaterialWhenTurnOn (bool):
    • If true, highlights the visor material (emissive) while the device is active.
    • Simulates the glowing glass effect seen in real-world night vision devices.
  • VisorGlassMaterialIndex (int):
    • Index of the material slot on the visor mesh that should be highlighted when active.
    • Must point to a material using the correct parent material that supports emissive highlighting.

Behavior:

  • Devices are equipped like normal clothing/armor (usually in a “Device” or “Head” slot).
  • When the player activates Night Vision or Thermal Vision:
    • The corresponding device:
      • Applies night/thermal post-process or vision mode.
      • Optionally toggles visor material emissive according to ChangeVisorMaterialWhenTurnOn and VisorGlassMaterialIndex.

Night/thermal vision activation and vision modes are described in the Unusual Skills / vision modes documentation.

Gas Masks

Gas masks are configured as special ability devices under the clothing/armor system:

  • Protect against certain gas grenade types:
    • For example, poison gas grenades defined in grenade data.
  • When a gas grenade effect is processed:
    • The damage/debuff system checks whether the player has a compatible gas mask equipped.
    • If yes and the mask supports that gas type, the damage or debuff is blocked or reduced.
  • Gas masks use clothing Clarification-type assets with appropriate gas protection parameters and can also adjust breathing/voice FX for extra immersion (handled in audio/VFX).

No-abilities Clothing

Clothing pieces that are purely cosmetic:

  • Only change the visual appearance of the character.
  • Do not affect stats, damage, or special abilities.
  • Still use the same Clarification-type DataAsset structure (SimpleVisualization, meshes, sockets, etc.), but without special ability logic.

These are useful for purely aesthetic customization.


World Actors for Clothing and Armor

Clothing and armor items in the world use the same BP_Inter_* hierarchy as other items.

World pickups

Typical world class for clothing/armor:

  • BP_Inter_Master_Cloth:
    • Inherits from BP_Inter_Items_With_SkinBP_Inter_AutoInitBP_Inter_Master.
    • Uses BP_ItemData to:
      • Initialize meshes (via SimpleVisualization in the Clarification asset).
      • Apply skins (BP_DA_Skins).
    • Parameters:
      • Health — durability of the world instance.
      • UseCustomHealth — use this instance’s Health instead of defaults.

World behavior:

  • Detected by BP_InteractComponent via interaction interfaces.
  • On pickup:
    • BP_EquipmentComponent adds the clothing/armor to inventory/equipment.
    • The world actor is destroyed or its Quantity reduced (same logic as other loot).

Equipped state

When equipped:

  • Clothing/armor devices:
    • Attach to character sockets as defined by SimpleVisualization.
    • Use AttachmentType to decide whether to follow body pose or use their own animations.
    • Enable any special abilities (ears, eyes, visors, gas masks) defined in their Clarification-type assets.
    • May hide bones, hair, or facial items according to HiddenBones, HideCustomHairType, and HideDuringDialogue.

Unequipping:

  • Removes both visual attachment and special ability effects.
  • Returns items to inventory or destroys them depending on system rules.

Integration Summary

Armor and clothing sit on top of existing systems:

  • Item system:
    • BP_ItemData and DT_ItemData define all clothing/armor items.
    • Clarification-type assets define meshes, sockets, abilities, and special parameters.
  • World interaction:
    • World pickups use BP_Inter_Master_Cloth and related BP_Inter_* classes.
    • BP_InteractComponent handles picking them up.
  • Equipment:
    • BP_EquipmentComponent manages slots, equips items, and applies armor/clothing logic.
  • Stats and damage:
    • Protective armor integrates with the damage pipeline and durability.
    • Special ability devices interact with debuffs, grenades, and vision/sound systems.
  • Customization:
    • Skins, VisualizationMode, Character Skin Variations and Mutable integration define how clothing/armor look on different character skins.
    • Icon generators provide inventory icons for clothing and armor items.

Armor and clothing connect to:

  • docs/systems/interaction/interaction-and-items.md
  • docs/systems/interaction/doors-and-interactables.md
  • docs/systems/interaction/trading-and-vendors.md
  • docs/systems/inventory-equipment/inventory-and-equipment.md
  • docs/systems/customization/character-customization-and-skins.md
  • docs/systems/combat/damage-and-armor-system.md
  • docs/systems/skills/unusual-skills-and-vision-modes.md