Making this my new main info post as I'm lazy and rewriting is easier at this point. I wrote a lot of this ages ago and haven't played ts3 for ages so apologies if it's a lil disjointed.
This is mostly just going to be a guide for using my GraphicsRules.sgr followed by a rant about cache cleaning (and probably other things).
tl;dr try this GraphicsRules.sgr file and see if your game runs better:
http://www.simfileshare.net/download/4592058/
Make sure to make backups! And don't run the graphics detector thing as it will overwrite/not work. Keep in mind this is not the most user friendly file
Rambling explanations that I wrote 3+ months ago and have forgotten the contents of below:
Basically re-wrote a large amount of the file and removed the hardware detection aspect all together, as I found it pretty misleading in a lot of respects. Some ingame graphics options may also not work/be changeable. I don't actually remember if I messed with those but 🤷♂. I've found a lot of what makes the sims 3 laggy isn't actually related to things like graphics quality, but to how things are loaded/unloaded in the game.
I've added some flags that are present in the exe but not the original file (ForceHighLODObjects my beloved) and annotated a bunch of settings to provide some context. I've left some flags out but might put a list of all the ones I've found sometime later, or throw them all in the file down the bottom somewhere.
In the future I'll (maybe) add a "High, Mid, Potato" flag up the top, but for now it's just "What runs best on my PC" . I feel like it should be fine on most lowish-mid end computers made within the last 5ish years but obviously I have no way of testing that.
Important/notable settings to think about when changing my file :
ForceHighLODObjects - Change this first if you're getting error 12's, this forces buildings to max detail, looks really good and decreases stutter due to not loading and unloading all the LOD levels constantly, increases initial memory usage, but (maybe) not overall. I set my max detail lots to 2 when using this.
ObjectSizeCullFactor - Causes objects to pop out of existence after a set area. Might add this to Memory Fixer l8r (still does not fix anything). Does not effect home lot. Personal preference, I find it can be annoying on certain lots, just depends on what you're doing. Memory hit isn't that significant. Max is 2000
DropTexMipsOnLoad - Idk what this is like actually doing, but enabling this might help, or might create more bloat. Haven't noticed much difference, but I would recommend keeping it off
RenderSimLODDistances - I wouldn't recommend touching this as it's the cause of a lot of stuttering IMO, feel free to go back to default (25, 50, 100, 1000). Basically increases the range sims load in max detail, stopping them from re-loading
WaterReflectionDetail - Feel free to lower, might be a hit on lower end GPUs but probably not.
General shadow settings - I recommend just keeping them as they are. I think world shadows might always be there just not like, blackened (?????). Shadows are weird.
Weird zfighting? idk what causes it, I think it's ClipPlaneDistances but it just doesn't make sense to me. If you figure it out lmk
Use my memory fixer asi. It doesn't actually fix memory (maybe one day oops), but it will notify you when you're close to the memory limit (customizable) to save. It has a configurable hotkey to set max lots to 0, which does sometimes help free a little bit of memory if you're frantically trying to save
If you're editing things in CAS do it all at once, then save and restart after. CAS adds a decent amount of memory usage that is never freed up again.
Wait for things to load. There's sometimes an issue (mostly CAS thumbnails, need to check others, smooth patch fixes this by limiting the amount) where resources continue to load when you change into another submenu, then when you change back the memory is re-re-reallocated and you end up with double the usage. This might also impact other areas of the game but idk
Use smooth patch or NRaas. Note that setting TPS above 1000 in smooth patch does nothing (SleepEx accepts a dword, not float). Both fix CAS thumbnail loading issues (still adds ~200-300mb), but smooth patch does it, IMO, better. To use both together, ensure you're not using NRaas integrations as it bugs out, and to use the shift click menu to do CAS as it uses smooth patches one IIRC (either works tho)
Always save in the map screen, and if struggling, far away while facing away from any buildings, but be aware that saving itself adds persistent memory bloat (a significant amount the first time and then only a little the next times).
Don't clear your caches :)!
I feel like it's a pretty accepted thing to do and I don't really get it a. It seems somewhat pointless unless you've got some nasty bugged CC or are absolutely horrifically out of harddrive space. The size of the files has nothing to do with what's actually loaded into your game.
DCC, DCBackup(CC), IGACache (ads?) can be cleared. I think they're launcher related so I don't think they're actually used.
Please do not touch thumbnail caches ever at all, thumbnail loading is weird and consumes a lot more memory than it should. I don't think regul touches them (by default they're in the games dir not doccuments) . I'd also avoid deleting the doccuments thumbnails folder for the same reason.
WorldCaches controversial but I would also avoid clearing, as all it does is just buy you a couple more minutes while being annoying and showing you gross grey blobs. Grey blobs also seem to be loaded in while saving the game, resulting in memory bloating larger than what saving normally adds (see below). If you desperately need to load into a save that's crashing, sure, delete away, but for normal gameplay I really wouldn't recommend it.
Other caches should be fine to delete (CAS, compositor, social, etc) but you get nothing from doing (no memory difference recorded) so unless you've got an issue with CC. Always back them up.
If you want the game to do it automatically every time there's a few settings, ClearTCC clears worldcaches and ClearCPC clears CASPartCache.package.
The Smooth patch mod is absolutely fantastic and I highly recommend using it and NRAAS (without the NRAAS integrations mod). The .asm is neat also for the borderless and FPS limiting aspects, but those IMO, are better sourced from something like dxwrapper. The "TPS" section is what I'll be ranting about below, but for the most part you can just ignore this and close the tab now.
My recommendation is to either not use the TPS feature at all, or to set it to 1000. If you feel like having it on helps your game, by all means keep it on.
I really don't like the whole TPS thing as, while I understand that it's more approachable for users, it's very far removed from what it's actually doing. In the script TPS is calculated as 1000 / TPS, this then overwrites TS3's SleepEx function, delay to it to whatever the TPS calc is. There's a few problems with this:
SleepEx doesn't take floating point numbers, so if you go above 2000, the suspension time becomes 0 and crashes, and anything between numbers is still rounded down/up to the whole number
SleepEx is sometimes used for a reason like initial performance benchmarks, blanket changing every single call to it lower or higher doesn't really make sense to me.
The majority of SleepEx usage is 1ms already, so anything else would be an increase
None of the breakpoints for the SleepEx wrapper (004e1320) that could potentially be over 1ms are actually used in gameplay, with the exception of 007695CF - 007694b0 and 008b2a00 (10-20ms max observed) , both of which have nothing to do with game speed
There is a wrapper at 004e1320 that could be a better candidate, but even that references functions that have long sleep delays for good reasons (00eda920). I'm also not really sure what the point of reducing the delay is anyway
Anyway, that's about it. I'll probably come back to this eventually when/if I ever look at modding that isn't based around the executable.