The Road to The Sims 3 WINE Gaming
Feeling a sudden urge the other day to play some of the much loved The Sims franchise, I set out to find myself a legally obtained collection of The Sims 3 with all its expansions and “Stuff packs”. A brief Internet searching session later and I had found what I believed were a proper release with no nasty surprises.
A few longer than preferred moments of silent cursing later, trying to work around
certain moronic installer memory limitations later, I finally had myself a nice
collection of all DLC which the publisher had managed to scam milk the sheep
dry through. Now all that was left was to actually play!
As a minor aside, whatever the repacker had been smoking at the time I was of no mind to try it. To be fair, the game did boot up and I could test-play it for a few moments without major issues, save for some performance issues with my GPU. The issue were the silly pre-packaged mods and whatnot. The versions were outdated, and generally of the wrong variants – Origin/Steam versions and such.
Now, back to playing.
After validating the game ran, I set out to check for the latest releases of all the essential Sims 3-experience mods. That went fine. And it even got rid of that pesky “incompatible mods” warning on startup. Great.
Now it was time to address the performance issues I was running into. A quick
setup_dxvk install later and… It wasn’t working.
And so we enter the DXVK Recompilation Arc.
The latest releases of DXVK requires much to fancy Vulkan stuff from the poor old GPU
I’ve got, which was solved by getting an older 1.10.3 version release. Easy peasy.
However, the startup now complained about a missing IDirect3D9::CreateDevice function,
which I, in my infinite brilliance, could immediately deduce was a pretty significant
issue.
As far as I could see, DXVK should’ve supported D3D9, even the stone-aged v1.10.3, which is a long forgotten ancient release only the poorest of computer plebs would’ve ever considered using. Well, what could it be, then? Well I wasn’t about to find out, and so recompiled it from source.
Some minor patching later it compiled and was able to boot the game on my good old trusty dedicated NVIDIA graphics rendering device, the changes which can be found at my GitGud repository, right here. That’s it. No amazing longwinded tale of trial and error on this front. Nice.
Some mods and DLL overrides later I was decently pleased with the results. I was now gaming at greater speeds than ever before, and with only minimal stuttering here and there. There was only one minor niggle left to address…
# DeviceConfig.log
...
=== Graphics device info ===
Number: 0
Name (driver): NVIDIA GeForce GTX 770
Name (database): NVIDIA GeForce GTX 770 [Found: 0, Matched: 0]
Vendor: NVIDIA
...
Curses and binary exploits, my glorious graphics processing unit wasn’t being accknowledged by the application. My day was officially ruined. Not quite, but seeing as it would alledgedly impact my gaming experience, I set out to fix it. And so we now enter the Supremely Retarded Arc (C).
So, my card not being identified properly, and the Internet told me there was an easy fix. The fix came in the form of a “patch” digitally delivered by means of a binary application, with no source code in sight. And better yet, it was some kind of freak of nature that required .NET, which made me instantly interested in knowing just what it actually did which required such an elaborate suite of nonsense programming to solve.
Running the mystery binary in a virtual machine resulted in it complaining that the Vendor ID was not known, which was perhaps to be expected, given the VM environment I had sentenced it to run its binary magic in. It was also unable to find the my very legal install of the Steam version of the game. Fine. At least it had the option of manually providing the path to the install. Now it was time to press the mystery button and see what black magic it would unleash upon my game…
I was left with modified versions of two files: GraphicsCards.sgr and
GraphicsRules.sgr containing a multitude of GPU IDs for AMD, NVIDIA, and Intel,
alongside .bak backups of said files.
To say I was blown away by the amazing show of patching awesomeness which had been showcased before me was putting it mildly. I was left stunned beyond what words could describe… Not.
Not to put the developer of this amazing piece of software down too much, I do wonder why someone would over-engineer and oversell such a solution in this fashion. Absolutely nothing here required distributing an unknown binary for people to run. Still, I get that some certain players can be exceptionally mentally deficient, in which case this would surely be a highly convenient way of fixing their gaming woes. But, still…as I do not want to fire up my VM for something like this again, I’ve attached the resulting files in a snippet for future use/less trusting gamers.
Anyway, like that, I was done installing, configuring, modding and patching the game. Now all that is left is to enjoy some nice and relaxing 2009 life simulation.
Before wrapping everything up, I’d like to take the time to note that installing mods
like LazyDuchess’ TS3Patch requires adding a DLL override for wininet in WINE’s
winecfg menu. It’s easy to forget in all the tweaking and it won’t do much if you do
end up forgetting. Basically, any mods which come as a binary DLL will almost certainly
require a similar override to be added.
If you managed to come all this way:
Congratulations; you must have a lot of time to waste on some Internet stranger’s post.
Be sure to check out what else I’ve written and stay tuned for what other grand epic
posts I may git push in future!
Comments