This is a Linux port of riperiperi/Simitone, the alternative C# frontend for The Sims 1 based on FreeSO.
The upstream project only supports Windows. This fork makes the Simitone.Windows entry project build and run natively on Linux (and, in principle, macOS) on .NET 9 + MonoGame DesktopGL, with no Wine required at runtime.
You still need a legitimate copy of The Sims: Complete Collection (or equivalent install with
GameData/,UserData/). Simitone reads the original game's data files — it does not redistribute any assets.
| Area | Change |
|---|---|
Simitone.Windows.csproj |
TargetFramework is now conditional: net9.0-windows on Windows, net9.0 everywhere else. UseWindowsForms, MonoGame.Framework.WindowsDX, the FSO.IDE project reference, the ApplicationIcon, and the CopyMonoGameDLLs build target are gated to Windows only. OutputType changed from WinExe to Exe. |
Program.cs |
Removed System.Windows.Forms and System.Drawing. BitmapReader now uses SixLabors.ImageSharp for cross-platform image decoding. Fatal-error MessageBox replaced with Console.Error. The -ide flag is wrapped in #if WINDOWS. FSOEnvironment.Linux is now set from the detected platform instead of being hard-coded false. |
GameStartProxy.cs |
Dropped stray using System.Windows.Forms;. |
run-linux.sh |
New helper script that builds/launches the game with sensible defaults. |
All transitive FreeSO projects (FSO.Client, FSO.UI, FSO.SimAntics, FSO.LotView, etc.) were already net9.0 — only the entry project needed work.
FSO.IDE (the in-game IFF editor, invoked with -ide) is not built on Linux because it is WinForms-based. The -ide flag prints a notice and continues.
- .NET SDK 9.0 (
dotnet --list-sdksshould show a 9.x entry) - Standard build tools (
git,bash) - Runtime libraries pulled in automatically by MonoGame.DesktopGL — on Debian/Ubuntu/Mint these are typically already present:
- SDL2, OpenAL — bundled inside the published build under
runtimes/linux-x64/native/ - OpenGL (
libGL.so.1)
- SDL2, OpenAL — bundled inside the published build under
git clone --recurse-submodules https://github.com/devloic/Simitone.git
cd Simitoneor, if you already cloned without --recurse-submodules:
git submodule update --init --depth 1dotnet build -c Release Client/Simitone/Simitone.Windows/Simitone.Windows.csprojThe output lands in Client/Simitone/Simitone.Windows/bin/Release/net9.0/. Expect ~750 NU1701 warnings from legacy .NET Framework NuGet packages (harmless) and 0 errors.
Pick whichever is convenient:
a) Symlink the install as game1/ next to the binary
ln -sfn "/path/to/The Sims" Client/Simitone/Simitone.Windows/bin/Release/net9.0/game1If the install lives inside a Wine prefix, that works fine — Simitone reads the files directly and never invokes Wine:
ln -sfn "$HOME/.wine/drive_c/Program Files (x86)/Maxis/The Sims" \
Client/Simitone/Simitone.Windows/bin/Release/net9.0/game1b) Pass -path at launch
dotnet Client/Simitone/Simitone.Windows/bin/Release/net9.0/Simitone.dll \
-gl -path"/path/to/The Sims/"c) Use the helper script
./run.sh # auto-detects common locations
TS1_PATH="/path/to/The Sims" ./run.sh # explicit
./run.sh -3d -aa -hz144 # extra flags forwarded to Simitonerun.sh builds the project if needed, finds your TS1 install (including
inside a Wine prefix), symlinks it as game1/ next to the binary, and
launches with the OpenGL backend.
| Flag | Meaning |
|---|---|
-gl |
Force OpenGL backend. Recommended on Linux. |
-3d |
Enable 3D rendering. |
-aa |
Antialiasing. |
-jit |
AOT-compile object SimAntics. |
-hz<N> |
Target refresh rate, e.g. -hz144. |
-lang<N> |
Language code. |
-path<dir> |
TS1 install path. |
-nosound |
Avoid on Linux — there is a pre-existing null deref in UINeighbourhoodSelectionPanel when audio is disabled. |
-nosoundcrashes at the neighborhood selection screen (pre-existing upstream bug, unrelated to the port).- No
-ideon Linux — FSO.IDE is WinForms and excluded from the Linux build. - The native apphost (
./Simitone) needsDOTNET_ROOTexported on some distros if you didn't install .NET in/usr/share/dotnet. Thedotnet Simitone.dllform always works. System.Drawing.Commonis not in the dependency graph on Linux; any future code that pulls it in will need an ImageSharp equivalent.
If you're on Windows, use the official build:
- Releases: https://github.com/riperiperi/Simitone/releases
- Source: https://github.com/riperiperi/Simitone
- FreeSO project: http://freeso.org
This fork's goal is narrowly to keep a working Linux build. Functional changes (gameplay, content) belong upstream.
Simitone → Semitone → musical term → C# → a note.
(Original explanation preserved from the upstream README.)