Mods are a huge part of the Sims Franchise, and for a good reason. I discovered mods in the Sims 3 and have never stopped using them.
For the longest time, I used mods without understanding what they were, how they worked, and how they broke. This is also valid for a majority of the Sims players. As I started modding, I understood more of how the game in The Sims 4, and things started making sense. I understood some of the limitations and the possibilities of expansion in the game with mods.
I want to break down the Sims 4 mods, so non-modders or aspiring modders can understand certain aspects better, i.e., script files, package files, XML files, String Tables, and many other parts of mods and also how they break.
Let's say you are scrolling through MTS (Mod The Sims) and find a mod from 2018. The mod is the "Nanny's don't cook anymore" mod! This modder fixed the feature where the nanny comes to your house and cooks 5 million dishes.
So then you go to the download page and download the mod. The mod doesn't contain any script files, only a package file. Now, drop that file into your main mods folder and launch your game. You open a game, and the first thing that pops in the notifications section is Last Exception. (If you have MCCC, that is). If you don't have MCCC, you will have to see that you got an outdated mod through gameplay. You can't always predict what feature will behave oddly and know whether it's a mod or the game itself.
If you just added this mod in ("Nanny's don't cook anymore" mod), you know it's the broken one, and you can take it out. If you had batch downloaded a bunch of mods, you might have to do the 50/50 method to figure out which mod broke your game. If you are familiar with mods, you have probably already experienced this scenario. But this is just one of many different things that can happen.
The "Nanny's don't cook anymore" mod was created in 2018 and was not sustained by the creator of the mod for different potential reasons. Maybe the mod was obsolete because the Sims fixed this problem in a patch update, or perhaps the XML tuning was changed, so the mod was no longer overriding your game but conflicting with it.
Different mods do different things, which means that it's not in a one size fits all format. But if you can understand the gist of what mods are, it's easier. For the sake of this guide, I will be breaking down package files because that is a terrain I am familiar with. I will go over script files, but they are not my strong suit, and I don't want to explain something I don't fully understand.
You can make the most incredible mod with package files. Package files will most likely be what you spend most of your time working on. Certain mods do not have script files and only package files. This may be because the creator is using an XML injector or because they simply do not need to inject any interactions into the game.
If you use S4S, you will see that you can create an empty package.
What package files are made up of are XML files. If you have extracted these files from the game using S4S, you can see the package files are all XML; you can take these and import them into your own package file. The files are many different types of XML, an
d some more common ones are Interaction Tuning, Action Tuning, Buff Tuning, Trait Tuning, and DST image.
You can easily edit these, though; once you understand the basics of how the mod works, it becomes easier to understand. Inside the package files, the feature also allows your mods to not be blank text in your game.
These are the string tables, and these numbers correspond to numbers in the string table. This is how the game knows what you want the players to see.
How do the mods break, though? What makes them compatible or not compatible?
Mods break/ are non-functional because the game does not do what you want it to. Computers are obsequious; they will only do what they are told. If there is a broken mod, the game will try to understand the file and follow the instructions, but that's not what the player is looking for. Sometimes it will crash the game or corrupt a file because these rules it's meant to follow are not being followed.
When a new patch update comes out sometimes, a mod is fine, and sometimes it isn't. This is usually either because something in the game's tuning was changed and your files used the old format or because you have overridden a game file, but the patch update changed something.
Sometimes mods aren't compatible with one another because the same mods edit the tuning files. For example, the mods may download a nanny overhaul mod from another creator, and if this mod overrides the same file, there will be compatibility issues. The modder might also not edit this file which would make the mods compatible. They may also create a version that does not conflict, so anyone with the mod can download both.
Script Files are not my forté. But I do understand what they can do in your game. If you want to add a social interaction in your game or just an interaction with an object, you need to use script files. There are also certain things in the game you can only do through these files.
When you download a script file mod, you might wonder how it goes from .py to .ts4script.
Note: Script files are coded with Python.
The file is compiled into a .pyc, and then all of the files in the mod are zipped up and turned into .ts4script.
If you want, you can try this out yourself. Compile a mod and then unzip again. Use this guide: https://sims4studio.com/post/147423.
There are lots of modding resources out there that can help you understand how things work. Here is a guide on injecting interactions through Python in the game by Frankk. https://sims4studio.com/thread/22556/inject-interactions-super-affordance
Finally, some mods add new interactions in the game, and you may notice that they only have package files. That's because they usually require an XML injector. XML injector is a fantastic tool that allows modders to not have to focus on dealing with script files. If you don't have python knowledge or just don't want to deal with script files, all you need to do is get XML and tell others who use your mod to get it too. Then you don't have to worry about editing your scripts if a significant update in the game changes those scripts.
That's all for now! I hope this helped with understanding mods in TS4 and compatibility more!