In my opinion managed languages (in general) usually have better tooling, are easier to use than C++, are more productive, have faster compilation times and also (as Tautvydas pointed out) it’s harder to make silly mistakes (or at least the silly mistakes are not so dangerous as in native languages).
BTOH, there are some potential issues (like GC latency and hidden costs) when you use a managed language.
Some extremely hard to solve bugs are almost impossible to make in C# - for example, heap corruption. Such bugs are a huge time waste, as it can take days or even weeks to track it down in a large codebase. When your iterating fast, you really don’t want distractions, and when something like this happens, it’s just a huge waste of time.
Also, if you really need extreme performance in specific code place, you can always drop down to C++ anyway - C# allows that.
What programming languages are you familiar with?
Are you only interested in C++ for performance reason ONLY?
Development wise, I can’t imagine a scenario where a game made in Unity(C#) would take longer to do than in UE4 than in C++. A language such as C#, speeds up the development so much. Development time has to be taken into consideration, doesn’t it ;).
For performance reason, native will always be more fast, there is no way around that… But to what extent?
IL2CPP will help lower that gab, significantly.
But honestly your game performance hiccups will most importantly come from high memory usage and too many drawcalls, not from the language you used to develop it.
I believe you can only use native DLLs at the moment if you want C++. But from that talk on IL2CPP they mentioned being able to drop in a C++ file and it will compile with the rest, without needing a plugin. I guess that’s kind of like being able to code in C++ as you wish, right? Difference I guess would be that you can’t talk to the Unity API with it.
Due to the nature of my game right now performance is everything but development time is definitely a factor I’m considering (which is why I’m doing so much research on the differences between the two languages).
I will always lean towards performance - I want my game to look as outstanding as possible with as little resources as possible. A big factor to WoW’s success was how it could run on nearly anything.
I’m not insanely familiar with C++ or C#, I’m just weighing options right now between Unity 5 and Unreal 4. Creating Plan A and Plan B scenarios and what my team will expect based on those choices.
It’s my experience that the focus on the speed difference of a language is a beginner’s mistake. It’s pre-optimization, which is the death of success. Very often the thing that kills your performance has nothing to do with language and everything to do with algorithm choice, or loop structure, or draw calls.
Write clean readable code, optimize when your profiler shows you need to.
From my experience, C++'s implementation of classes feels very primitive and like its been forced onto an existing language(which it was, C) compared to C#. Go watch an Unreal programming tutorial to see how it gets in the real world. If could only choose one language to program in, it would be C# every time, its clean, concise, strongly typed yet not overly verbose and now it runs onto of a mostly open source framework