Convert Figma logo to code with AI

LavaGang logoMelonLoader

The World's First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono

2,333
468
2,333
100

Top Related Projects

4,714

Unity / XNA game patcher and plugin framework

5,147

A library for patching, replacing and decorating .NET and Mono methods during runtime

An in-game UI for exploring, debugging and modifying IL2CPP and Mono Unity games.

Quick Overview

MelonLoader is an open-source mod loader for Unity games. It allows users to load and manage mods for Unity-based games, providing a framework for modders to create and distribute custom content and modifications.

Pros

  • Cross-platform support (Windows, Linux, Android)
  • Automatic updates and mod management
  • Extensive documentation and active community support
  • Compatible with a wide range of Unity games

Cons

  • May not work with all Unity games, especially those with strong anti-cheat systems
  • Potential for conflicts between mods
  • Requires some technical knowledge to set up and use effectively
  • May impact game performance, especially with multiple mods installed

Code Examples

// Example 1: Creating a simple mod
using MelonLoader;

public class MyMod : MelonMod
{
    public override void OnApplicationStart()
    {
        LoggerInstance.Msg("My mod has been loaded!");
    }
}
// Example 2: Hooking into a game method
using HarmonyLib;

[HarmonyPatch(typeof(PlayerController), "TakeDamage")]
public class DamageModifier
{
    [HarmonyPostfix]
    public static void Postfix(ref float __result)
    {
        __result *= 0.5f; // Reduce damage taken by 50%
    }
}
// Example 3: Adding a custom GUI element
using UnityEngine;

public class CustomGUI : MelonMod
{
    public override void OnGUI()
    {
        GUI.Label(new Rect(10, 10, 100, 20), "Hello, MelonLoader!");
    }
}

Getting Started

  1. Download the latest MelonLoader installer from the official GitHub repository.
  2. Run the installer and select the Unity game executable you want to mod.
  3. Create a new C# project in your preferred IDE.
  4. Add references to MelonLoader.dll and 0Harmony.dll from the game's installation folder.
  5. Create a new class that inherits from MelonMod:
using MelonLoader;

public class MyFirstMod : MelonMod
{
    public override void OnApplicationStart()
    {
        LoggerInstance.Msg("Hello, MelonLoader!");
    }
}
  1. Build your project and place the resulting DLL in the game's Mods folder.
  2. Launch the game to see your mod in action.

Competitor Comparisons

4,714

Unity / XNA game patcher and plugin framework

Pros of BepInEx

  • More flexible and supports a wider range of Unity games
  • Better documentation and community support
  • Offers a plugin system for easier mod management

Cons of BepInEx

  • Slightly more complex setup process
  • May have compatibility issues with some older games
  • Performance impact can be higher in certain scenarios

Code Comparison

MelonLoader:

[MelonInfo(typeof(MyMod), "MyMod", "1.0.0", "Author")]
public class MyMod : MelonMod
{
    public override void OnApplicationStart()
    {
        // Mod initialization code
    }
}

BepInEx:

[BepInPlugin("com.example.myplugin", "MyPlugin", "1.0.0")]
public class MyPlugin : BaseUnityPlugin
{
    private void Awake()
    {
        // Plugin initialization code
    }
}

Both MelonLoader and BepInEx are popular modding frameworks for Unity games. MelonLoader is known for its ease of use and straightforward setup, while BepInEx offers more flexibility and broader game support. The code comparison shows that both frameworks use similar attribute-based mod/plugin registration, but with slightly different class inheritance and initialization methods. Ultimately, the choice between the two depends on the specific game being modded and the developer's preferences.

5,147

A library for patching, replacing and decorating .NET and Mono methods during runtime

Pros of Harmony

  • More lightweight and focused on patching .NET methods
  • Easier to integrate into existing projects without full mod loader overhead
  • Better documentation and community support

Cons of Harmony

  • Limited to method patching, lacks broader mod management features
  • Requires more manual setup and configuration for each patch
  • Less suitable for large-scale modding projects or game-specific modifications

Code Comparison

MelonLoader:

[MelonLoader.MelonInfo(typeof(MyMod), "MyMod", "1.0.0", "Author")]
public class MyMod : MelonLoader.MelonMod
{
    public override void OnInitializeMelon()
    {
        // Mod initialization code
    }
}

Harmony:

[HarmonyPatch(typeof(TargetClass), "TargetMethod")]
class Patch
{
    static void Postfix(ref int __result)
    {
        __result *= 2; // Modify the result
    }
}

MelonLoader provides a more comprehensive modding framework with built-in mod management and lifecycle hooks, while Harmony focuses on efficient method patching. MelonLoader is better suited for large-scale game modding, whereas Harmony excels in targeted modifications and library integrations.

An in-game UI for exploring, debugging and modifying IL2CPP and Mono Unity games.

Pros of UnityExplorer

  • More focused on runtime inspection and debugging of Unity games
  • Provides a comprehensive in-game UI for exploring and manipulating game objects
  • Offers advanced features like object browser, scene explorer, and console commands

Cons of UnityExplorer

  • Limited to runtime exploration and modification
  • May not provide as extensive modding capabilities as MelonLoader
  • Potentially higher performance impact due to real-time inspection features

Code Comparison

UnityExplorer:

public static void Init()
{
    UIManager.Init();
    ObjectExplorer.Init();
    SceneExplorer.Init();
}

MelonLoader:

public override void OnApplicationStart()
{
    ModLogger.Log("Mod initialized!");
    // Custom mod initialization code
}

UnityExplorer focuses on providing runtime inspection and debugging tools, while MelonLoader is primarily designed for modding Unity games. UnityExplorer's code snippet shows initialization of various exploration tools, whereas MelonLoader's code demonstrates a typical mod entry point. MelonLoader offers a more comprehensive framework for creating and loading mods, while UnityExplorer excels at runtime analysis and manipulation of Unity games.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README



GENERAL INFORMATION:

Usage Guides:
INSTALLER
MANUAL USE
Example Projects:
TestPlugin
TestMod
Nightly Builds:
master
alpha-development
universality

❤️ SPECIAL THANKS TO OUR WONDERFUL PATRONS ❤️

  • Givo
  • Florian Fahrenberger
  • Python
  • SirCoolness
  • SlidyDev

REQUIREMENTS:


HOW TO USE THE INSTALLER:

  1. Follow the Instructions in one of the Guides linked below.
Installer Guides:
INSTALL
UPDATE
RE-INSTALL
UN-INSTALL

HOW TO MANUALLY USE MELONLOADER:

UPDATE / RE-INSTALL:

  1. Follow the Steps to UN-INSTALL
  2. Follow the Steps to INSTALL

INSTALL:

  1. Make sure the Game is Closed and Not Running before attempting to Install.
  2. Make sure you have all the Requirements Installed before attempting to Install.
  3. Download MelonLoader [x86] [x64]
  4. Extract the MelonLoader folder from the MelonLoader Zip Archive to the Game's Installation Folder.
  5. Extract version.dll & dobby.dll from the MelonLoader Zip Archive to the Game's Installation Folder.

UN-INSTALL:

  1. Make sure the Game is Closed and Not Running before attempting to UN-INSTALL.
  2. Remove the version.dll & dobby.dll files from the Game's Installation Folder.
  3. Remove the MelonLoader folder from the Game's Installation Folder.

These additional steps below are OPTIONAL if you want to do a FULL UN-INSTALL.

  1. Remove the Plugins folder from the Game's Installation Folder.
  2. Remove the Mods folder from the Game's Installation Folder.
  3. Remove the UserData folder from the Game's Installation Folder.

START SCREEN CUSTOMIZATION:

  • After Initial Launch the Start Screen will create a folder under UserData/MelonStartScreen

  • Inside this folder it will create a Themes folder and a Config.cfg file for Customization Settings.

  • You can also place Custom Themes in the created Themes folder.

  • Inside Config.cfg you can set what Theme folder you would like to use.

  • If you set your Theme folder to Random it will randomly pick and load from existing Themes.

  • For Custom Themes you can place Custom Images in their Theme folder to further customize it.

  • Listed below are the Compatible File Names and Extensions for the Custom Images.

Compatible File Names
Background
Loading
Logo
Compatible Extensions
.gif
.png
.jpg
.jpeg

LAUNCH OPTIONS:

  • These are additional Launch Options that MelonLoader adds to the Game.
  • These can be used to manipulate how MelonLoader works.
ArgumentDescription
--no-modsLaunches the Game without loading any Plugins or Mods
--quitfixFixes the Hanging Process Issue with some Games
--melonloader.consolemodeChanges the Theme Display Mode of the Console [ Default = 0 ]
--melonloader.consoleontopForces the Console to always stay on-top of all other Applications
--melonloader.consoledstKeeps the Console Title as Original
--melonloader.hideconsoleHides the Console
--melonloader.hidewarningsHides Warnings from Displaying
--melonloader.debugDebug Mode
--melonloader.maxlogsMax Log Files [ Default: 10 ] [ NoCap: 0 ]
--melonloader.loadmodepluginsLoad Mode for Plugins [ Default: 0 ]
--melonloader.loadmodemodsLoad Mode for Mods [ Default: 0 ]
--melonloader.basedirChanges the Proxy's Load Directory for the Bootstrap
--melonloader.disablestartscreenDisable the Start Screen
  • These ones below are Unity Engine specific Launch Options.
ArgumentDescription
--melonloader.unityversionAllows you to Specify the Version of Unity Engine
--melonloader.agfofflineForces Assembly Generator to Run without Contacting the Remote API
--melonloader.agfregenerateForces Regeneration of Assembly
--melonloader.agfregexForces Assembly Generator to use a Specified Regex
--melonloader.agfvdumperForces Assembly Generator to use a Specified Version of Dumper
--melonloader.disableunityclcDisable Unity Console Log Cleaner
  • These ones below are Cpp2IL specific Launch Options.
ArgumentDescription
--cpp2il.callanalyzerEnables CallAnalyzer processor
--cpp2il.nativemethoddetectorEnables NativeMethodDetector processor

LOAD MODES:

  • Load Mode Launch Options are a way to dictate how you want Mods or Plugins to Load.
  • Below is the Compatible Values and what each of them do.
ValueAction
0Load Only if the File doesn't have the ".dev.dll" Extension
1Load Only if the File has the ".dev.dll" Extension
2Load All

CONSOLE DISPLAY MODES:

  • Console Display Modes are built in Themes for the Console
  • Below is the Compatible Values and what each of them do.
ValueMode
0Normal
1Magenta
2Rainbow
3Random Rainbow

PROXIES:

  • The Proxy DLL is able to be Renamed to the Compatible File Names below.
  • By Default the Proxy is named as "version.dll".
  • For most Games the Default File Name should work perfectly fine.
  • Some Games may have you use a different Proxy File Name depending on the Architecture, Operating System, version of the Engine used by the Game, etc.
File Names:
version.dll
winhttp.dll
winmm.dll

LICENSING & CREDITS:

MelonLoader is licensed under the Apache License, Version 2.0. See LICENSE for the full License.

Third-party Libraries used as Source Code and/or bundled in Binary Form:

External Libraries and Tools that are downloaded and used at Runtime:

See MelonLoader Wiki for the full Credits.

MelonLoader is not sponsored by, affiliated with or endorsed by Unity Technologies or its affiliates.
"Unity" is a trademark or a registered trademark of Unity Technologies or its affiliates in the U.S. and elsewhere.