27 — Mutable · character creation · modular mesh (Full game)
Scope: Full game only. Demo keeps placeholder meshes and fake-modular dials (22-demo.md, 11-weapons-firehand-bus.md). Do not pull Mutable into the Demo Ladder slice.
Reference project: E:\Dev\projects\mutable (Epic Mutable Sample — MetaHuman + CO_Character + CO_Weapon).
Epic tutorials: https://dev.epicgames.com/community/learning/tutorials/yjw9/unreal-engine-mutable-tutorials
Verdict
Section titled “Verdict”Yes — Terra Firma’s attachment model is possible with Mutable, if every attachable part shares a compatible skeleton whose attachment bones/sockets already exist on the host (body or gun spine). Mutable is a mesh/texture assembly graph, not a free “socket parent any static mesh” system.
| Surface | Mutable role | TF rule |
|---|---|---|
| Create Character face / groom / colors / tattoos | Primary — CustomizableObject + MetaHuman assets | Premade faces + limited feature dials; no body-size morphs |
| Underarmor (full-body suit) | Primary — base body garment / mesh section | Always on; fixed scale per Sex |
| Flare cloth | Skinned to flare bones on the body skeleton (Mutable merge or child section) | Only cloth besides underarmor |
| Armor plates | Bone/socket attach via a_* bones on Dea / MetaHuman body; plate meshes have no deformation bones |
Light / Medium / Heavy change plates only (FS-FX-004) |
| Gun modules | Shared Class Spine skeleton (Epic weapon sample pattern) | Parts authored in Spine bone space; Refit swaps modules |
Character creation (product lock)
Section titled “Character creation (product lock)”FE17 / Command Deck Appearance. Runtime write: FS-SES-006 + FS-APP-*.
Player can
Section titled “Player can”- Choose Sex: Male | Female (two body bases; no other body types).
- Pick a premade MetaHuman face from the Year-1 catalog we author (not live MetaHuman Creator blending in-game).
- Pick groom set(s): hair / brows / facial hair as authored for that Sex.
- Nudge a small set of facial feature dials that Mutable can drive (material params, limited morphs / reshape we bake into the graph — not MH Creator DNA sculpt).
- Set hair color and skin color.
- Apply tattoos on face and body (Mutable projectors / decals onto underarmor + head textures).
Player cannot
Section titled “Player cannot”- Change body size, limb length, mass, or per-body-part scale.
- Resize underarmor joints or visible flesh when equipping Light / Medium / Heavy plates.
- Pick Race (Year 1 = Human, read-only).
- Pick Subclass, Difficulty, or Corp on create.
AppearanceId on the character record is a structured appearance blob (face preset, groom ids, feature dials, hair/skin colors, tattoo slots) — not a single opaque int forever. Catalog row counts: TBD-057.
Mutable vs our vision (important)
Section titled “Mutable vs our vision (important)”Epic’s clothing sample leans on cloth morph, clip, remove-unseen, body shape. We do not use that for player armor.
TF player mesh stack (Full game):
- MetaHuman head (separate component recommended — Mutable docs: do not merge the huge face skeleton into body).
- Body + underarmor — fixed Sex base; Mutable colors / tattoos / underarmor materials.
- Flare — skinned to flare bones only.
- Armor plates — rigid pieces attached at
a_socket_*. Plate meshesa_plate_*have no skeletal deformation chain of their own; they ride the host bone. - Body props / CF cosmetics — silhouette add-ons; never change plate size or underarmor joint scale (FS-ECO-012 / FS-FX-004).
Naming convention (corps + hand-authored)
Section titled “Naming convention (corps + hand-authored)”Contract: FS-MESH-001. Full cheat sheet + stub alias table: inventory/mesh-naming.md.
{domain}_{role}_{slot}[_{host}][_{corp}_{auth}_{id}]| Token | Meaning |
|---|---|
domain |
a armor · w weapon |
role |
socket (bone) · spine / receiver / module / plate / under / flare (mesh) |
corp |
Meshes only — c1…c5 |
auth |
Meshes only — kit (Refit V1–V5) · hand (Legendary / Unique / Apex) |
Sockets are corp-agnostic (a_socket_chest, w_socket_barrel). Meshes carry family + authorship (a_plate_chest_heavy_c3_kit_v1, w_module_barrel_kinetic_c1_kit_v3, w_module_barrel_rifle_c3_hand_blacksun).
- Armor corp = mesh language (different silhouettes, same sockets).
- Gun modular corp = finish family on shared kit geometry (FS-GUN-004).
- Legacy shorthand
a_<slot>/a_<slot>_armor→a_socket_<slot>/a_plate_<slot>_….
How Mutable makes attachments work
Section titled “How Mutable makes attachments work”Mutable merges participating skeletal meshes that share a compatible skeleton. Attachment bones must already exist on the host (or be merged from a small compatible skeleton). Parts are authored in that bone space.
Does not work (known Mutable limit): parenting arbitrary different-root skeletal meshes via sockets at bake/runtime and expecting correct offsets — community weapon workflows hit this; everything collapses to root unless bones are shared / pre-offset. Fix for TF: put a_socket_* / w_socket_* on the host Spine / body skeleton; author each module with a root (or sole) bone matching that name.
Optional escape hatch: rigid plates as separate USkeletalMeshComponent / static mesh components AttachToComponent on sockets — valid UE path, skips Mutable for plates. Prefer one Mutable-generated body mesh + attach plates only if draw-call / LOD budget says so; otherwise socket attach is fine for rigid armor.
Weapons (Full game)
Section titled “Weapons (Full game)”Align with existing taxonomy (FS-GUN-004):
- Class = Spine — one chassis skeleton / mesh plate; modules attach to Spine bones.
- Receiver — art subclass body that seats on Spine before Barrel.
- Frame — data only (no chassis mesh).
- Accessory Refit — five Install sockets; meshes swap on Spine bones via Mutable CustomizableObject (pattern: sample
CO_Weapon+SKEL_Weapon) or SKG attach once Firehand wraps SKG.
Demo remains fake-modular (stats only, mesh unchanged) until Full-game mesh Refit ships.
MetaHuman + Mutable setup notes (from Epic)
Section titled “MetaHuman + Mutable setup notes (from Epic)”- Enable RigLogic Extensions for Mutable; wire DNA Constant for face animation.
- Prefer separate mesh components: Face vs Body+gear (avoid merging MetaHuman face skeleton into body).
- Grooms: rebind if Mutable-generated face LOD/section layout differs from the original binding mesh.
CustomizableObjectNumBoneInfluences=Twelve(+ 16-bit bone weights) for MetaHuman skinning.- Mutable cannot recreate MetaHuman Creator face blending — premade faces in, switch + materials/projectors/limited reshape only.
GFP / ownership (target)
Section titled “GFP / ownership (target)”| Concern | Owner |
|---|---|
| Create Character + Appearance UI | TFAFrontend |
| Appearance blob persist | TFACore character record / save |
| Mutable CustomizableObject runtime for pawn | TFACore or thin TFAAppearance GFP (Full game) — not Demo |
| Armor plate equip visuals | TFACombat loadout → appearance apply |
| Gun module mesh Refit | TFAWeapons (+ optional TFAModular) |
| SKG attach presentation | ADDON wrap after Firehand (FS-GUN-005) |
Done / Have / Need
Section titled “Done / Have / Need”- Product locks written: this chapter · FS-APP-* · FS-MESH-001 · FE Create Appearance · GDD create bullets
- Attach naming cheat sheet: inventory/mesh-naming.md
- Epic Mutable sample on disk at
E:\Dev\projects\mutable
- Dea skeleton +
a_*/a_*_armornaming in art pipeline - Gun Class Spine taxonomy in FS
- FE17 Create Character chrome (identity + Order)
- Author Year-1 face / groom / tattoo catalogs (TBD-057)
- Build TF CustomizableObjects (character + weapon) from Mutable sample patterns — Full game content project
- Wire Appearance blob → Mutable parameters on pawn spawn
- Decide plate path: Mutable merge onto
a_*vs component socket attach (both legal; pick per LOD budget) - Keep Demo on placeholders; no Mutable dependency in Demo experience
Anchors
Section titled “Anchors”- FS: FS-SES-006, FS-APP-001–FS-APP-004, FS-MESH-001, FS-FX-004, FS-GUN-004 / 006, FS-ECO-012
- Naming cheat sheet: inventory/mesh-naming.md
- FE: Create Character Appearance row ·
W_TFA_Appearance - GDD: Character select and create (Appearance bullets)
- Sample:
Content/Character/CO_Character,Content/Weapon/CO_Weapon, MetaHuman showcase