Creating Plugins with Unreal 4 is an accelerated introduction to the extensibility of the Unreal 4 editor. We create our very own plugin with a complete user interface, using Slate, that allows us to randomly generate city blocks!
We cover plugins, modules, important aspects of the Unreal Build Tool (or, UBT), how Unreal integrates with Visual Studio, how to create our very own UI elements - even with data binding and event handling - and how to place blocks into the game world.
No Unreal experience is needed. For the most part, we stay away from the editor itself. Learning how an engine ticks at a code level is a great way to get a good feel for how we can work with it to meet our own game project goals. Furthermore, the APIs available to us in our plugins are the exact same APIs that both our game code and the core engine itself uses (therefore this knowledge will easily translate to other tasks, such as gameplay programming).
Going through this series will give you a great head start on creating your own plugins and game modules - and even modifying the engine code itself!
However, for this series, we do ask some level of understanding of C++. While you certainly don’t need to be an expert to follow along (and, while this would be a great way to sharpen your C++ skills), you should understand the basic concepts of the language and object oriented programming - since the Unreal 4 editor relies heavily on such techniques.
If you are proficient in another language such as C#, yet don’t have much C++ experience, you may have to pay closer attention to the syntax itself to follow along. However, since we don’t have to get messy with manual memory management or other aspects that are exclusive to C++, it is certainly possible to do so.
The only required software is Unreal and Visual Studio 2013. We show which edition of Visual Studio that you can download for free that is compatible with Unreal. There is no reason why you couldn't follow along with xCode as well (on MacOSX), but you will have to consider minor user interface differences.
We hope you enjoy the series!