Scripting Core FAQ

A general dumping ground for questions pertaining to the structure of the EA Scripting Core.

What is the Scripting Core ?

The Core is a series of MONO compatible CIL DLLs, stored as S3SA files in various packages in your installation directory.

These DLLs contain the majority of the coding that the game relies on to simulate the sims, and govern the interactions available in-game.

The Core is composed of the following files:
  • mscorlib
    • A modified cut-down version of the Microsoft Core Library.
  • ScriptCore
    • Contains the interface between the scripting core and the game-engine
  • Sims3GameplaySystems
    • Contains the simulation coding for the sims, including the "Sim" object itself
    • Also contains some of the base-level coding for objects, such as beds, spawners, ingredients. (not really sure why some objects are in this DLL and other in Sims3GameplayObjects)
  • Sims3GameplayObjects
    • Contains most of the control objects that govern the functionality of objects in-game, such as mirrors, fish bowls, toys, toilets, etc.
  • Sims3MetaData
    • A small DLL contains coding for handling texture compositors, patterns, and skin tones
  • SimIFace
    • Contains the interface between the ScriptCore and the other DLLs
  • System
    • A modified copy of the .NET System DLL.
  • System.XML
    • A modified copy of the .NET System DLL.
  • UI
    • Contains the majority of coding regarding the windows, including CAS

How is the Scripting Core structured ?

The Core is written with a specific hierarchy in mind.
  1. ScriptCore is the only DLL that contains direct links to the Game-Engine
    • On the Game-Engine side, the linkage is handled by an unmanaged DLL called Sims3Common.dll
  2. SimIFace contains a series of interfaces that separates the ScriptCore from the other high-level DLLs
    • Not really clear why EA chose this method, though I suspect it had something to do with potential code reuse in Sims Medieval.
    • However, Sims Medieval deviated from the Sims 3 SimIFace quite significantly, making their cores quite incompatible
    • Though, from a scripting mod standpoint, the usage of interfaces opens up a number of approaches for overriding core coding systems
  3. Sims3MetaData depends on SimIFace
  4. Sims3GameplaySystems and UI depend on Sims3MetaData and SimIFace
    • Note that UI relies on SimIFace to communicate with Sims3GameplaySystems. There is no direct connection between those two DLLs, as noted earlier.
  5. Sims3GameplayObjects depends on Sims3GameplaySystems, Sims3MetaData, and SimIFace