Skip to content

Compatibility Requirements ​

A mod can declare the environments it supports: the game and game versions, the Unity version, the scripting backend, the platform and the Lustral version. Lustral checks these requirements before loading the mod. If a requirement is not met, the mod is skipped and the log states the reason, instead of the mod failing unpredictably:

txt
[Warn ] [Core] Not loading you.fastforward: is for BloonsTD6 55.*; the installed version is 56.3

All requirements are optional. They are set in the project file, and the SDK writes them to the mod's manifest.

Game ​

xml
<ItemGroup>
  <ModGame Include="BloonsTD6" Developer="Ninja Kiwi" Versions="56.*" />
</ItemGroup>
  • Include is the game's name as defined by the game itself (Unity's product name, stored in <game>_Data/app.info), which may differ from its store name: Bloons TD 6 identifies itself as BloonsTD6. Lustral's log reports the name, version and developer at startup:

    txt
    [Info ] [Lustral] Game: BloonsTD6 57.0 by Ninja Kiwi, Unity 6000.3.23f1 (C:\...\BloonsTD6.exe)
  • Developer (optional) is Unity's company name, also stored in app.info.

  • Versions (optional) lists the supported game versions, as reported by the game (Unity's Application.version), separated by semicolons. * is a wildcard: 56.*, 1.2.*;1.3.*.

A mod for multiple games lists each of them. A mod without a ModGame entry loads in any game, which is appropriate for general-purpose mods such as a free camera or a frame rate counter.

If Lustral cannot determine a game's version, the version requirement is not enforced; the log notes that the mod was loaded without the check.

Unity Version, Backend, Platform and Process ​

PropertyExampleDefault
ModUnityVersion>=2022.3Any
ModBackendsmono;il2cppThe backend of the game the mod is built against
ModPlatformswindows, windows-x64, linuxAny
ModProcessesGame.exe;GameServer.exe, for games with multiple executablesAny

ModUnityVersion is a version range. ModBackends is relevant because a mod built for IL2CPP cannot run on Mono and vice versa; the default value already reflects this.

Lustral Version ​

xml
<ModLustralVersion>^0.3</ModLustralVersion>

By default, a mod requires the Lustral version it was built with, or a newer version without breaking changes: the same major version, or, before 1.0, the same minor version. This is appropriate for nearly all mods. Set it explicitly only if the mod is known to work with an older Lustral version, or requires a newer version than the SDK it is built with.

Behavior for Users ​

If a requirement is not met, the mod is not loaded and the log states the reason:

ConditionMessage
Different gameis for BloonsTD6; the running game is PEAK
Unsupported game versionis for BloonsTD6 55.*; the installed version is 56.3
Unsupported Unity versionrequires Unity >=6000.0; the game uses Unity 2022.3.62f2
Different scripting backendis built for IL2CPP games; this game uses Mono
Newer Lustral version requiredrequires Lustral ^0.4; the installed version is 0.3.1

Users can override the checks by forcing the mod in Lustral/loader.toml:

toml
[mods]
force = ["you.fastforward"]

A forced mod is loaded regardless of its requirements and incompatibilities, with a warning in the log. It may not work correctly; forcing is intended for advanced users.

Mods are third-party software. Lustral does not verify their behavior and is not responsible for any damage they cause.