Remember the discussion about whether to mandate inclusion of full source code for plugins?
Well currently that is the only option!
I have been selling people plugins that they ask me to make for them, and I have run into the issue that people can’t use my plugins in a packaged game unless they have a c++ project so that the packaging tool can rebuild the plugin!
There are numerous other people reporting issues related to plugins not working unless they have a C++ based project!
This kind of nullifies a former huge advantage of plugins = C++ code for a content only project.
Does Epic have any plans to address this?
Here is the most relevant Answerhub post
Here are two relevant Forum Posts
another
**The Only Solution: Switch to C++ Project**
My clients have also reported this as I mentioned, the anserhub was posted by a client of mine who made the switch to C++ just for my plugin, and it worked!
To clarify:
1. The plugins usually work when used in content only project, if used with the Editor
2. Some people are reporting that even this is not working / working sporadically
3. But the critical case is that in a packaged game for a content only project, the plugin modules are not getting found.
Switching to C++ Project and repackaging fixes the issue.
Is this to be expected?
or can the editor somehow remember to include plugin dll when packaging the game?
Does a packaged game HAVE to have the source code for every plugin?
If so doesnt this mean all plugins must have full source code available on the Marketplace?
FAQ
Q: Are people putting the plugins in Engine/Plugins or in their project/Plugins?
A: My client who switched to C++ project to get my plugin to work tried both
Q: Shipping or Development Packaged Build?
A: Client tried both of those as well
Switch to C++ was the only thing that worked for packaged game.
It is a limitation we’re very aware of. I’m going to try and explore being able to ship modular DLL/dylib-based games for the 4.5 timeframe. That would work the same way as the editor does - you have one DLL/dylib per module, which would allow plugins in content only projects. We do not have any support for dynamically loading modules on non-desktop platforms at the moment, and there is a concern that some platforms (like iOS) do not permit shipping titles with dylibs. I assure you that it’s on our radar though.
Just to hint, if you dont want to disclose some source code right now, you can build static libraries for all supported platforms; like Substance does if I saw it right.
Actually as far as I know, you can only do that for the part of your code that isn’t using engine’s classes. For instance any object you derive from UObject or AActor, directly or indirectly needs to have the source to be bale to compile and used.
For some 3rd party tech like Substance that’s ok, since the whole code is already independent of the engine, they might just need some code to interface their tech to the engine, and/or any extra editor features they utilize. However that won’t be the case for most of our own plugins which are highly dependent on the engine/editor source code.
Still not, I’m afraid - that includes the upcoming 4.6 release.
It’s still something we consider important, but it’s been a near miss for the last two releases. A lot of the plumbing is there and ready to go, but we keep pushing back the last few bits of work to focus on other features. It’s a goal of mine to have modular games for the 4.7 release, at least for desktop platforms.
And with the release of one of the first plugins (Kinect 4 Unreal) on the marketplace its evermore clear and important. 4.8 will be nice for those who only use BP / only use the binary version of the engine.
So… Will it make it to 4.8? That would be really great.
This issue currently affects us. One of my colleague coded a plugin to add the support for a custom input device and he gaves to us the dll that we included in our engine’s plugin directory. We are currently working on a Blueprint project to prototype a simulator and all works great in the editor. But we cannot launch/package the game as we have an error about the dll missing.
Haha! It’s unlikely that we’ll have hybrid-monolithic game builds before the 4.8 release (ie. plugins in DLLs, game in an EXE), though I have done a lot of the ground-work to support that. We do, however, plan to support packaging content-only games with plugins in the 4.8 release. The editor should detect if you have a non-default plugin enabled, and generate a temporary build target to link it in as necessary, prompting you to install Visual Studio/XCode through a free download if you don’t already have it.
It’s not as slick as we hope to make it, but it’s a step in the right direction.