Is it true that plugins on the marketplace have to be 100% encapsulated and cannot require engine source additions/modifications to work?
If that is the case, I need some advice on how to deal with that limitation as the areas of the codebase I want to make plugins for is not really designed to be extended through plugins.
So one thing I was thinking of was doing a pull request of engine changes that add the necessary functions to allow the plugin to work. Then the plugin could be released (on marketplace) pegged to the engine version that includes such changes. However I imagine there is problems like that, as the time it takes for such changes to make it into a release version, and being pegged to that release version, which really makes me think providing a git repo link of the required changes along with the plugin seems ideal so I don’t understand why that would not be allowed.
Pull Requests can take months/years to go through (if they go through at all, it’s at Epic’s complete discretion). You’ll need to either duplicate whatever you’re using from the Engine into your own code (if you can), or rethink your approach.
yikes. Well any further advice as to how to mitigate such a need? You said duplicate, ok but what about when its a system that is really not object oriented, I’m not all that familiar with how to get around an api’s limitations as I usually just modify things directly. I mean from what I know of c++ apis are probably not meant to be hacked around, the design of the interface is deliberate so if its not designed to be extensible through plugins then I’m not sure how to avoid refactoring it so that it is and asking epic to pull such changes in…
Then you can write your plugin, and submit the PR, but you won’t be able to sell your plugin until that PR goes through and is available to the public. If I was you, I’d likely find out who “owns” that system (look at the git history of that file) and ping them directly to see if the PR is something they’d be willing to make or if you shouldn’t bother.
If it’s a small change (like marking a class for export, making some method virtual, etc), then I’d just ask them to do it since it’s a simple change and you don’t have to go through the PR flow.
If it’s a larger change, then you may want to have them peek at what you’re doing to see if it’s a PR they would ever allow through or if it’s simply too much.