Best practices for developing a plugin for two different projects

I’m currently developing an internal plugin that helps my organization share code across multiple projects. Right now, the obvious way to enable an internal plugin across multiple projects being developed concurrently is to install the plugin in the Engine/Plugins/Marketplace folder, so that the plugin is globally available.

However, this has the downside that a change in one the plugin for one project will influence all projects that use the plugin. We’re currently using GitHub and Git-LFS to manage our projects; is it possible to keep a “local” version of the project via submodules in each Git repository, that each projects read locally? That way each projects can track a specific branch / commit of the plugin and effectively silo versions from each other.

I’m not sure if the way Unreal Engine is configured will allow me to locally track plugins or if they must be tracked globally; I was hoping to get some advice on best practices that might help us manage our plugin workflow.

We put the custom plugins and their code in: “Game\Plugins\PluginName” which I believe is the default way Unreal handles them.

We looked a few setups for “central location for code”, but as you said, any plugin change then affects multiple projects, which may not all be on the same version of Unreal.

From what I’ve seen, it would just cause more headache than just copy pasting the plugin to a new project. But we manage multiple projects at various engine versions.

So you keep each plugin local to each project? And when you do this, does each project only read it’s local version of the plugin and this prevents any cross-talk?

Yes. No project shares code with any other. If multiple projects are on different versions of Unreal then not sure there is a better way to handle it.