CARR Resource Format
The following information is not based on any proprietary knowledge or restricted documentation—it was entirely derived from observation, experiment, and public information, thus it may be inaccurate or incomplete.
CARR resources store most of the info regarding careers. They can be found in the Careers.iff file or work.iff file, depending upon the game version. Once decoded, they can be used to create these career tables.
|var||Job level 1|
|var||Job level 2|
|var||. . .|
|var||Job level N|
CARR resources start with a 12-byte 'signature' consisting of two words of zero followed by a word containing "CARR" as a little-endian integer.
Now comes the fun part. Most of the information is stored as either strings or fields. A string is a null-terminated text string with the added caveat that it is padded with 0xA3 to a two-byte boundary (relative to the start of the CARR Resource). A field is a numeric value that has been bit-packed according to a rather intricate field encoding algorithm with field widths (not including sign) of 5, 10, 20, and 31 bits.
The career data begins with a few items applying to the entire career track:
|Field||Number of job levels|
The first byte is a compression code; see the description of the field encoding algorithm for details. It always contains the value one.
The career name is the description of the career as a whole; for example, "Business."
The number of job levels is always ten. This may be a game restriction. It would be an interesting experiment to create a CARR resource with more (or fewer) than ten jobs and see what happens.
Each level has the following data.
|Field||Cooking skill required (times 100)|
|Field||Mechanical skill required (times 100)|
|Field||Charisma required (times 100)|
|Field||Body skill required (times 100)|
|Field||Logic skill required (times 100)|
|Field||Creativity skill required (times 100)|
|Field||unknown #1 (always zero)|
|Field||unknown #2 (always zero)|
|Field||unknown #3 (always zero)|
|Field||Start time in hours (0 = midnight)|
|Field||End time in hours (0 = midnight)|
|String||Job name (e.g. "Mailroom Clerk")|
|String||Male uniform mesh|
|String||Female uniform mesh, if different|
|String||unknown (always null)|
The values for friends, cooking, mechanical, charisma, body, logic, and creativity are the level that must be achieved before promotion to this job is possible. The scaling of the skill requirements by 100 suggests that the game tracks the character's attainments scaled up by the same amount.
The unknown field values could be room for expansion, or perhaps they were requirements that were eliminated before the game was released.
The decay values are signed numbers between -13 and 4. They represent how much the corresponding motive is affected by being at work. The dynamic range of the motive values is unknown as this is written, but since most values are very small in absolute value, it suggests that the decay is per-hour rather than per-shift.
Some decay values are positive, particularly the social value for high-level jobs in the political track (reflecting that they do a lot of socializing on the job), but most of the values are small and negative. There's one real anomaly in the values and is probably a bug in the game: the energy decay for the Security Consultant job in the Hacker career track is positive.
|5||Town car||11||Clown car|
The car type is a code for the car used to pick up and drop off for that job. The table at right is reasonably accurate, but someone who is more knowledgeable about cars may wish to tweak the exact names.
Some, like the police cruiser and the military jeep, are only used in a single career track. Others appear in most (if not all) career tracks (at some point, everybody wants to travel in a Limo).
The male and female meshes are the mesh(es) to apply when in work clothes. The female mesh is present only if it is different from the male mesh, otherwise it is null.
The meshes can have substitutions applied to them. The known substitutions are $g (gender), which substitutes `m' for males and `f' for females, $b (body), which substitutes `fat', `fit', or `skn' depending upon the body type, and $c (color), which substitutes `drk', `lgt', or `med' depending upon the skin color.
The uniform skin is the bitmap to use to color the body uniform mesh. (If there is more than one mesh in the uniform, such as a hat, that mesh identifies the skin to use.) It can have the same substitutions as the mesh names.
The unknown string may be to allow a female skin to be specified separately from the male skin, but the $g substitution may have eliminated the need for it.
The Sims™ is a trademark of Maxis and Electronic Arts.
This page was last modified Tuesday, 27-May-2003 08:11:35 UTC.