SceneGraph Checker

What is SG Checker?

The SG Checker utility was primarily written to answer two questions

  • Which "things" are missing meshes and/or textures (so not appearing correctly in game)?
  • Which mesh packages are duplicates?

But first, let's address the elephant in the room. What exactly is a "SceneGraph"?

There is an excellent introdution to SceneGraph resources here - https://simswiki.info/wiki.php?title=Tutorials:Understanding_the_Scenegraph - but it should be noted it only really covers objects that have a phtsical representation in game - books, tables, cookers, etc. It doesn't really cover clothes, makup, hairs, recolours, defaulting, binning, etc. That is, while it covers CRES, SHPE, GMND, GMDC, TXMT, TXTR and MMAT resources, it doesn't mention GZPS, BINX, 3IDR, XMOl, XTOL, COLL and a myriad of other resources that can reference meshes and textures.

So the answer to the question "What *exactly* is a SceneGraph" is probably "nobody knows"!

The SG Checker utility therefore addresses the bits that a) affect me and b) I've managed to understand!

It currently checks (see Techy Stuff below)

  • Physical objects (ie SceneGraphs that start from OBJD resources)
  • Overrides of objects (ie SceneGraphs that start from MMAT resources)
  • Recolours of clothing, makeup etc (ie SceneGraphs that can be traced from GZPS, BINX and XFCH resources)
  • Some overlays (specifically for XMOL and XTOL resources)
  • Some other RCOL/3IDR integrity checks (specifically for COLL and XSTN resources)

It should be noted that SimPe lists 147 different Sims 2 resource types; I partially understand a quarter of them.

SG Checker works well for objects and clothing, less well for hairs and makeup. It also tends to report "false positives", ie things that work in game will be reported as having issues, mainly because there are "broken" unused/redundant resources within the packages.

SG Checker is therfore another tool in the player's tool box for fixing issues, and not a silver bullet!


How does SG Checker work?

SG Checker reads all the package files in the specified folder and its sub-folders and creates two lists

  • All the known scene graph resources and which package(s) they are in
  • All the needed scene graph resources and which known resource(s) need them

From the first list it is possible to answer the second question "Which mesh packages are duplicates?" (similiar to how HCDU and HCDU Plus check for conflicts)

By comparing the needed list to the known list the utility creates a third list of resources "needed but unknown" - which is slightly different to "missing" as a) the resources could be in the standard game packages and b) the resources could be in other downloaded packages. SG Checker therefore will also look for "needed but unknown" resources in those packages to produce the "missing" list.


How to configure SG Checker

SG Checker needs to be able to find the standard game packages and it does this by reading the SimPe configuration file, so the first thing we need to do is make sure that SimPe is configured correctly.

What? I need SimPe?

SG Checker only reports possible duplicates and missing resources, you will need some way to ascertain if packages really are duplicates and if missing resources are actually being used. This almost always involves using SimPe.

How to configure SG Checker Redeux

  • Start SimPe
  • From the "Extra" menu, select "Preferences..."
  • On the "System Folders" tab make sure that the paths to your "Original Game", any "Expansion Packs" (EPs) and any "Mini Expansion Packs" (SPs) you have are correct.
  • Click the "OK" button
  • Exit SimPe

For Ultimate Collection these will be (where ~ represents the installed location, eg "D:\Program Files (x86)\Origin Games\The Sims 2 Ultimate Collection")
Original Game
  ~\Double Deluxe\Base
Expansion Packs
  ~\University Life\EP1
  ~\Double Deluxe\EP2
  ~\Best of Business\EP3
  ~\Fun with Pets\EP4
  ~\Seasons
  ~\Free Time
  ~\Bon Voyage
  ~\Apartment Life
  ~\Fun with Pets\SP9
Mini Expansion Packs
  ~\Fun with Pets\SP1
  ~\Glamour Life Stuff
{blank}
  ~\Double Deluxe\SP4
  ~\Best of Business\SP5
  ~\University Life\SP6
  ~\Best of Business\SP7
  ~\University Life\SP8

  • Start SG Checker
  • From the "File" menu, select "Configuration..."
  • Click the "Select Sims 2 Path" and browse to your highest installed EP folder, for Ultimate Collection this will end "Fun with Pets\SP9"
  • The SimPE path should be correct (this is read from the Windows Registry), if not correct it
  • Click the "OK" button
  • Click the "Downloads Folder..." button
  • Browse to your downloads folder, typically something like "This PC\Documents\EA Games\The Sims™ 2 Ultimate Collection\Downloads" and click the "Select Folder" button
  • Exit SG Checker, or proceed to "How to check a folder"

How to check a folder

While you could check your entire downloads folder, this is not recommended (unless you have a lot of time to spare and don't mind being swamped by information!)

It's better to check a sub-folder at a time, for example, my clothing is (supposedly) organised by sex/race (female, plantsims, etc), type (everyday, athletic, etc) then by age (adult, teen, etc), so I can check all "female adult swimwear" for issues.

  • Start SG Checker
  • Click the "Scan Folder..." button
  • Browse to the sub-folder you want to check and click the "Select Folder" button. If you've checked the sub-folder recently, you can quickly select it from the "File -> Recent Scan Paths..." sub-menu. It is OK to select a sub-folder under your downloads folder.
  • Click the "SCAN" button.
  • Depending on the number of packages in the sub-folder selected and the number of resources in those packages, sit back and wait!

The conflict report can be saved to the clipboard (File menu, Save To Clipboard - Ctrl+S) or to file (File menu, Save As... - Ctrl+Alt+S)


Duplicate Resources

To view possible duplicate packages, click on the "Duplicates" tab.

SG Checker reports possible duplicate packages in pairs, so if packages A, B and C are the same, it will report two duplicate pairs (A,B) and (B,C)

Hover the mouse over the duplicate pair to see which resources within the two packages are duplicated.

Unfortunately the only way to tell if they really are duplicates is to look inside both packages at the resources. It could be that different colours of the same object contain the mesh in every object, in this case the mesh resources will be reported as duplicates, but the textures will be different.


Missing Resources

To view packages that reference missing resources, click on the "Missing" tab.

SG Checker reports packages that reference missing resources, hover the mouse over the package to see what resources are missing.

Unfortunately SG Checker can't tell you where to find, for example, a missing mesh, as if it could the resource wouldn't be missing! (Although, in my case, a good starting point is always LianaSims!)


Techy Stuff

For known objects (OBJD resouces found in the scanned packages), SG Checker validates

  • the CRES resource (by using the OBJD:0x0048 value as an index into the STR#:0x0085 list)
  • the SHPE resource
  • the GMND and GMDC resources
  • the TXMT and TXTR resources (at the moment SG Checker does NOT validate linked LIFO resources)

For overrides (MMAT resources found in the scanned packages), SG Checker validates

  • the CRES resource and linked resources
  • the TXMT resource and linked resources

For recolours (GZPS and XMOL resources found in the scanned packages), SG Checker validates

  • the 3IDR resource and the linked CRES, SHPE and TXMT resources

For recolours (XTOL resources found in the scanned packages), SG Checker validates

  • the 3IDR resource and the linked TXMT resources

For ??? (XFCH resources found in the scanned packages), SG Checker validates

  • the 3IDR resource and the linked SHPE resource

For ??? (BINX resources found in the scanned packages), SG Checker validates

  • the 3IDR resource and the linked resource (unknown linked resources from the 'objectidx' entry are logged)

For ??? (COLL, XSTN resources found in the scanned packages), SG Checker validates

  • the 3IDR resource

Known but unused 3IDR files are logged (as these are typically as yet undiscovered SceneGraphs)


More Info

Additional information on Scene Graph resources can be found in the following links


Source Code

Source code can be downloaded from GitHub


Change Log

Version 2.0

  • Recompiled to fix compression and SimPe issues - see here

Version 1.1

  • Improved error handling
  • Improved resource usage


Files