The Sims · Complete Collection · 2005 DVD · v1.91 · 32-bit

How The Sims builds characters

No sliders, no morphs, no tinting. A sim is a head mesh and a body mesh with one texture each, picked from lists the game builds by matching file names against patterns. Skin tone is a choice of texture, outfits are whole bodies, and the only genetics is skin tone.

704
head entries (223 meshes × their textures)
723
body entries (209 bodies × their textures)
62,162
head × body choices over gender, age and skin
8,801
ways to spend 25 personality points
314
premade characters, plus 35 pets

1 The whole pipeline

CHOICES
Gender · age · skin
Adult (27) or child (9); light, medium or dark. Build comes with the body.
LISTS
Name patterns
c###[m|u][a|c] heads, b###[m|u][a|c]### bodies, over every loaded character file.
TEXTURES
Prefix + skin tone
B011MAFat + lgt → B011MAFatlgt_leder.bmp. One entry per texture.
OUTFITS
More bodies
F S L W H lists; defaults by a best-match rule; must share the body's build.
SAVE
Body strings
STR# 200: b011mafat_01,BODY=B011MAFatlgt_leder…
DRAW
Skin a suit
Suit → (bone, mesh) skins on a 29-bone skeleton; one bone per vertex plus blended twins.
The key idea
The Sims treats character creation as a catalogue, not a sculptor. Every option is a hand-made mesh and texture, found by its file name. That made custom content trivial (drop a .cmx, .skn and .bmp into GameData/Skins), and it is why the expansions could add looks without touching code. The cost: nothing exists between the files.

2 Where the data lives

The DVD carries InstallShield 6 cabinets. Unpacked, the character files are loose in GameData/Skins and ExpansionShared/SkinsBuy, and packed into .far archives (an uncompressed concatenation with a manifest) for each expansion. Every format exists as text and binary:

FormatWhat
.cmx / .cmx.bcf"Character" files: skeletons, suits (named lists of (bone, mesh) skins) and animation headers
.skn / .bmfOne mesh: bones, faces, bindings, UVs, blend weights, vertices in bone space. 2610 meshes ship in both forms and agree.
.bmp8-bit textures, one per head or body per skin tone; the head texture carries face and hair
.iffCharacters and objects. A sim's look is the string table STR# 200, the "body strings"

Two traps: the skeleton stores each bone rotation inverted (blended vertices only meet their partners with the quaternion conjugated), and the data is left-handed, so a renderer must mirror one axis.

3 Create-A-Sim builds its lists from file names

The screen (cWinDesignCharacter) has gender, age and skin buttons and two scroll buttons. Behind each scroll button is a list built by a tiny pattern engine in the exe: literal, two-way alternative, "any n characters". Matching is case-insensitive and on a prefix. Each matching file is paired with every texture named after the matched part plus the skin tone. The lists are hash-table ordered; this study sorts them by name.

Try it: would the game offer this file?
Type a character file name (as in GameData/Skins). The patterns are the exe's.

Create a Sim in the study's demo
Create a Sim in the study's demo (open it): every head, body and outfit for each gender, age and skin tone, with the game's defaults and the body strings it would save.

4 Outfits, underwear and hands

Formal, swimwear, pyjamas, winter (Vacation) and high fashion (Superstar) are bodies too, in lists named F### S### L### W### H###. An outfit must have the body's build (fat, fit, skinny), or it is dropped. A new sim gets defaults, chosen by FUN_00472b1d's best match: highest ratio of matched length to name length, so the shortest matching name wins. A fit man's high fashion is therefore h552mafit_dude, not h551mafit_tuxedobasic. Nude, underwear and six hand poses are built the same way from gender, build and skin tone. The pattern checks out against 54 of the 61 shipped sims and templates, and the other 7 are explained.

5 Personality and the star sign

Five traits share 25 points (stored ×100). The sign isn't chosen: it is whichever of 12 preset personalities is nearest in squared distance. Clicking a sign loads its preset.

Try it: the zodiac rule
A port of FUN_0048432f. Points left: .

6 Townies and the clock-seeded RNG

Create-A-Sim never rolls dice. Hot Date's townie generator does. For each townie, with probability 1/5 it uses one of 36 fixed archetypes (Bombshell, Don Juan, Fatale, Lounge Lizard, Party, Wallflower × gender × skin). Otherwise it clones HDT_Generic, reseeds the engine RNG with timeGetTime() and draws:

Try it: a townie from a seed
The engine RNG is s = s·0x41C64E6D + 0x3039, scaled as (low32(p >> 16) · n) >> 32. Below: the gender of the townie for every millisecond over the next 4 seconds of clock (green female, blue male).

Because nearby seeds give nearly the same first draw, the gender only flips about every 510 ms (mean run 509.7 ms). Townies made in one burst at lot load share a gender. And because the name table is read 1-based with 1 + rand(n − 1), the last name in each list (Zeke, Yolanda) can never come up.

Eight townies drawn 600 ms apart
Eight townies drawn 600 ms apart by the demo with the game's draw order.

7 Babies: only the skin tone is inherited

The genetics is SimAntics code in Baby.iff. At birth, gender is random(2). "create DNA" copies the skin tone of a parent picked by random(2), and mixes personality (A, B or the mean). When the baby grows up, "create child" calls the Make New Character primitive with age 9. It draws a head and then a body uniformly from the child lists for that gender and tone, using the simulation RNG (% n). Faces are not inherited at all.

Eight children of a light and a dark parent
Eight children of a light-skinned and a dark-skinned parent, one RNG stream.

8 How much variety there is

Heads per gender, age and skin

Bodies

Wide but shallow. Light skin has about 1.5× as many heads as dark (292 against 200), and children get a quarter of the adults' heads and a sixth of their bodies.

A Hot Date NPC in the demo
All 314 shipped characters are in the demo, from neighbourhood sims to every NPC and pet.

9 The "infested" download

The zip was said to carry malware. Checked without running anything (ClamAV with 3.6 million signatures over 7190 files, a PE infector sweep, HTML script checks, and a diff of the no-CD exe against the original), it is clean. The hits are "packer" heuristics on SafeDisc-wrapped and SafeDisc-stripped executables. The crack is the game code with SafeDisc removed and nothing added: 101 of its 102 extra strings are restored import names. The one real concern is SafeDisc's own 2004 kernel driver, which predates the fix for CVE-2007-5587.

10 Known gaps in the re-implementation

  • List order. The game's hash-table order isn't reproduced; the options are.
  • Underwear ties between equal-length names are resolved to the observed _undies01 / _briefs01.
  • Bind pose only. No animation, no accessories attached by animations.
  • Personality of premade sims (in the neighbourhood file) isn't parsed.
  • Not compared against the running game: by design, nothing from the disc was run.