LOL, good luck dealing complicated issues by yourself.
UE4's source is very easy to read. Very well structured, well commented and well documented.
Well see you in your_planned_production_time * 3 then!
It's actually faster to code in Blueprints than in C#.
In terms of performance, you can rewrite critical parts into C++ with UE4, but not in Unity.
For the rest, both Mono and Blueprints are already being, or are going to be soon converted to C++ before compilation, so their performance will be comparable. UE4.11 introduced this feature as experimental, and Unity provided this feature for Android last time I checked, but was going to provide it for all platforms eventually.
You can prototype very quickly in Blueprints and once you're happy with the results, it's easy to just rewrite the whole thing in C++ if that is what you want. It's not necessary though. C++ has a slow compilation, but that problem is taken care of with blueprints.
The "* 3" is a mistake. In general, writing in c++ is slower than in c#. But not in this case. I was thinking the same thing before I started with UE4. I found out that UE4 is faster.
Also you can do your own complex tools in Unity very fast.
Editor extensions - yes. Complex systems? No.
When you're making a game, you must choose the right technology for your type of game. It's never as easy as "well this engine is superior cause I've heard a lot of good titles are using it and it gets good/bad press", or whatever.
You must weigh the technology of every engine and decide based on that. You don't know Unreal unfortunately, so you can't compare and make this kind of decisions. I know both engines.
UE4 is technologically superior to Unity in many regards. If you're making a FPS or a 3d person action game, you need Unreal for graphics alone, plus UE4's AI trees will be of big help, plus blueprints for easy prototyping.
If you're making anything with multiplayer, again only UE4 will do, be it a MOBA, an MMO, a Diablo clone, etc. UE4's multiplayer is years ahead of Unity.
Now if you're making a Match3, or a TCG, or an RPG, you can use either engine. It'll be a matter of personal preference, then.
UE4 has:
- AI trees (which Unity doesn't have at all)
- Production quality multiplayer replication for humanoid controller. Everything is polished, years went into this controller, and it's high level. Movement prediction, interpolation, etc, out of the box.
- You can test and debug multiplayer inside the editor in Unreal, with as many virtual clients as you want. In Unity, when you want to debug multiplayer, you have to compile your project, launch 2 instances, connect both manually and then debug your problem. You can either debug the client or the server at a time.
You need to compile your project every time you want to debug network code, for every little code change you make in Unity. So making a multiplayer game on Unity will indeed take much much more time and energy, simply because they have no system for network code debugging.
- Graphics.
- Custom shaders in blueprints. It takes minutes to make incredibly complex custom shaders in UE4. Takes days to make shaders of comparable complexity in Unity, plus you'd have to learn Cg.
- Various high level systems such as in-built localization system, integrated with various online services or the post processing volume, to give another example. Unity is bare bones.
AFAIR Unreal was always more free and available than Unity. There are other reasons why ppl dont make complex games in it.
The reason for Unity's popularity is in its simplicity. UE4 is harder to get a grip of, because it's C++, and not the kind of C++ you learn at the university. So it's got a high entry barrier in this regard.
In 2-3 years should be in very much different place than now.
Unity will be where it is, unfortunately. I had high hopes for it too, but I don't anymore.
- Unity and Unreal released their respective 4.6 versions at the same time, both featuring the new UI system. UE4's UMG was experimental at that point and was lagging behind. Today it's superior to Unity's UI hands down, especially for making large interfaces.
- At one point, Unity threw all their efforts into the graphics, hyping PBR and then what came out of it was the same old rendering, just with pbr. It's still poor.
- Then at one point, Unity realized their old network system was old, so they rewrote a new one from scratch in 5.1 or 5.2. It's just a little bit more high level, but not by much. I literally had to write my own movement interpolation for it, because theirs was jerky and didn't work without rigid bodies. In 2016...
- Still no default and well polished humanoid controller. They have something, but it's unusable. A lot of engines have them nowadays, and Unity just even doesn't care. Game Maker has a decent controller with configurable momentum, gravity, etc. Unity doesn't, and one of the reasons Unity doesn't explore its own technology is that they're not in the business of making games themselves. Epics make games on their own engine, they're aware of every little problem in their engine and they immediately fix it. And they release assets for free, because they're making them anyway for their games. They implement new technologies as they're making their games, and they make those technologies part of the engine. Unity stands still...
- UE4 became free. On the next day Unity announced they're making their engine free too... except they still don't release the sources, and you can't have the dark skin. They have no respect for their customers if they want them to work without the dark skin, just out of spite. And for what? And being open source is no small thing. They can accept commits from you. You can rewrite parts of the engine, which is important when you're making a big game, otherwise you have to implement hacky shitty solutions. You can see their commits and discard things that you don't want, even though it's not easy, but at least you have that possibility. People make important commits to UE4 all the time, their community is alive, while Unity stands still, and their community moves cubes.
- I think Unity gave up on that race with UE4 some time ago, unable to write good graphics, while Unreal keeps pushing the envelope, keeps improving its renderer all the time. If you read and compare each Unreal's and Unity's new version press releases, you can understand what I'm talking about. One is implementing vital changes every new version, the other one stands still.