Clone this wiki locally
Will SkyUI be required for using my mod, if I add a config menu?
No. Using SkyUI will be optional, but if it's not present, there will be no Mod Configuration Menu, so your menu will simply do nothing.
Do I have to create two versions of my mod now? One with the config menu, one without?
No. You can just add the config menu to your main mod package.
The MCM has been designed to properly handle the following scenarios:
- Your mod and SkyUI are added at the same time.
- Your mod is installed first, SkyUI is added later, or the other way around.
- At some point, SkyUI is removed, and added again later.
- At some point, your mod is removed, and added again later.
- SKSE is added or removed at any time.
That being said, we still encourage you to test these cases for yourself. There might still be scenarios we have overlooked, and if so, we would appreciate it if you would report them.
Should I include the resources from the SkyUI SDK with my mod?
No, you should not include any SKI_* scripts with your mod. Also remember this for SKI_PlayerLoadGameAlias.pex/psc, which the Creation Kit will automatically add when creating a mod archive (BSA). Remove them from the file list before proceeding.
Including SKI_* scripts might lead to conflicts with future MCM updates.
If you accidently added SKI_PlayerLoadGameAlias, it's not the end of the world though, as this script is very simple and unlikely to change (ever). Still, you should avoid packaging it in later versions.
Will you, at some point, decide to change the MCM API and completely and break my old menus?
No. Any updates will be backward compatible.
Exceptions are things added during alpha or beta versions, where we try out new features that might not always make it to the final release.
Consequently, whenever we release alpha or beta versions, you should not distribute mods depending features added in those, but rather wait for a stable version.
Somehow my menu becomes unresponsive and I have to close and open it again to fix that. What's going on?
One constraint when implementing events like
OnOptionSelect is that they have to return eventually. So if you, at any point, would add
Utility.Wait(5), this would freeze the menu for 5 seconds.
Or would it? Actually, it would freeze the menu until you close it, because
Wait only advances while you're not in a menu! The correct function to use would be
Utility.WaitMenuMode(5), if you ever wanted to do something like that.
Whenever using latent functions, make sure that they actually return and don't block the script execution indefinitely.