#1

19th Jul 2025 at 1:47 AM
Last edited by Destrospean : 19th Jul 2025 at
4:29 PM.
Posts: 142
Thanks: 705 in 7 Posts
8 Achievements
How to develop script mods on non-Windows platforms (+ things that might also be useful for SharpDevelop)
With Valve's advancements with the Steam Deck and Proton, and Apple's advancements with Apple Silicon hardware and the Game Porting Toolkit, gaming on non-Windows platforms has become quite viable.
Developing mods for Windows games on another platform, however, is a lot trickier. Many build tools do not work in a compatibility layer, and so oftentimes a virtual machine or dual booting is required to compile DLLs for those games.
Because The Sims 3 actually uses Mono, a cross-platform implementation of the .NET Framework, it is actually possible to develop mods for The Sims 3 and test them on other operating systems without the use of a virtual machine. There is a catch though—MonoDevelop 5.7 is the last version to support building for .NET 2.0, which is the version The Sims 3 uses, and only the latest versions of Mono and MonoDevelop are included in repositories for various package managers. Even if you add the repositories for older versions of Mono on a modern Linux install, the dependencies for those old versions will still not be available, and those dependencies will conflict with existing dependencies your system already has installed.
There is a way, however, to isolate a part of your system from your system's libraries to set up older software using Docker/Podman containers. I have succeeded in getting a working version of MonoDevelop 5.7 on my modern system using this method. Below I have compiled a list of instructions that have worked for me when setting this up.
- Install Distrobox—different Linux distributions have different ways of installing it, but here is a generic way of installing it if it is not in your distribution's repositories:
Code:
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh
- Enter in the following in your terminal to create and enter into the container:
Code:
distrobox create -i ubuntu:xenial && distrobox enter ubuntu-xenial
- You will need to install the dependencies for MonoDevelop 5.7 and mark them as held so that the container does not update them by mistake. I have included a single, giant command here that does all of what is needed to set up MonoDevelop in the container and create a shortcut for it:
Code:
sudo apt install -y apt-transport-https \
&& sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF \
&& echo "deb https://download.mono-project.com/repo/debian wheezy/snapshots/3.12.0 main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list \
&& sudo apt update \
&& sudo apt install -y build-essential cli-common libgtk2.0-cil-dev libglade2.0-cil-dev libgnome2.0-cil-dev libgconf2.0-cil-dev \
&& sudo apt remove -y mono-complete mono-devel libmono* \
&& sudo apt install -y -t wheezy/snapshots/3.12.0 mono-complete \
&& sudo apt-mark hold mono-complete && sudo apt-mark hold mono-devel && sudo apt-mark hold libmono* \
&& sudo apt install -y -t wheezy/snapshots/3.12.0 monodevelop && sudo apt-mark hold monodevelop \
&& distrobox-export --app monodevelop
There is already a guide for doing this made by someone else, though its source is no longer reachable.
Here is an archived version of it though.
To develop using Mono Patcher, a patch needs to be applied, since MonoDevelop 5.7 does not support versions of C# newer than 5.0. I have attached a Git patch for it below. Apply it to the
MonoPatcher project folder by copying/moving the file there and entering in the following at the project folder's root directory in the terminal:
Code:
git apply MonoPatcher-CS5.0-Patch.txt