A (Work-In-Progress) Lightweight .NET Universal Mod Loader
- Only Tested On Windows 10
- No ARM Support
- x86/32-bit games get x32.
- x64/64-bit games get x64
- Downloads currently contain FULL .NET Deps. Plan to remove soon.
Current Releases (v0.1) |
---|
x32 (STILL WIP) |
x64 (STILL WIP) |
Works With | Status |
---|---|
.NET 8.0 | [✅] |
Winforms | [✅] |
DLL Imports | [✅] |
Unsafe Context | [✅] (Still Unsafe) |
Nuget Packages | [❔] (Not Yet Tested) |
.NET 8.x | [❔] (Not Yet Tested) |
Native AOT (and/or) Single-File | [❔] (Not Planned Feature) |
To-Do | Status |
---|---|
Better Logging | Working On |
Nuget Package Handling | In Research |
Better / More Examples | Backlog |
Docs, Webpage, and FAQ | Backlog |
Configuration Options | Backlog |
Plugins & More Mod Options | Backlog |
.NET 8.x | Backlog |
** Note About To-Dos and Roadmap
All of these planned features and TO-DOs still center around keeping
this project lightweight. Meaning The code base should be kept as small
and easy to read as possible.
Plugins will hopfully be the main form
of expansion on the base mod loader.
Plugins are currently planned to load
AFTER System and Microsoft DLLs but BEFORE mods are loaded allowing for
ease of use.
Plugins ARE NOT currently planned to be the same as, or include
nuget packages. I'm still looking at how to impliment nuget packages
in such a way that can be easily debugged, changed, etc.
version.dll gets automatically loaded by the game .exe and starts the process. It loads clrhost.dll (after loading its dependency, Ijwhost.dll). clrhost.dll is a C++/CLR project configured to run .NET 8.0 . This is what allows it to run CeLeRy.dll which kicks off the mod loading.
Also worth noting that the console is opened by clrhost.dll, right before loading CeLeRy.dll . Future plans include making the console configurable. Along with this, plans for a better log system that saves logs to a file. But for now console window will remain open for debugging.
Each mod gets its own thread for now. May change in the future.
Winform mods CAN work. Easiest way is to just make a Winform project and use the dll. Just ignore the .exe after compile. Changing to Class Library may cause issues with Winform.
Feel free to make a Pull Request, Or submit an Issue Ticket for Feature Requests, Issues, and anything else!
My Discord is Glatrix#0001
or just glatrix
. Reach out there for questions. Might make a server later on.
ExampleGame
│ ExampleGame.exe
│ version.dll (CeLeRy Proxy Loader)
├───ExampleGameData
│ │ (Blah Blah)
├───CeLeRy
│ │ CeLeRy.dll (.NET CeLeRy Core DLL)
│ │ clrhost.dll (CeLeRy Proxy-Core Middleman) ie. [version.dll] -> [Ijwhost.dll + clrhost.dll] -> [CeLeRy.dll])
│ │ clrhost.runtimeconfig.json (Required because clrhost.dll is a C++/CLR dll.
│ │ Ijwhost.dll (clrhost.dll dependency)
│ │ latest_logs.txt (Logs Now Saved)
└───mods
(Any DLLs here will get loaded, checked for CeLeRyMod Attribute on any Class, and Execute accordingly.
Hello World.txt