Skip to main content

Data Format

XDEV Appearance internally uses structured appearance data to synchronize:

  • clothing
  • props
  • overlays
  • tattoos
  • peddata
  • facial structure

This document explains the internal format philosophy and supported structures.


System Philosophy

Unlike many appearance systems, XDEV intentionally separates:

appearance
tattoos
peddata
outfits
cache data

into modular structures.

Purpose:

  • cleaner synchronization
  • compatibility support
  • rebuild reliability
  • easier conversions

Main Appearance Structure

Typical appearance structure:

{
model = "",
hair = {},
headBlend = {},
faceFeatures = {},
headOverlays = {},
eyeColor = 0,
components = {},
props = {},
tattoos = {}
}

Model

Stores the active ped model.

Example:

model = "mp_m_freemode_01"

Used for:

  • ped rebuilding
  • compatibility validation
  • synchronization workflows

Hair Structure

Example:

hair = {
style = 0,
texture = 0,
color = 0,
highlight = 0
}

Supported values:

style
texture
color
highlight

Head Blend Structure

Example:

headBlend = {
shapeFirst = 0,
shapeSecond = 0,
skinFirst = 0,
skinSecond = 0,
shapeMix = 0.0,
skinMix = 0.0
}

Purpose:

facial genetics
skin blending
parent mixing

Face Features Structure

Example:

faceFeatures = {
noseWidth = 0,
jawBoneWidth = 0,
chinBoneSize = 0
}

Supported categories include:

nose
jaw
chin
cheeks
eyes
neck
lips

Head Overlays Structure

Example:

headOverlays = {
beard = {
style = 0,
opacity = 0,
color = 1,
secondColor = 0
}
}

Supported overlay values:

style
opacity
color
secondColor

Overlay Notes

Some overlays support color palettes while others only support opacity.

Typical colored overlays:

beard
eyebrows
makeup
lipstick
blush

Eye Color Structure

Example:

eyeColor = 0

Used during:

  • surgeon workflows
  • face rebuilding
  • cache synchronization

Components Structure

Components represent GTA clothing categories.

Example:

components = {
{
component_id = 11,
drawable = 5,
texture = 0
}
}

Supported values:

component_id
drawable
texture

Props Structure

Props represent removable GTA accessories.

Example:

props = {
{
prop_id = 0,
drawable = -1,
texture = -1
}
}

Using:

drawable = -1

removes the prop completely.


Tattoos Structure

Example:

tattoos = {
ZONE_HEAD = {
{
name = "TAT_BB_021",
opacity = 0.4
}
}
}

Supported values:

name
opacity
zone
collection
hashes

depending on synchronization stage.


peddata Structure

The peddata system exists primarily for:

custom peds
addon peds
ped rebuilding
advanced synchronization

Unlike many appearance systems, XDEV separates ped-specific appearance data from freemode structures.


Outfit Data Structure

Outfits intentionally use lightweight structures.

Example:

{
components = {},
props = {}
}

Purpose:

preserve identity data
avoid face overwrites
simplify synchronization

Cache Data Structure

Face cache structures typically contain:

{
headBlend = {},
faceFeatures = {},
headOverlays = {},
eyeColor = 0,
hair = {}
}

without clothing or tattoo data.


Compare Workflows

The system may internally compare values before saving.

Common compare targets:

item
texture
mix
opacity
color

Purpose:

  • reduce redundant saves
  • optimize synchronization
  • avoid unnecessary updates

Compatibility Structures

The converter layer supports structures from:

Illenium Appearance
legacy appearance systems
custom frameworks

through internal rebuild workflows.


Serialization

Most appearance structures are stored using:

JSON encoding

inside SQL tables.

Typical fields:

skin
tattoo
peddata
components
props

Synchronization Philosophy

XDEV intentionally rebuilds appearance from multiple synchronized structures instead of relying on a single monolithic blob.

Purpose:

better rebuild reliability
modularity
compatibility support
ped synchronization

Developer Notes

The resource intentionally avoids forcing a single rigid appearance structure.

Instead, the architecture focuses on:

conversion
modularity
compatibility
rebuild safety

to simplify long-term maintenance and migrations.