How do I develop engine(built-in) plugins?


As the question asks I want to develop engine plugins so the functionality they offer can be used across different game projects.

I can go and create a new plugin from the editor, compile it, and then move it to the engine folder and it will work. However what I naturally want is to be able to continue to work on it, adding more features over time however the plugin no longer compiles like a game plugin. Deleting the dll forcing the editor to recompile also seems silly. Not only that but it often doesn’t even work and will ask you to compile manually.

Also keeping a game plugin to then copy over to “update” the engine plugin seems to also be a bad idea not just with the copy part but also because it would result in duplicate between the engine plugin and the game plugin.

I have searched a lot for info about this but could not find anything yet there seems to be plenty of people doing this stuff, just taking a look at the market place.

How am I supposed to work on engine plugins?

When I work on a plug-in I keep it in the Project/Plugins folder, that way I can open and refresh the visual studio project from the editor. While developing I mostly need just one project for the plugin.
When you want to recompile the plugin while in editor, you can open the modue tab(Window → Developer Tools → Modules), search for your plugin and hit recompile. This works in most cases but sometimes you have to restart the editor anyways.

I hope this helps you.

Plugins in enigne directory compiles with the engine. Other good solution then what SteffM here is actully build engine from source then engine code build with your project, including plugins in engine directory. Other nice solution if you using NTFS is to make symlink between game directory and engine directory:

Remeber that plugin modules, game code modules and enigne modules are no diffrent and work the same regardless where you place them, it’s just different from of distributing them for devlopment convince. UE3 for example didn’t have either plugins or even project and each “project” required separate installation of UE3

Using symlinks seems pretty cool but wouldn’t linking the two folders cause the project with the game folder to, when started up, try to load the plugin twice which could result in some duplication trouble?

If I were to compile source code then what would be your recommendation for testing out the plugin or where specifically to place tests? What I want is not to have lots of tests but some simple once to ensure things are overall working (not that it may make a difference).