-
Notifications
You must be signed in to change notification settings - Fork 12
FAQ
Please take a look at our troubleshooting page or make a post in our discord support channels #help-and-support including logs and a description of what is going on.
Yes. Here it is.
Mods are .dll files loaded by ResoniteModLoader that change the behavior of your Resonite client in some way. Mods are specifically designed to work in multiplayer and avoid breaking compatibility with vanilla clients.
Plugins are loaded by adding launch arguments to your game. They can add additional protoflux nodes and components that change the 'datamodel'. These will make your game incompatible with other players who do not also have the same plugins and others will be unable to join sessions you host. See the resonite wiki page for more info on plugins.
ResoniteModLoader is a Resonite Plugin that does a lot of the boilerplate necessary to get mods working in a reasonable way. In summary, it:
- Initializes slightly earlier than a normal plugin
- Doesn't add to the datamodel (Outside of userspace) and doesn't run mods through that process so that your client will still remain compatible with vanilla users.
- Loads mod .dll files and calls their
OnEngineInit()function so the mods can begin executing
Yes, so long as Resonite's Guidelines are followed.
- By default, ResoniteModLoader avoids doing anything identifiable over the network. You will appear to be running the vanilla Resonite version to most systems.
- If you are running other plugins, they will alter your version strings and compatibility hash.
- ResoniteModLoader logs to the same log file Resonite uses. If you send your logs to anyone, it will be obvious that you are using a plugin. This is intended.
- ResoniteModLoader mods may have effects visible to other users, depending on the mod.
- If you wish to opt-in to using your real version string you can set
advertiseversion=truein the Modloader Config.
Mods are not sandboxed in any way. In other words, they run with the same level of privilege as Resonite itself. A poorly written mod could cause performance or stability issues. A maliciously designed mod could give a malicious actor a dangerous level of control over your computer. Make sure you only use mods from sources you trust.
The mod manifest contains mods that have been manually audited by de-compilation to ensure that they are not malicious or obviously evil. While this process isn't 100% foolproof, the mods on this list are significantly more trustworthy than an unvetted DLL. Tools like Resolute pull from this source to provide safe updates to your mods.
If you aren't sure if you can trust a mod and you have some level of ability to read code, you can look at its source code. If the source code is unavailable or you suspect it may differ from the contents of the .dll file, you can inspect the mod with a C# decompiler. Things to be particularly wary of include:
- Obfuscated code
- Sending or receiving data over the internet (objects, images, videos, API calls)
- Interacting with the file system (reading, writing, or executing files from disk)
The regular Resonite logs: C:\Program Files (x86)\Steam\steamapps\common\Resonite\Logs.
Yes, however other mod loaders may conflict with the LibHarmony that is provided, you may need to ensure you only have one. If another mod loader's LibHarmony version is significantly different from the standard Harmony 2 library, then it might not be compatible with ResoniteModLoader at all.
- Resonite Plugins are the officially supported means to extend functionality of the game, we can expect them to continue working with relatively little change, if any, to the modloader itself even through major engine changes, as example when Resonite's 'splittening' update occurred, the update required to the mod loader was relatively simple despite a large architectural change on Resonite's side.
- Some other mod loaders may do unnecessary additional steps to load mods while we already have an intended 'entry point' from the plugin system.
- Other mod loaders may be designed for specifically Unity games. While Resonite uses Unity for rendering, it isn't your typical Unity game, in fact the large majority of the game is not in unity at all.
- It affords us some extra flexibility to change the modloader directly as we see fit instead of needing an additional layer on another modloader to change what it is doing.
Check out our documentation describing various Problem Solving Techniques to determine if a mod may be the solution.
If you are trying to make a new Component or ProtoFlux node, you should use a plugin. The plugin system is specifically designed for that and is the supported method of extending the functionality of the engine directly.
If you are trying to modify Resonite's existing behavior without adding any new components and while maintaining compatibility with all users, ResoniteModLoader offers the following:
- LibHarmony is a dependency of ResoniteModLoader, so as a mod developer you don't need to worry about making sure it's installed
- Resonite Plugins normally 'break' multiplayer compatibility. The ResoniteModLoader plugin does not add to the data models to remain compatible.
- Resonite Plugins can normally execute when Local Home loads at the earliest. ResoniteModLoader begins executing significantly earlier, giving you more room to alter Resonite's behavior before it finishes initializing.
- Steam has a relatively small character limit on launch options, and every Resonite plugin you install pushes you closer to that limit. Having more than a handful plugins will therefore prevent you from using Steam to launch the game, and mods using ResoniteModLoader are unaffected by this issue as you only need one launch option.
Yes. All mod assemblies are loaded before any mod hooks are called, so no special setup is needed if your mod provides public methods.
Mod hooks are called alphabetically by the mod filename, so you can purposefully alter your filename (0_mod.dll) to make sure your hooks run first. Please only do this after trying other avenues of resolving mod dependencies.
No. You need to use -LoadAssembly <path> to load plugins. There is important plugin handling code that does not run for ResoniteModLoader mods.
No. ResoniteModLoader mods will not work if used as a Resonite plugin.