's C# integration is promising and follows a technically well thought-out design, however is a fairly complicated topic.
The challenge with and other programming language integrations into Unreal Engine 4 is that, unless they were to be genuinely and thoroughly adopted by Epic, they would not quite be first-class citizens in the way that C++ and Blueprints are. Specifically, we put substantial work into documentation, samples, pre-release testing, compatibility, porting, and support on C++ and Blueprints that we can’t feasibly replicate for a third-party plug-in. For example, unless the documentation on UE4 programming were updated to include side-by-side examples of C++ and C#, the programming experience with C# in UE4 could feel disjointed, and downside may outweigh the upside of one’s familiarity with C# and its easier header-free programming model.
Programming language integrations are very different in nature than middleware integrations such as SpeedTree and Substance in regard. Though the later are -rich, they are fairly self-contained in their interactions with UE4. A programming language integration can interact with just about any part of the engine and therefore has unlimited scope.
For these reasons, we updated the UE4 EULA to require redistributed programming language integrations to be free and open source, so that if one gained a critical mass in popularity, Epic could adopt it and ensure its future viability in the areas described above. I’m hopeful 's C# integration goes route in transitioning from closed beta to full release but I can’t speak for them.
There is another key point to consider: C# in UE4 more closely resembles C++ in UE4 than it resembles C# in Unity. Unity users coming from a background working with the componentized C# behavior model with Unity’s MonoBehaviour framework will find that UE4 doesn’t follow that model and therefore the emergence of UE4 C# support isn’t quite the hoped-for panacea.
Finally, when an engine is written in C++ and gameplay is scripted in another language, the interoperability barrier between languages eventually grows overwhelming. is why we ultimately abandoned the UE1-3 era’s UnrealScript language and moved to a pure C++ programming model. gives UE4 the ironic property of making it harder to learn the engine and start writing a game, yet ultimately easier to grow, finish, and ship.
Therefore, my recommendation for developers who want to use UE4 but prefer C# over C++ is to bite the bullet and give C++ a thorough . of us at Epic clearly see the many ways that programming in C# is more enjoyable than C++, from header-free source code to generics to rediced boilerplate code. However, C++ is a language that scales upward without limit, and the experience of whole-program debugging (engine and game together) is incredibly illuminating, as are the power and visibility that come from having the full C++ source and ability to call into any part of it.