Development versions, such as the recent preview of the Frosty DLC, have different IL for the same source code than normal stable game releases. Mods that use transpillers may break because of such small and temporary changes, which makes it hard to update them before a release.
Consider for example ClearableManager::CollectChores(). That function has not changed for more than a year, but 621068's IL code for it is significantly different from 622222's - the number of instructions is different, the number of local variables is different, and e.g. the "if(flag) break;" is compiled as ldloc.3+brtrue.s in a normal release, but it's 6 instructions in a development version.
This means that a mod using Harmony transpiller to alter such a function would no longer recognize the relevant code, and would need to be written to handle both variants, which is a hassle. As such, it's simpler to ignore development versions when it comes to mods, and check the mod for problems only with the stable release, which means that such mods will not be ready at the time of a release.
I assume development versions are built using a different build profile, which sets different compiler optimization options, leading to these differences. But I see no need for this difference, development versions should be able to use the same settings as the stable releases (the inefficiently written IL for development versions does not look like added checks or anything similar).
Please change the build settings for development versions to avoid these problems.
- Check in your repository history that ClearableManager::CollectChores() has not changed for quite a while.
- Use ilspy or similar to compare the IL for that class between the current stable releaser and the last development version.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now