Creating mods for Unity games (with Mono backends) involves decompiling assemblies and patching in new code.
Name | Unity Ver. |
.NET Compat. |
.NET Ver. |
C# Ver. |
---|---|---|---|---|
Black Geyser | 2021.1.20 (Documentation) | 4.x | 4.6 | 8.0 |
Disco Elysium (Build: 8487D973) | 2019.4.9 (Documentation) | 4.x | 4.6 | 7.3 |
Guild of Dungeoneering Ultimate Edition | 2020.3.9 (Documentation) | 4.x | 4.7.1 | 8.0 |
Pathfinder: Kingmaker | 2018.1f0 (Documentation) | 4.x | 4.6 | 6.0 |
Pathfinder: Wrath of the Righteous | 2019.4.26f1 (Documentation) | 4.x | 4.6 | 7.3 |
Pillars of Eternity | 5.1 (Documentation) | 3.5 | 3.5 | 3.0 |
Pillars of Eternity II: Deadfire | 5.6.3 (Documentation) | 3.5 | 3.5 | 3.0 |
Rogue Lords | 2019.4.22 (Documentation) | 4.x | 4.6 | 7.3 |
Solasta: Crown of the Magister | 2019.4.32 (Documentation) | 4.x | 4.6 | 7.3 |
Star Dynasties | 2017.1.3f1 (Documentation) | 4.x | 4.6 | 6.0 |
Torment: Tides of Numenera | 5.4.1 (Documentation) | 3.5 | 3.5 | 3.0 |
Tyranny | 5.2 (Documentation) | 3.5 | 3.5 | 3.0 |
Outside of cheats and trainers, mods will likely never exist for these games as long as they are compiled with IL2CPP.
Name | Unity Ver. |
.NET Compat. |
.NET Ver. |
C# Ver. |
---|---|---|---|---|
Disco Elysium: The Final Cut | 2020.2.3 (Documentation) | 4.x | 4.7.1 | 8.0 |
Encased | 2019.4.21 (Documentation) | 4.x | 4.6 | 7.3 |
Legend of Keepers | 2019.4.18 (Documentation) | 4.x | 4.6 | 7.3 |
You should be using dotPeek under most circumstances, filling out any stubbed out methods in the decompilation output with dnSpy.
dotPeek produces more accurate IL than dnSpy, owing to the fact dnSpy relied on the ILSpy 2.x engine. In addition, dotPeek is actively supported by a major company while dnSpy is abandoned.
Type | Name | Developer | Price | License | Website |
---|---|---|---|---|---|
Patcher (Injection) | MelonLoader (based on HarmonyX/MonoMod) | LavaGang | Open source | Apache 2.0 | GitHub · melonwiki.xyz |
Patcher (Injection) | Harmony | pardeike | Open source | MIT | GitHub |
Patcher (Injection) | BepInEx (based on Harmony) | bbepis | Open Source | MIT | GitHub |
Patcher (Direct/Injection) | MonoMod (based on Harmony) | 0x0ade | Open source | MIT | GitHub |
Patcher (Direct) | Patchwork | Greg Ros | Open source | MIT | GitHub |
Injector | Unity Doorstop | denikson | Open source | CC0-1.0 | GitHub |
Name | Developer | Licensing | Website |
---|---|---|---|
Asset Studio | Perfare | Open source (MIT) | GitHub |
AssetTools.NET (based on UABE) | nesrak1 | Open source (MIT) | GitHub |
uTinyRipper | mafaca | Open source (MIT) | GitHub |
uTinyRipperExporter CLI | spacehamster | Open source (MIT) | GitHub |
Unity Assets Bundle Extractor (UABE) | DerPopo | N/A | 7 Days To Die Forum |
Type | Name | Developer | Price | License | Website |
---|---|---|---|---|---|
Deobfuscator | de4dot | 0xd4d | Open source | GPL v3 | GitHub Fork |
Type Safety Evaluator | PEVerify | Microsoft | Free | Proprietary | Microsoft |
If you use Microsoft's PEVerify Tool (e.g., Patchwork's Test Run), you may notice that an unmodded Unity game has IL errors in
Assembly-CSharp.dll
. These errors could be caused by bad IL or IL optimizations. For example, the latest version of Torment: Tides of Numenera has 150 IL errors inAssembly-CSharp.dll
. Most IL errors can be monkey patched.
DevX has a number of extremely expensive tools for reverse engineering Unity games. While some of these tools could be useful to more advanced modders, in most cases, you don't need them.
Tutorial | Description |
---|---|
Patchwork Design Patterns | How to use Patchwork attributes for common problems |
Patchwork Project Structure | How to structure a Patchwork project |
Turning a release build into a debug build | How to get line numbers, full PDBs, and live debugging working |