Skip to main content
s&box lets you design and sell cosmetic clothing items worn by the Citizen character. Approved items go on sale in the s&box store and you receive a cut of every sale through Steam Workshop.

How clothing works

Every player in s&box uses the Citizen character as their base model. Clothing assets are separate .vmdl files that bonemerge onto the Citizen skeleton at runtime. A .clothing definition file ties together the model, its human variants, icon, category, and body slot data. The platform uses a two-layer system:
LayerWhat goes here
Layer 1 (Slots Under)Shirts, trousers, shoes, gloves
Layer 2 (Slots Over)Jackets, vests, open coats, armour
Items on Layer 1 sit under items on Layer 2. Full-body outfits (skeletons, mascot suits, full armour sets) are exceptions and can occupy both layers.

First-time setup

1

Create an addon project

Open s&box and create a new project using the Addon template. You are publishing a model, so you do not need a full game project.
2

Enable Show Base Content

In the Asset Browser settings, turn on Show Base Content. This exposes the citizen addon folder so you can reference the reference meshes and rigs.
Never edit files inside the core addon folders. Only work within your own project folder.
3

Grab the Citizen reference files

Copy the reference FBX files you need from the game folder:
  • Citizen rig: Steam\steamapps\common\sbox\addons\citizen\Assets\models\citizen\citizen_REF.fbx
  • Human male rig: Steam\steamapps\common\sbox\addons\citizen\Assets\models\citizen_human\citizen_human_male_REF.fbx
  • Human female rig: Steam\steamapps\common\sbox\addons\citizen\Assets\models\citizen_human\citizen_human_female_REF.fbx
Build your clothing mesh around these reference files in your 3D software of choice.

Quality requirements

Facepunch reviews every submission. Meet the following requirements before you submit.

Triangle counts

Scale your triangle budget to the complexity and coverage of the item. As a rough hard limit, 20–30k triangles for a full outfit. Use existing clothing assets as reference.
Item typeApproximate budget
Hat / capUnder 4k tris
Shirt3–8k tris
Jacket5–12k tris
Full outfitUp to 20–30k tris

Topology

Use clean, quad-dominant topology. Denser loops are required at joints — knees, elbows, and any area that bends or creases. Poor topology causes visible deformation during animation.

Texture sizes

Item typeRecommended size
Hats512 px or 1024 px
Glasses512 px
Shirts / jackets / trousers1024 px or 2048 px
Shoes / gloves512 px or 1024 px
Full outfitsOne 4096 px or multiple up to 2048 px each

Materials

Keep to one material set per clothing item. A second material is acceptable only when the design genuinely requires it (for example, a jacket with a separate fur trim). More materials increase draw calls and hurt performance.

Shaders

Use the Complex shader for all clothing. Enable the following PBR settings:
  • Specular — required for the roughness map to work.
  • Metalness Texture — required if you have a metal map.
  • Alpha Test (Translucent settings) — required for transparency.
  • Bent Normal (Normal settings) — use a bent normal baked in your texturing software.
After adding your ambient occlusion map, the two AO sliders default to 0. Set them to a non-zero value or the AO map will have no visible effect.
Your material must include at minimum: Color, Normal, Bent Normal, Roughness, and Ambient Occlusion. Metal and Alpha maps are optional depending on your design.

Skinning

Skin your mesh to the Citizen skeleton’s twist bones, not the limb bones themselves.
The limb bones (arm_upper_R, leg_lower_L, etc.) are containers for their *_twist0 and *_twist1 child bones. Never skin geometry to the limb bones directly — only to the twist bones. Skinning to limb bones breaks height scaling.

LODs (mandatory)

Level-of-detail meshes are required. Here is the general target for each level:
LODTarget trisSwitch distance
LOD0Starting mesh
LOD1~80% of LOD0Short
LOD21000–1500 trisMedium
LOD3100–200 trisLong
LOD4Same as LOD3, one materialOptional
Check your LODs in ModelDoc using the wireframe and Quad Overdraw debug views. When the wireframe looks solid, reduce triangle density.

Layering

How layers work

Clothing fits together in layers so players can build outfit combinations:
  • Trousers sit under shirts.
  • Shirts (Layer 1) sit under jackets (Layer 2).
  • Shoes sit under trousers.
  • Gloves sit at Layer 1 and must not clip into Layer 2 jackets.
Test layering in your project scene by adding a Citizen model and attaching existing clothing from citizen\assets\models\citizen_clothes as components.

Cutting the Citizen body

For Layer 1 items (shirts, for example), you can extract and hide the Citizen’s torso bodygroup to avoid z-fighting. Extract only the visible portion of the torso geometry from citizen_REF.fbx and include it as a cut mesh in your ModelDoc.

Human variations

Every clothing submission needs a human male version morphed from the Citizen mesh to the proportions of citizen_human_male_REF.fbx. Clothing that shows skin (short sleeves, shorts) also needs a human female version from citizen_human_female_REF.fbx.
1

Import the human reference

Bring citizen_human_male_REF.fbx into your 3D software alongside your finished clothing mesh.
2

Move major shapes

Use soft selection to move the neck and wrists to match the human proportions. Enable Connect Only to isolate arm adjustments without disturbing the chest area.
3

Adjust details

Move secondary shapes — pockets, collars, cuffs — to fit the human silhouette. Fix any stretching or distortion caused by the morph.
4

Add edge loops where needed

Heavily morphed areas (especially shoulders) may need additional edge loops to smooth out stretched geometry. The UVs stay the same, so adding loops will not distort the texture.
5

Create LODs for the human version

Transfer vertex positions from your Citizen LOD meshes using the same UVs, or rebuild them if topology changes were significant.
For the female version, only edit the mesh inward (ribs, waist). Do not expand the silhouette outward — this causes clipping with Layer 2 items.

Setting up the .clothing file

1

Create a Clothing Definition

Right-click inside your project folder in the Asset Browser and select New → Citizen → Clothing Definition.
2

Assign your models

  • Model — your Citizen version .vmdl
  • Human Alt Model — your human male .vmdl
  • Human Alt Female Model — your female .vmdl (shirts and skin-showing items only)
3

Set name, description, and category

Give your clothing a title and description. Set the category (e.g., Hat) and sub-category (e.g., Hats) so it appears correctly in the character menu.
4

Generate an icon

In the Icon section, choose a camera mode that suits the item (Head for hats, Body for shirts, etc.) and click Save Icon to Disk.
5

Set body slots

Configure Slots Under and Slots Over to match the layer and body coverage of your item.
Example itemSlots UnderSlots Over
ShirtChest, LeftArm, RightArm
Open jacketLeftArm, RightArm
Closed jacketChestLeftArm, RightArm
Hat (baseball cap)HeadTop
If your item completely covers the body, select all slots in both Slots Under and Slots Over to prevent other clothing from being worn simultaneously.

Publishing to sbox.game

1

Open the publish dialog

Right-click your .clothing file in the Asset Browser and select Publish → Edit settings and Publish.
2

Create or select an organization

In the publish window, create a New Organisation or select an existing one. You will be taken to the sbox.game website to complete organization creation. Restart s&box afterward for the organization to appear in the dropdown.
3

Upload and publish

Click Next to upload your files. The asset will not be publicly visible yet.
4

Finalize on sbox.game

Open the asset page on sbox.game, add a title, description, and relevant tags (for example, medieval, metal, armour). Set Publish State to Released and save.

Earning revenue

Once your item is approved and on sale, you receive a percentage of every purchase through Steam Workshop. The review process checks your item against the quality guidelines above. Items that fail on topology, skinning, LODs, or obvious clipping are likely to be declined.
Join the s&box community Discord at https://discord.com/invite/sbox to ask questions, get feedback from other creators, and reach the s&box team directly.