Howzit everyone :). I have been struggling to wrap my head around unreal’s module and plugin systems, so I figured it was about time I seek some assistance. Forgive me if this is not the most appropriate place for these questions.
Over the past few months I’ve been developing my own framework which I intend to use as a common set of generic tools and classes to help speed up the development of content. At first it was just a single project/module, and I thought I’d be able to import this module into other projects (I am no longer sure if this is actually possible?). I then discovered plugins which seemed the more appropriate route to take for this particular use case since I want to share the framework between multiple projects. I have just completed converting my framework into a plugin and have got it running successfully within a dedicated plugin project running UE 4.22.
The plugin is still work in progress, however it is fleshed out enough to start prototyping games with it. So I’m wanting to setup a fresh game project and use my plugin in this project. However because the plugin is still work in progress and I’ll be updating it as I expose its shortcomings, I’m hesitant to install it as an engine plugin (and consequently reinstalling it each time I make an update). So my main question here is if it is possible to share a project plugin between multiple projects, and if so how do I achieve this? Or is it only possible to share a plugin between multiple projects if it is installed to the engine?
Another kind of unrelated question that I thought I’d throw in here is with regards to the importance of the Private / Public project structure. Most guides seem to suggest putting all .h files in the Public sub-directory, and all corresponding .cpp’s in the Private folder. I have not followed this structure for my own framework because I like to keep my .h and .cpp files together. It hasn’t seemed to cause any issues so far, but is this perhaps something that will bite me further down the line?
Sorry for the very verbose explanation :o, here’s the TL;DR version
- In terms of projects, plugins and modules, what is the intended unreal workflow when it comes to developing a common game library, and consuming this library for multiple games?
- Is it possible to import a project module into another project, if so how?
- Is it possible to import a project plugin into another project, if so how?
- Is the Private / Public project source separation strictly necessary?