Shirt Asset Reference
The shirt asset is the data definition for every torso-and-arms clothing item in Unturned™ - military tops, casual shirts, jackets, armor carriers worn on the torso, tactical vests that sit under the Vest slot, and any other item that occupies the Shirt slot on the character model. The Shirt slot is one of two clothing slots (alongside Pants) that the ItemShirtAsset class in the Unturned™ runtime supports with both armor protection and storage capacity inherited from the ItemBagAsset base class. A well-authored shirt asset with correctly tuned armor values, an appropriate storage grid dimension through Width and Height, and proper Ignore_Hand flag configuration for left-handed characters is the core functional clothing item in any modder's catalog.
This article is the 57 Studios™ canonical reference for the shirt asset subtype. It covers every .dat field specific to the ItemShirtAsset class - the Armor damage reduction multiplier (shared with Pants and Vests but configured independently per slot), the Width and Height storage grid fields inherited from ItemBagAsset, the Ignore_Hand flag that controls whether the shirt respects left-handed mode, the character skeleton bones that a shirt prefab binds to, and the optional character mesh replacement system documented in the SDG chapter. The shared identity fields common to every clothing type (ID, GUID, Type, Name, Rarity, Useable Clothing, Size_X, Size_Y) are documented in the base Clothing Asset Reference and are not repeated here except where shirt-specific configuration departs from the norm.

Documentation source: This article references the official Smartly Dressed Games modding documentation chapter 59 (Shirt Assets) for the
ItemShirtAssetclass definition and the parentItemBagAssetclass. Game-file evidence is drawn from the shipped shirts underBundles/Items/Shirts/in the vanilla Unturned™ asset set, including theBiohazard_Top,Chef_Top,Coalition_Top_Captain,Construction_Top,Engineer_Top,Cargo_Shorts,Jersey_America, andRain_Jacketfamilies.
Who this article is for
This article is written for Unturned™ mod authors who have completed at least one clothing mod or have read the Clothing Asset Reference and want to focus specifically on the Shirt slot. You should already be familiar with the master bundle pipeline, the SkinnedMeshRenderer bone binding workflow, and the .dat authoring format. If you are new to Unturned™ clothing modding, start with Project Folder Structure and GUIDs and How to Install Unity Editor before returning here.
What you will learn
- The complete field surface of the
ItemShirtAssetclass:Armor,Width,Height,Ignore_Hand, and the optional character mesh replacement fields. - Why shirts inherit from
ItemBagAssetand what that means for storage capability. - How the
Armorfield works as a damage reduction multiplier and the armor stacking math across Shirt, Pants, and Vest slots. - The
WidthandHeightstorage grid that shirts can provide - unique among clothing slots and frequently overlooked by mod authors. - The
Ignore_Handflag that controls left-handed character shirt rendering. - The character skeleton bones that a shirt prefab binds to.
- Inventory footprint guidelines by shirt type.
- The complete diagnostic table for shirt-specific authoring errors.
- The character mesh replacement system for shirts that replace the character body mesh.
How the shirt slot works
The Shirt slot covers the player's torso and both arms. When a player equips a shirt item, the runtime binds the item's prefab to the character skeleton torso and arm bones, applies the Armor multiplier to incoming damage calculations, creates a wearable storage grid from Width and Height (if both are set to non-zero values), and checks the Ignore_Hand flag to determine whether the shirt should mirror for left-handed characters.
The Shirt slot is distinct from the Vest slot. Shirts and Vests can be worn simultaneously - the shirt renders under the vest in the visual layer order. The shirt's Armor value stacks multiplicatively with the vest's Armor value when calculating total damage reduction.
The two storage system inheritance paths
Shirts are unique among the visible clothing slots (Hat, Shirt, Pants, Mask, Glasses) in that they inherit from ItemBagAsset, which is the same base class that provides storage grids for backpack items. This inheritance means shirts can define a storage grid through Width and Height fields - a capability that hat, mask, and glasses items do not share. The storage grid created by a shirt functions identically to a backpack grid, providing additional inventory slots while the shirt is equipped.
The two clothing slots that inherit from ItemBagAsset are Shirt and Pants. Both can have storage. The Vest slot inherits directly from ItemClothingAsset and uses a different field pair (Storage_X and Storage_Y) for its storage. Hat, Mask, and Glasses inherit from ItemGearAsset and cannot have storage at all.
Shirt .dat field reference
Identity and shared fields
Shirt items require the same shared identity fields as every other item type, documented in full in Item Asset Anatomy and Clothing Asset Reference.
| Field | Type | Example | Notes |
|---|---|---|---|
ID | uint16 | 42201 | Unique item ID. Use 42200+ range per 57 Studios™ allocation or 50000+ for open community range. |
GUID | uint128 hex | d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9 | 128-bit globally unique identifier. Generate fresh per item. |
Type | enum | Shirt | Must be Shirt for shirt slot items. |
Name | string | MyMilitaryShirt | Internal name. Used in console commands and cross-reference. |
Rarity | enum | Uncommon | Common, Uncommon, Rare, Epic, Legendary, Mythical. |
Useable | enum | Clothing | Must be Clothing for all wearable items. |
Size_X | uint8 | 2 | Inventory grid width un-equipped. |
Size_Y | uint8 | 2 | Inventory grid height un-equipped. |
Size_Z | float | 0.6 | Visual depth scaling for the item icon. |
Armor field
| Field | Type | Range | Default | Purpose |
|---|---|---|---|---|
Armor | float | 0.0 to 1.0 | 1.0 | Damage multiplier when equipped. Lower values = more protection. 1.0 = no protection. 0.9 = 10% damage reduction. 0.8 = 20% reduction. |
The Armor field is a damage multiplier, not a flat reduction or a percentage point. The engine multiplies incoming damage by the Armor value before applying any other modifiers. An Armor value of 0.9 means the wearer takes 90% of incoming damage (10% reduction). An Armor value of 0.5 means the wearer takes 50% of incoming damage (50% reduction). An Armor value of 1.0 means the wearer takes full damage (0% reduction).
The armor calculation for the Shirt slot is the first step in a multi-step chain. Pants armor and Vest armor apply independently in sequence. See the Armor stacking section below for the combined calculation.
Storage fields (inherited from ItemBagAsset)
| Field | Type | Range | Default | Purpose |
|---|---|---|---|---|
Width | uint8 | 0-255 (practical 0-10) | 0 | Number of columns in the shirt's storage grid. A value of 0 means no horizontal storage. |
Height | uint8 | 0-255 (practical 0-8) | 0 | Number of rows in the shirt's storage grid. A value of 0 means no vertical storage. |
The Width and Height fields are inherited from ItemBagAsset, the same class that provides storage grid fields for backpack items. When both Width and Height are set to non-zero values, equipping the shirt adds a storage grid of Width x Height slots to the player's inventory. This is separate from the backpack storage grid and the vest storage grid - a player can benefit from all three simultaneously.
Storage on shirts is a vanilla mechanic
The shipped Unturned™ asset set includes many shirts with storage capacity. The Biohazard_Top (ID 1015) provides a 5x2 grid (10 slots). The Chef_Top (ID 230) provides a 5x3 grid (15 slots). The Coalition_Top_Captain (ID 1424) provides a 6x3 grid (18 slots). The Construction_Top (ID 232) provides a 4x3 grid (12 slots). Shirt storage is not a mod extension; it is a fully supported vanilla feature.
The default value for both Width and Height is 0. When both are 0 (or both are absent from the .dat file), the shirt provides zero storage slots. This is the correct configuration for cosmetic-only shirts that should not expand inventory capacity. Setting Width without Height (or vice versa) also produces zero storage because the grid area calculation 0 x N = 0 applies.
Ignore_Hand flag
| Field | Type | Default | Purpose |
|---|---|---|---|
Ignore_Hand | flag | not set (shirt respects left-handed mode) | When present, the shirt mesh is not mirrored when the player character is configured as left-handed. |
Unturned™ supports a left-handed character mode that mirrors weapon models and character skeleton orientation. Clothing items are also mirrored in left-handed mode by default - the shirt mesh flips horizontally to match the left-handed skeleton. The Ignore_Hand flag stops this mirroring, keeping the shirt in its original orientation regardless of the handedness setting.
The Ignore_Hand flag is used on shirts whose visual design is asymmetrical in a way that would look incorrect when mirrored. A shirt with a left-chest patch reads as natural - the patch stays on the left side in right-handed mode and moves to the right side in left-handed mode. A shirt with a design that explicitly depends on orientation (a text that must read forward, a diagonal zipper that must run in a specific direction) should have the Ignore_Hand flag so the design is not flipped.
Shipped shirts that use Ignore_Hand include the Jersey_America (ID 624), the Jersey_Russia (ID 633), and all other national jersey shirts. These shirts have country-specific designs that should not be mirrored in left-handed mode because the text and graphics would appear backward.
Character mesh replacement fields
The ItemShirtAsset class supports an optional character mesh replacement system. These fields allow a shirt to replace the character's body mesh (torso and arms) entirely rather than simply adding a clothing mesh on top.
| Field | Type | Default | Purpose |
|---|---|---|---|
Has_1P_Character_Mesh_Override | bool | False | When True, the engine loads a prefab named Character_Mesh_1P_Override_0 from the bundle to replace the first-person character mesh. |
Character_Mesh_3P_Override_LODs | uint16 | 0 | Number of prefabs to load for third-person LOD (Level of Detail) mesh replacement. Each LOD level has a numbered prefab. |
Has_Character_Material_Override | bool | False | When True, a material named Character_Material_Override is loaded to replace the first-person and third-person mesh materials. |
The character mesh replacement system is an advanced feature used when the shirt fundamentally changes the character body shape - a shirt that replaces the torso with a robotic shell, a shirt that bulks up the arm geometry, or a shirt that adds geometry that the standard shirt mesh cannot achieve on top of the body. The system requires custom character body meshes authored in Blender and packaged in the master bundle.
The CharacterMeshReplacementTest (ID 1522) is the shipped test item for this system. It enables all three fields (Has_1P_Character_Mesh_Override True, Character_Mesh_3P_Override_LODs 1, Has_Character_Material_Override True) and provides the replacement meshes in its bundle.
Character mesh replacement workflow
The character mesh replacement system is documented in the SDG chapter on Character Mesh Replacement. The cohort recommendation is to use this system only when the shirt design fundamentally changes the character body shape. For standard clothing that sits on top of the body, a regular SkinnedMeshRenderer shirt prefab is sufficient. The character mesh replacement adds significant bundle size and authoring complexity.
File and folder structure
A complete shirt mod requires the following files organized in the standard item folder layout:
Workshop/Content/304930/<modID>/
├── Bundles/
│ └── <BundleName>.unity3d ← master bundle containing the shirt prefab
└── Items/
└── MyShirt/
├── MyShirt.dat ← primary configuration (fields documented here)
└── English.dat ← display name and descriptionArmor value balance reference
| Armor value | Effective damage reduction | Vanilla equivalent example |
|---|---|---|
1.0 | 0% (no protection) | Aprix_Top, Astronaut_Top, Blueknight_Top - cosmetic shirts |
0.95 | 5% | Biohazard_Top, Chef_Top, Construction_Top, Engineer_Top, Rain_Jacket - light utility tops |
0.9 | 10% | Coalition_Top_Captain, Coastguard_Top, Military_Top - standard military tops |
0.85 | 15% | SpecOps_Top - special operations top |
0.8 | 20% | Heavy tactical armor carrier |
The armor values above are cohort-validated balance levels. The vanilla Unturned™ shirt set uses 0.95 as the most common non-cosmetic armor value, with 0.9 reserved for military-grade items and 0.85 and below for specialized tactical gear.
Storage grid dimension reference
| Shirt type | Width | Height | Total slots | Vanilla examples |
|---|---|---|---|---|
| No storage (cosmetic only) | 0 or absent | 0 or absent | 0 | Aprix_Top, Astronaut_Top, Detective_Top, Elf_Top |
| Light duty top | 4 | 3 | 12 | Construction_Top |
| Utility top | 5 | 2 | 10 | Biohazard_Top, Diving_Top |
| Standard duty top | 5 | 3 | 15 | Chef_Top, Engineer_Top, Farmer_Top |
| Patrol top | 6 | 3 | 18 | Coalition_Top_Captain, Coastguard_Top, Rain_Jacket |
| Light duty (shorts) | 5 | 3 | 15 | Cargo_Shorts |
Armor stacking across Shirt, Pants, and Vest
The Shirt slot's Armor value is one part of a three-way multiplicative stack. When a player wears Shirt, Pants, and Vest items simultaneously, the total damage reduction is calculated as:
Total multiplier = Shirt Armor x Pants Armor x Vest ArmorExample stacking scenarios
| Scenario | Shirt Armor | Pants Armor | Vest Armor | Total multiplier | Effective reduction |
|---|---|---|---|---|---|
| Cosmetic only (no armor) | 1.0 | 1.0 | 1.0 | 1.0 | 0% |
| Light armor set | 0.95 | 0.95 | 0.95 | ~0.857 | ~14.3% |
| Standard armor set | 0.9 | 0.9 | 0.9 | 0.729 | ~27.1% |
| Tactical set | 0.85 | 0.85 | 0.85 | ~0.614 | ~38.6% |
| Max practical protection | 0.8 | 0.8 | 0.8 | 0.512 | ~48.8% |
| Mix (shirt light, vest heavy) | 0.95 | 0.95 | 0.85 | ~0.767 | ~23.3% |
The chart above traces a 100 HP damage event through a standard armor set (Shirt 0.9, Pants 0.9, Vest 0.85). Each slot applies its multiplier sequentially. The final damage of approximately 68.9 HP represents a 31.1% effective reduction from the combination, not from any single piece.
Character skeleton binding for shirts
A shirt prefab binds to the character skeleton torso and arm bones. The SkinnedMeshRenderer on the shirt prefab must reference these bones by their exact names.
Required bones for shirt binding
| Bone name | Region | Required |
|---|---|---|
Character_Spine | Lower spine / torso base | Yes |
Character_Spine1 | Upper spine / chest | Yes |
Character_LeftUpperArm | Left upper arm | Yes |
Character_LeftForeArm | Left forearm | Yes |
Character_RightUpperArm | Right upper arm | Yes |
Character_RightForeArm | Right forearm | Yes |
Optional bones for extended coverage
| Bone name | Region | When needed |
|---|---|---|
Character_Neck | Neck base | For shirts with a high collar that extends to the neck |
Character_Hips | Pelvis | For shirt meshes that extend below the waist (tunic, long shirt, jacket tail) |
The shirt mesh should be weighted to the spine and arm bones with smooth transition weights across the shoulder joints. Weight bleeding between the upper arm bones and the spine bones at the shoulder joint is correct - it produces a natural deformation when the player raises their arms.
Shirt prefab hierarchy
The minimum structure for a shirt prefab:
MyShirtPrefab (root)
└── Body (SkinnedMeshRenderer - shirt mesh)
└── Material (assigned to the SkinnedMeshRenderer)Shirt inventory footprint guidelines
| Shirt type | Size_X | Size_Y | Rationale |
|---|---|---|---|
| Tank top, undershirt | 2 | 1 | Minimal fabric, small footprint |
| T-shirt, light shirt | 2 | 2 | Standard shirt bulk |
| Heavy jacket, armor carrier | 2 | 2 | Medium footprint |
| Long coat, trench coat | 2 | 3 | Extensive fabric, large footprint |
Complete .dat example: light utility shirt with storage
ID 42201
GUID d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9
Type Shirt
Name MyUtilityShirt
Rarity Uncommon
Size_X 2
Size_Y 2
Size_Z 0.6
Useable Clothing
Armor 0.95
Width 5
Height 3Companion English.dat:
Name Utility Shirt
Description Light utility shirt with 15 storage slots and light ballistic protection. Standard-issue patrol top.Complete .dat example: cosmetic shirt (no armor, no storage)
ID 42202
GUID e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0
Type Shirt
Name MyCasualShirt
Rarity Common
Size_X 2
Size_Y 2
Size_Z 0.6
Useable Clothing
Armor 1.0Companion English.dat:
Name Casual Shirt
Description A comfortable civilian shirt. Provides no storage or ballistic protection.Complete .dat example: tactical shirt with Ignore_Hand
ID 42203
GUID f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1
Type Shirt
Name MyTacticalShirt
Rarity Rare
Size_X 2
Size_Y 2
Size_Z 0.6
Useable Clothing
Ignore_Hand
Armor 0.85
Width 6
Height 3Companion English.dat:
Name Tactical Shirt
Description Heavy-duty tactical shirt with 18 storage slots and enhanced ballistic protection. Left-hand stable design.Complete .dat example: light utility top (no storage)
ID 42204
GUID a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2
Type Shirt
Name MyLightTop
Rarity Common
Size_X 2
Size_Y 1
Size_Z 0.5
Useable Clothing
Armor 1.0Companion English.dat:
Name Light Top
Description A lightweight tank top. Provides no storage or protection.Diagnostic table
| Symptom | Most likely cause | Resolution |
|---|---|---|
| Shirt equips to wrong slot | Type field is not Shirt | Set Type Shirt |
| Pink material on shirt | Material not assigned in Unity | Assign material, rebuild bundle |
| Shirt is static, does not deform with character | MeshRenderer used instead of SkinnedMeshRenderer | Replace with SkinnedMeshRenderer, re-bind bones |
| Shirt deforms incorrectly | Bone names misspelled in Unity | Verify all six arm + spine bone names exactly against character skeleton reference |
| Armor has no effect | Armor 1.0 means zero protection | Lower Armor value below 1.0 |
| Armor reduction is weaker than expected | Must combine with Pants and Vest for significant effect | Tune all three slots together |
| Shirt provides no storage despite having fields | Only Width or only Height set - one of the two is 0 | Set both Width and Height to positive values |
| Storage grid on shirt is wrong size | Width x Height calculation off | Check both field values; recalculate total |
| Shirt mirrored incorrectly for left-handed character | Ignore_Hand flag absent on asymmetrical design | Add Ignore_Hand if the shirt design should not mirror |
| Shirt invisible when equipped | Prefab GUID mismatch | Confirm GUID in .dat matches prefab GUID in Unity bundle |
| Character body disappears with shirt equipped | Character mesh replacement fields enabled but replacement meshes missing | Disable Has_1P_Character_Mesh_Override and related fields, or provide the replacement prefabs |
| Shirt clips through vest when both equipped | Shirt mesh extends above vest chest area | Design shirt mesh to fit under the Vest slot mesh layer |
| Item cannot be picked up | Useable Clothing field missing | Add Useable Clothing |
| Shirt has no storage despite Width and Height set | Width or Height field name misspelled | Confirm field names match exactly: Width and Height |
English.dat localization for shirts
The English.dat file should communicate the shirt's armor tier and storage capacity to the player. The cohort-recommended description pattern:
| Shirt configuration | Description pattern | Example |
|---|---|---|
| Cosmetic (Armor 1.0, no storage) | "A [adjective] [type]. Provides no protection." | "A comfortable civilian shirt. Provides no storage or ballistic protection." |
| Armor only (no storage) | "Provides [tier] protection." | "Light utility shirt with basic ballistic protection." |
| Storage only (no armor) | "Provides [N] storage slots." | "Lightweight shirt with 10 pockets for tool storage." |
| Both armor and storage | "Provides [tier] protection and [N] storage slots." | "Heavy tactical shirt with 18 storage slots and enhanced protection." |
Shirt authoring checklist
Before publishing a shirt mod to the Steam Workshop, confirm the following:
- [ ]
Type Shirtis set correctly. - [ ]
Armorvalue is below 1.0 if protection is intended;Armor 1.0for cosmetic-only shirts. - [ ]
WidthandHeightare both set to positive values if storage is intended; both absent (or 0) for cosmetic-only. - [ ] The prefab uses a SkinnedMeshRenderer with correct bone references.
- [ ] Bone references include
Character_Spine,Character_Spine1,Character_LeftUpperArm,Character_LeftForeArm,Character_RightUpperArm,Character_RightForeArm. - [ ]
Ignore_Handis set for asymmetrically designed shirts that should not mirror in left-handed mode. - [ ] Character mesh replacement fields are used only when the shirt changes the character body shape.
- [ ]
English.datcommunicates the armor tier and storage capacity accurately. - [ ] Tested in-game: shirt visible, deforms with arm movement, armor applies, storage grid appears (if configured).
Best practices
- Tune
Armorrelative to the shirt's visual design and intended role. A civilian-looking shirt with high armor (0.8 or below) will confuse players who interpret visual appearance as a proxy for protection. - Use
WidthandHeightstorage on shirts intentionally - not every shirt needs pockets. Cosmetic shirts should omit storage entirely by leaving both fields at their defaults. - Set
Ignore_Handon shirts with directional graphics, text, or asymmetrical zippers. National jerseys use this pattern because flag designs should not mirror. - Design shirt prefab meshes to fit under the Vest slot. The shirt renders beneath the vest visually; a shirt mesh that extends above the vest chest area will clip through.
- Test armor stacking across Shirt, Pants, and Vest in-game before publishing. The multiplicative stacking produces combined protection that may be higher or lower than individual piece tuning suggests.
- Author cosmetic shirts with
Armor 1.0explicitly to confirm no accidental protection is applied. The default is1.0but setting it explicitly removes ambiguity.
Frequently asked questions
Can a shirt have both Armor and Width/Height storage?
Yes. The Armor field and the Width/Height fields are independent and can be set simultaneously. A shirt with Armor 0.9 and Width 6 / Height 3 provides both 10% damage reduction and 18 storage slots. The shipped Coalition_Top_Captain (ID 1424) demonstrates this pattern with Armor 0.9, Width 6, Height 3.
What is the maximum storage grid a shirt can provide?
The Width and Height fields are uint8 with a theoretical maximum of 255 each, but the practical maximum is constrained by the inventory UI. Width values above 10 produce grids that clip outside the inventory panel bounds. Height values above 8 exceed the standard panel height. The cohort recommendation is to keep Width at or below 6 and Height at or below 4 for shirt storage, as the shirt storage grid appears alongside the main inventory and backpack panels.
Can I add Width and Height to a hat or glasses item?
No. The Width and Height fields are defined on ItemBagAsset, which is the inheritance base for shirts, pants, and backpacks. Hat, mask, and glasses items inherit from ItemGearAsset, which does not provide bag-level storage fields. Adding Width and Height to a hat .dat would cause the engine to silently ignore them.
How does the Ignore_Hand flag affect shirt prefab binding?
When Ignore_Hand is present, the shirt's SkinnedMeshRenderer bone bindings are not mirrored for left-handed characters. The shirt renders in its authored orientation regardless of the handedness setting. When Ignore_Hand is absent (default), the engine mirrors the bone bindings in left-handed mode, flipping the shirt horizontally. The prefab itself does not need a separate left-handed version - the engine handles the mirroring automatically through the skeleton.
Can a shirt provide more storage than a backpack?
A shirt with Width 6 and Height 4 provides 24 storage slots, which is comparable to a standard backpack. A backpack with Width 8 and Height 7 provides 56 slots. Shirts are not intended to replace backpacks as the primary storage expansion - the shirt grid is supplemental. The cohort recommendation is to keep shirt storage at or below 24 slots to maintain the backpack's role as the primary storage item.
What happens if I set Armor to 0.0?
An Armor value of 0.0 means incoming damage is multiplied by zero, resulting in complete immunity from all damage sources while the shirt is equipped. This is not a recommended value for player-facing items. The lowest the cohort recommends is Armor 0.8 (20% reduction), reserved for Legendary-tier tactical armor. Values below 0.5 effectively make the player invincible and will break server balance.
Do I need to set Armor on every shirt?
No. Cosmetic-only shirts can omit the Armor field entirely (which defaults to 1.0, zero protection) or set it explicitly to 1.0. Many shipped cosmetics shirts (Aprix_Top, Astronaut_Top, Detective_Top) omit the Armor field entirely. The engine applies the default of 1.0 when the field is absent.
How does the shirt storage grid interact with the backpack grid?
The shirt storage grid is independent of the backpack grid. A player with a shirt providing 18 storage slots and a backpack providing 56 storage slots has a total of 74 additional slots from both items combined. The shirt grid and backpack grid appear as separate inventory panel regions.
Can I author a shirt that changes the character model shape?
Yes, through the character mesh replacement system (Has_1P_Character_Mesh_Override, Character_Mesh_3P_Override_LODs, Has_Character_Material_Override). This system replaces the character's body mesh with a custom mesh defined in the bundle. The CharacterMeshReplacementTest (ID 1522) is the reference item for this system. Note that this is an advanced feature that significantly increases bundle size and authoring complexity.
What is the standard inventory size for a shirt?
The cohort-recommended default is Size_X 2, Size_Y 2. This matches the vanilla Biohazard_Top, Chef_Top, Construction_Top, Engineer_Top, Rain_Jacket, and most other shipped shirts. Light shirts (tank tops, muscle shirts) can use Size_X 2, Size_Y 1. Heavy coats can use Size_X 2, Size_Y 3.
Can I make a shirt that provides no visual mesh but applies armor?
A shirt with a fully transparent material applies armor normally but has no visible presence on the character model. This is an unusual configuration but technically supported - the armor field is independent of the visual prefab. The cohort recommendation for this use case is to provide a minimal mesh (a small polygon inside the character body that is never visible) rather than a transparent material, because transparent materials have rendering order implications.
Advanced considerations
Shirt in the class inheritance chain
ItemAsset (base item properties)
└── ItemClothingAsset (clothing properties: Useable Clothing, slot behavior)
└── ItemBagAsset (Width, Height - storage grid fields)
└── ItemShirtAsset (Type Shirt, Armor, Ignore_Hand, character mesh replacement)The ItemShirtAsset class inherits from ItemBagAsset, which means shirts have access to the same storage grid system that backpacks use. This is distinct from the Vest slot, which uses Storage_X/Storage_Y from ItemClothingAsset directly. The storage field names are different (Width/Height for shirts vs. Storage_X/Storage_Y for vests), and the two storage systems are independent.
Shirt in RP server context
In RP servers, the Shirt slot carries the faction's uniform identity and is typically the armor-bearing item for the faction's combat role. The cohort recommendation for RP server shirt authoring is to define a consistent armor tier across the Shirt, Pants, and Vest set for each faction, then use the shirt's Width/Height storage to differentiate roles within the faction - a medic shirt might have less armor but more storage pockets; a frontline combat shirt has higher armor and minimal storage.
Shirt balance for survival servers
On survival-focused servers where inventory management is a core gameplay element, shirt storage becomes a meaningful balance lever. A shirt with Width 6 and Height 3 (18 slots) is approximately three extra inventory rows, which is substantial. The cohort recommendation for survival servers is to reserve shirts with storage for higher rarity tiers or later-game progression, keeping early-game shirts cosmetic-only or light-storage.
Appendix A: Complete shirt field quick reference
| Field | Type | Source class | Required | Default | Notes |
|---|---|---|---|---|---|
ID | uint16 | ItemAsset | Yes | - | Unique item ID |
GUID | uint128 hex | ItemAsset | Yes | - | 128-bit globally unique identifier |
Type | enum | ItemClothingAsset | Yes | - | Must be Shirt |
Name | string | ItemAsset | Yes | - | Internal name |
Rarity | enum | ItemAsset | No | Common | Rarity tier |
Useable | enum | ItemClothingAsset | Yes | - | Must be Clothing |
Size_X | uint8 | ItemAsset | Yes | - | Inventory width |
Size_Y | uint8 | ItemAsset | Yes | - | Inventory height |
Size_Z | float | ItemAsset | No | Engine default | Visual scaling |
Armor | float | ItemClothingAsset | Recommended | 1.0 | Damage multiplier |
Width | uint8 | ItemBagAsset | No | 0 | Storage grid width - inherited from bag |
Height | uint8 | ItemBagAsset | No | 0 | Storage grid height - inherited from bag |
Ignore_Hand | flag | ItemShirtAsset | No | not set | Shirt-specific - left-handed mirror control |
Has_1P_Character_Mesh_Override | bool | ItemShirtAsset | No | False | Character mesh replacement - advanced |
Character_Mesh_3P_Override_LODs | uint16 | ItemShirtAsset | No | 0 | LOD count for 3P mesh replacement |
Has_Character_Material_Override | bool | ItemShirtAsset | No | False | Material override for replacement mesh |
Pro | bool | ItemAsset | No | False | PRO/Gold gating |
Bypass_ID_Limit | bool | ItemAsset | No | - | Bypass ID limit for high IDs |
Proof_Water | bool | ItemClothingAsset | No | - | Water damage immunity |
Proof_Fire | bool | ItemClothingAsset | No | - | Fire damage immunity |
Proof_Radiation | bool | ItemClothingAsset | No | - | Radiation damage immunity |
Appendix B: Shirt storage grid comparison table
| Width | Height | Total slots | Example use case |
|---|---|---|---|
| 0 | 0 | 0 | Cosmetic-only shirt |
| 4 | 3 | 12 | Light duty top - Construction_Top |
| 5 | 2 | 10 | Utility top - Biohazard_Top, Diving_Top |
| 5 | 3 | 15 | Standard duty top - Chef_Top, Engineer_Top |
| 6 | 3 | 18 | Patrol top - Coalition_Top_Captain, Rain_Jacket |
| 5 | 3 | 15 | Shorts - Cargo_Shorts |
Appendix C: External references
- Smartly Dressed Games modding documentation - Shirt assets - the official field reference for
ItemShirtAssetand its parent classItemBagAsset. - Clothing Asset Reference - the base clothing reference covering shared fields, prefab requirements, and the full clothing pipeline.
- Hat Asset Reference - the previous article in this section; covers the Hat slot which inherits from
ItemGearAsset(notItemBagAsset). - Pants Asset Reference - the next article; covers the Pants slot, which shares the same
ItemBagAssetinheritance as shirts. - Bag Asset Reference - covers the
ItemBagAssetbase class from which shirts and pants inherit their storage fields. - Item Asset Anatomy - the universal shared field reference for every item type.
- Master Bundle Export - the Unity bundling workflow used to package shirt prefabs.
- Steam Workshop Submission - publishing workflow for full mods.
- Unturned on Steam - the base game page; install and version history.
Cross-references
- Hat Asset Reference - the previous article; covers the Hat slot with
ItemGearAssetinheritance. - Pants Asset Reference - the next article; covers the Pants slot which shares
ItemBagAssetinheritance and storage viaWidth/Height. - Clothing Asset Reference - the base clothing reference for shared fields, armor stacking, and slot behavior.
- Bag Asset Reference - the
ItemBagAssetbase class reference that documents theWidthandHeightstorage fields inherited by shirts. - Vest Asset Reference - the Vest slot reference which uses
Storage_X/Storage_Yinstead ofWidth/Height. - Project Folder Structure and GUIDs - item folder layout and GUID authoring workflow.
- How to Export an FBX - FBX export for shirt meshes.
- Character Mesh Replacement - advanced character body mesh replacement documentation.
- Smartly Dressed Games modding documentation - official field reference.
- Unturned on Steam - game page and community.
Document history
| Version | Date | Author | Notes |
|---|---|---|---|
| 1.0 | 2026-07-26 | 57 Studios | Initial publication. Complete shirt asset field reference, Armor mechanics, Width/Height storage grid, Ignore_Hand flag, character mesh replacement, diagnostic tables, worked examples. |
