the cutting room mirror

Unused Behaviors

This is a sub-page of The Sims (Windows).

Certain modi operandi in The Sims went unused. There have been efforts to reverse-engineer and re-implement them in the game to see how they would have functioned, with their possible context being drawn from reminiscent graphics, animations, and text strings.

Note: These functions have been tested with the original base build (1.0). A small number of the following features were repurposed for different objects and contexts in later expansion packs, not necessarily in the same way as originally intended. These repurposed features will be mentioned in the associated notes.

Sub-Pages#

Properties#

In the visual programming language that handles the behavior of objects in the game, "Expression" is a handy primitive used for logical and mathematical operations. Some of its functions include assigning numeric values to an object's local attributes and establishing conditional branches based on those attribute values. In doing so, it can also provide instructions that set how objects manifest themselves within the game world, both in its logic and appearance. This includes checking their default heights, the types of surfaces they can be placed on (such as counters, floors, and end tables), and other physical properties.

Naturally, not all of these properties are utilized.

Object Placement#

Object Heights#

Behavior.IFF — 10 December 1999 14:10

#

RTS

Comment

Snapshot

Context1

#std heights

16512

undefined

16520

low table

style="background:#FFFFBF;color:#4D4D4D| Sets the height of objects so they can be placed on surfaces that are lower than dining tables, yet higher than the floor. No surfaces in the base game match this description, causing a good share of "low table reaching" animations to go unused. Interestingly, the bill object is the only one that references this placement setting in its "init" function, suggesting that the original purpose of "low tables" was to be somewhere Sims would drop hand items (like bills) on. The flag would be repurposed for Hot Date and subsequent expansion packs, where coffee tables were first implemented as a restoration of coffee tables seen in pre-release screenshots that were nonexistent in the final product.

style="background:#000052|Pictured here are the various types of surface the game can handle; the object previewed over the highlighted tile is the one under the unused low table flag.1999 pre-release snapshots picturing coffee tables, which were first featured in later expansion packs.]]

Only the bill object has a primitive that gives them the right conditions to be placed on "low surfaces" that don't exist in the base game.#std heights flag.

Wall Placement#

Behavior.IFF — 10 December 1999 14:10

#

RTS

Comment

Snapshot

Context

STR# 229 - wall placement flags

1

wall required on right

rowspan="2" style="background:#FFFFBF;color:#4D4D4D| Base game wall objects (paintings, toilets...) always face the opposite direction of any walls they're placed on, so these went unused. A similar placement setting would be used for some wall objects in later expansion packs.

rowspan="2" style="background:#000052|Modified object with its wall placement flags manually set as wall required on right.

Alpha-channel graphic of a door

, remnant of an old attempt in implementing diagonal objects.]] wall placement flags

3

wall required on left

4

corner not allowed

rowspan="2" style="background:#FFFFBF;color:#4D4D4D| These flags suggest that, at some point in development, certain objects could be snapped out of the tile grid's center in order to be placed on the corner of tiles on the floor, terrain, walls, and fences. This placement feature was removed in favor of always having items snap to the center of tiles.

rowspan="3" style="background:#000052|Modified object with its wall placement flags manually set as 6: diagonal required.visual development art by Eric "Irk" Hedman (ca. 1998), suggesting the implementation of 45º sprite rotation for 2D objects.]]

5

corner required

6

diagonal required

style="background:#FFFFBF;color:#4D4D4D| This flag suggests a scrapped concept where certain objects were meant to be placed diagonally only. No objects in the game utilize this rule as object sprites were only created for placement in four inter-cardinal directions.

Other#

Behavior.IFF — 10 December 1999 14:10

#

RTS

Value

Comment

Snapshot

Context

STR#141 - Data labels

room placement

2

style="background:#FFFFBF;color:#4D4D4D| Forbids users from placing objects outside the house. No object in the base game uses this. Repurposed in Hot Date and subsequent expansion packs where ceiling lamps were introduced to the game.

style="background:#000052|Object with its "Expression" myroom placement manually set as 2.

room placement flag.

rowspan="3" colspan="2" style="text-align: center; background-color: #dedede;|rotation notches

1

style="background:#FFFFBF;color:#4D4D4D| Allows objects to be rotated in eight different 45-degree directions, effectively enabling diagonal placement. This feature is technically underutilized rather than unused: it is the default rotation value assigned to Sims. Players can observe this when using the "move_objects" cheat code: Sims can be rotated in eight directions, while 2D objects are always limited to four inter-cardinal directions. The existence of this rotation value suggests a potential intention during development to enable diagonal placement for certain objects. This idea is further reinforced by the presence of unused placement flags specifically coded for diagonal placement. Users can hack objects to achieve 45-degree rotations by altering their local "rotation notches" value to 1. It works, but none of the objects in the game have pre-rendered graphics for any of the extra directions. Therefore, players will see placeholder tooltips in place of the sprites, unless extra draw group slots are manually added to the objects through modding.

style="background:#000052|Object with its "Expression" myrotation notches manually set to 1.

rotation notches

4

style="background:#FFFFBF;color:#4D4D4D| Sets the rotation of the 2D objects to 180º, consequently always reversing its facing direction.

style="background:#000052|Object with its "Expression" myrotation notches manually set to 4.

8

colspan="2" style="background:#FFFFBF;color:#4D4D4D| Sets the rotation of 2D objects to 360 degrees which, in practice, rotates the object straight to its original direction, as if rotation was disabled.

STR#202 - Placement Flags

4

style="text-align: center; background-color: #dedede;|on door

colspan=;color:#17191c;--link:#12467a;--newlink:#9c2b26;--dim:#4a4d52"3" rowspan="2" style="background:#FFFFBF;color:#4D4D4D| Unused (and seemingly broken) flags meant to allow objects to intersect tiles occupied by door and window objects.

placement flags

5

style="text-align: center; background-color: #dedede;|on window

7

style="text-align: center; background-color: #dedede;|unused

Other Properties#

Object Function#

Function

Comment

Snapshot

Context

style="text-align: center; background-color: #dedede;|level info request

style=;color:#17191c;--link:#12467a;--newlink:#9c2b26;--dim:#4a4d52"background:#FFFFBF;color:#4D4D4D| This tree is called when the "level info" button is pressed. May not be used in the final game. Calls a given object script (or "tree") if the player clicked the "Level Info" button. In practice, however, said button does not exist in the final product. The last development build that said button can be seen is in the Steering Committee prototype — it originally printed the description of the ongoing demo scenario on a dialog window.

1998 pre-release

.]]

level info request function and its developer description.

rowspan="2" style="text-align: center; background-color: #dedede;|ui event

style=;color:#17191c;--link:#12467a;--newlink:#9c2b26;--dim:#4a4d52"background:#FFFFBF;color:#4D4D4D| This tree is called in the current situation object when an event in the user interface occurs. The first parameter is the type of the event. The second parameter is the id of the event. Suggests that, at some point, a given object script could be called in reaction to GUI features as the picture-in-picture overlays or the arrows that point at certain control panel elements during the Newbie tutorial. Not to be confused with the "ui effect" primitive.

ui event function and its developer description.

Wall Adjacency Flags#

Behavior.IFF — 10 December 1999 14:10

#

RTS

Comment

Snapshot

Context

STR# 208 - wall adjacency flags

2

style="text-align: center; background-color: #dedede;|wall in front = 3

rowspan=;color:#17191c;--link:#12467a;--newlink:#9c2b26;--dim:#4a4d52"2" style="background:#FFFFBF;color:#4D4D4D| These flags' original purpose is the modification of an object's properties in case there's a wall in front or behind it. The staircase objects use similar flags for the means of removing their rails on adjacent walls on their left or right side. Later expansion packs repurposed the unused IDs for objects such as awnings.

wall adjacency flags only see use in the stair objects: if they're placed next to a wall, their adjacent rail is then removed.
wall adjacency flags

3

style="text-align: center; background-color: #dedede;|wall behind = 4

Movement

Behavior.IFF — 10 December 1999 14:10

#

RTS

Comment

Context

STR# 203 - Movement Flags

0

style="text-align: center; background-color: #dedede;|sims can move it

style=;color:#17191c;--link:#12467a;--newlink:#9c2b26;--dim:#4a4d52"background:#FFFFBF;color:#4D4D4D| At some point, Sims might have been able to somehow rearrange the objects in the house at their will, under unknown circumstances. In normal gameplay, objects can only be moved with the "Hand Tool". For some reason, this flag was loosely referenced in the payphone object's "init" function in The Sims Online — in theory, this could refrain Sims from moving it, if the engine ever allowed them to do such a thing in the first place.

movement flags

2

style="text-align: center; background-color: #dedede;|self propelled

Statuses#

Behavior.IFF — 10 December 1999 14:10

#

RTS

Comment

Context

STR# 142 - flags for flag field

0

style="text-align: center; background-color: #dedede;|unused

flags

7

style="text-align: center; background-color: #dedede;|unused

STR# 214 - Flags for Flag Field 2

0

style="text-align: center; background-color: #dedede;|CanBreak

rowspan=;color:#17191c;--link:#12467a;--newlink:#9c2b26;--dim:#4a4d52"5" style="background:#FFFFBF;color:#4D4D4D| Suggest older flags that designate different deterioration states for an object — electronics, house plants, the aquarium etc. Final objects handle their dirty/broken statuses under more complex Private trees.

flag field 2 In the object constant database, an obsolete temperature is listed.

1

style="text-align: center; background-color: #dedede;|CanDie

6

style="text-align: center; background-color: #dedede;|Fixable

11

style="text-align: center; background-color: #dedede;|CanGetDirty

12

style="text-align: center; background-color: #dedede;|ContributesToAsthetic (sic)

3

style="text-align: center; background-color: #dedede;|ObstructsView

4

style="text-align: center; background-color: #dedede;|Floats

style=;color:#17191c;--link:#12467a;--newlink:#9c2b26;--dim:#4a4d52"background:#FFFFBF;color:#4D4D4D| Suggests an intention in development to implement a number of items that could drift indefinitely or be placed over water, either on a swimming pool or artificial pond tiles.

8

style="text-align: center; background-color: #dedede;|GeneratesHeat

style=;color:#17191c;--link:#12467a;--newlink:#9c2b26;--dim:#4a4d52"background:#FFFFBF;color:#4D4D4D| May refer to a cut temperature mechanic for house objects. No objects in the final game use this flag. Objects that, by definition, should have had it (fireplaces, stoves, etc.) instead have private trees which simply set how they increase the lot's "Room" motive score, without any explicit consideration for how "warm" the room gets. Earlier in development, the unused object constant "temperature", which would presumably benefit from items that "generate heat", may have been intended to play a role in the game before being made irrelevant in the final, as no object is coded to check or assign a "temperature" value.

9

style="text-align: center; background-color: #dedede;|CanBeLighted

style=;color:#17191c;--link:#12467a;--newlink:#9c2b26;--dim:#4a4d52"background:#FFFFBF;color:#4D4D4D| "GeneratesLight" is used, instead.

Miscellaneous#

Behavior.IFF — 10 December 1999 14:10

#

RTS

Comment

Context

#visitor schedule

16394

style="text-align: center; background-color: #dedede;|Walk By

style=;color:#17191c;--link:#12467a;--newlink:#9c2b26;--dim:#4a4d52"background:#FFFFBF;color:#4D4D4D| Exact purpose unknown; it might refer to an old flag for handling arriving neighbors.

#visitor schedule

#Children Grades

17408

style="text-align: center; background-color: #dedede;|A+

rowspan=;color:#17191c;--link:#12467a;--newlink:#9c2b26;--dim:#4a4d52"11" style="background:#FFFFBF;color:#4D4D4D| While certain object events call flags that check or change the school grades for child Sims, the specific flags listed here are never used.

#Children Grades

17409

style="text-align: center; background-color: #dedede;|A

17410

style="text-align: center; background-color: #dedede;|A-

17411

style="text-align: center; background-color: #dedede;|B+

17413

style="text-align: center; background-color: #dedede;|B-

17414

style="text-align: center; background-color: #dedede;|C+

17417

style="text-align: center; background-color: #dedede;|D+

17418

style="text-align: center; background-color: #dedede;|D

17419

style="text-align: center; background-color: #dedede;|D-

17421

style="text-align: center; background-color: #dedede;|F #2

17422

style="text-align: center; background-color: #dedede;|F #3

#Global Tuning

16642

style="text-align: center; background-color: #dedede;|dislike

rowspan=;color:#17191c;--link:#12467a;--newlink:#9c2b26;--dim:#4a4d52"2" style="background:#FFFFBF;color:#4D4D4D| Adjusts a Sims' relationship status to "Hate". In the final game, friendship and love are unique events that receive a distinct treatment by the game, signified by help system messages and the sprites (TS-Love.png and TS-Frien.gif), while extremely low relationship scores among Sims don't heavily impact gameplay in the same way, save for a number of hostile interactions that the player has access to in that context. The final game has an unused sprite for the "Hate" relationship status: The_Sims_-_500_hdlinehate.png.

#Global Tuning

16643

style="text-align: center; background-color: #dedede;|Hate

16645

style="text-align: center; background-color: #dedede;|Tile Distance for Shoo

style=;color:#17191c;--link:#12467a;--newlink:#9c2b26;--dim:#4a4d52"background:#FFFFBF;color:#4D4D4D| Might refer to an early mechanic that handled the distance allowed for two Sims to be in the same bathroom without one asking the other to go away in case their privacy is disturbed.

#category

17152

style="text-align: center; background-color: #dedede;|unknown

rowspan=;color:#17191c;--link:#12467a;--newlink:#9c2b26;--dim:#4a4d52"5" style="background:#FFFFBF;color:#4D4D4D| Unused flags belonging to an old object categorizing convention that objects such as beds and showers still have in their "init" functions as early remnants. At one point, it might have been used to trigger certain events in case one object of their respective kind was found in the house.

#category

17153

style="text-align: center; background-color: #dedede;|phone

17154

style="text-align: center; background-color: #dedede;|level

17155

style="text-align: center; background-color: #dedede;|job

17160

style="text-align: center; background-color: #dedede;|column

(Source: LUCPIX)

Primitives#

Behavior.IFF — 10 December 1999 14:10

#

RTS

Comment

Context

STR# 139 - Primitives

21

style="text-align: center; background-color: #dedede;|show string

style=;color:#17191c;--link:#12467a;--newlink:#9c2b26;--dim:#4a4d52"background:#FFFFBF;color:#4D4D4D| An early "dialog" equivalent. It does not seem to work in the final product. It's meant to somehow print "STR#" resources on the screen as pop-up windows or tooltips. Contrary to "dialog", this primitive does not have any options to add indexed "_BMP" images close to the printed text, or any other special features. Only old, unused trees indexed in the stove and fridge objects reference this primitive.

show string

38

rowspan="3"; style="text-align: center; background-color: #dedede;|~unused

style=;color:#17191c;--link:#12467a;--newlink:#9c2b26;--dim:#4a4d52"background:#FFFFBF;color:#4D4D4D| "Headline" is the designation of old and unused sprites that were called over the Sims' heads as a way of expressing their feelings. Taking this into account, this primitive might be an early equivalent of "set balloon".

"Set Headline", ~unused as its label.

39

rowspan="2"; style="text-align:center;background-color:#EAECF0;color:#17191c;--link:#12467a;--newlink:#9c2b26;--dim:#4a4d52" |

"Show, Hide" primitive, ~unused as its label.

40

"Run Typed Tree", ~unused as its label.

(Source: LUCPIX)

Primitive Features#

user event#

Sample of a Small PIP window. user event The "user event" primitive adds some elements — as the animated Picture-in-Picture overlay — that highlight important events in the game. Even though the engine can handle "Small", "Medium" and "Large" windows fine, only "Medium" and "Large" are ever used in the final game.

(Source: LUCPIX)

Unused OBJD and OBJf Entries#

Many OBJD entries are unused in favor of OBJf entries (internal notes discourage using OBJD in favor of OBJf) as OBJf is basically an extension of OBJD. If no OBJf entry is associated with an object, the game will use the OBJD values instead. Some of the earliest objects made were never updated with an OBJf entry. For this reason, the technically-unused-but-exists-as-a-functional-fallback OBJD entries won't be included. Most aren't even interesting.

  • version_2 - Never set to anything other than 0. version_1 is always set to 138.
  • sale price - This is never used. The game calculates the sale price from the buy price and the initial and daily depreciation values.
  • shadow brightness - Does not seem to work.
  • level info request - This button does not exist in the final game. If it did, objects could react to it.

(Original research: Leo Gruen)

Footnotes#


  1. Instance at Edith tool (or design document) where said resource is referenced.↩︎