Entire game as plugins?

Hi there, I am coming over from CRYENGINE. Over there some cool dude from the community, called hendrik, created a “plugin SDK”](http://www.cryengine.com/community/viewtopic.php?f=375&t=101119) which, if I understand it correctly, allows one to create C++ plugins for the engine. This allows for a kind of hands-off approach to the source code, and smoother transitioning between versions of it.

I find github/version control/merging to be quite intimidating. I have dipped my toes in and found it to be really messy. I feel like a plugin-based approach would be cleaner and safer.

So I was wondering if this kind of thing can be done in UE, and if it is a viable approach to creating a full project.

I am not certain, but the way your custom project works is that it is called a Module – which branches off from the engine source and to me is in essence a type of “Plugin” to the main engine source.

That is interesting, thanks.

What if I want to change some of the source code? Can I do it via a ‘Plugin’ or my Module, that behaves as though it overwrites it without actually going in and editing the source directly?

Im new to programming myself, having focused mainly on 3d modeling and level design. I do believe the term is called function overriding or overloading. You create a custom class that either is a subclass of the engine class you want to edit andor you import that class into your class with the #include directive. Once you do that your class will have all of the functionality of that class including any new functions you write in your class. If you want to change a function that exists in the original class that you extended from, you need to re-write it with custom parameters. Heres a link to a wiki page : Function overloading - Wikipedia
Someone help me out here.

Yes. Many aspects of Unreal Engine can be modified by creating a subclass of a feature, or implementing an interface, and then reconfiguring the game to use your class instead of its default. Inside subclasses you can override any virtual methods to customize their behaviour.