A full step by step tutorial to help you solve and understand the error: “The following modules are missing…” , thrown by unreal engine when attempting to open a project.
Why It's Happening:
The module name is listed in the .uproject file. (See Image Below) .
This means that the Unreal Engine Editor will try and load this module (.dll file) when it starts up.
Unreal Engine will attempt to find a .dll file with the matching filename as the module listed, and if it does not find the module’s .dll file it will throw this error.
Most likely this happens because the module was not added to the build path. And Thus, did not get built by the Unreal Build Tool.
Step By Step Solution:
Ensure Module Files Exist
The Module Folder, Its Source Files and matching Build.cs have to exist. Check these files and check for spelling mistakes.
The internals/content of the files themselves must also comply with unreal engine module creation rules. Creating a module is beyond the scope of this tutorial. In case you want a deeper dive into how unreal engine modules work and how to create your own, see our Unreal Engine Plugin Development course.
Add The Module To The Build Path
Now that you have ensured the module and it’s files exist; Add the module to the build path by adding it to “PublicDependencyModuleNames” C# ListArray in the primary module’s Build.cs.
You can also add it to the “PrivateDependencyModuleNames” depending on how you want to link. Alternatively you can add it to the Target.cs.
This Tutorial assumes you know what a primary module is. None the less, if you would like to learn and master modules, it’s covered in our Unreal Engine Plugin Development Course.
That should solve your problem.
A Summary Of What's Happening Under The Hood:
If you add a module to the .uproject file, you’re instructing the Editor to load that module for usage during it’s runtime. But not to build It. But it can’t load something that doesn’t exist (yet).
So, you have to instruct UBT to build it(make it exist), in two ways:
Make another module that will be built(main project module), depend on it. If One module depends on another module, that other module gets built by UBT too.
Add it to EditorTarget Rules, So UBT will build it by default, without anything depending on it ;
Takeaway: Adding module to .uproject just tells the editor it will need to use module , But not to build, you need to add the module to the build process using one of the above processes.
For a module to be built, All it’s dependencies need to be built first(or exist). So the outtermost module will trigger building of the modules it depends on. That’s why Solution 1 works.
Solution 2 works because: All Modules in the Target.cs need to be built. BUT there are two targets. The Editor Target is responsible for linking all modules needed by the editor. (A module can be needed by the editor but not the game);
The explainer videos and animations in our unreal engine plugin development course will ensure you fully understand what modules are, what plugins are , how to make your own and how to solve the unreal the following modules are missing or built with a different engine version error and more. Thanks for reading.