I've come a long way with game developing getting from GM Studio, bare C++ and OpenGL, Unity (and a bit Unreal Engine 4), before reaching Godot.
I'm still in the quest to find and settle down to an engine that I can really connect with.
The reason I haven't yet settled to one, is the only and most powerful reason: I want to code in C++. I'm so determined with C++ that even the last 2 years of earning my living with Unity (still in progress) doesn't stop me to abandon it. Had Unity had the possibility to natively code in C++, my quest was long time ended.
I've been prospecting UE4 for the last couple of weeks as it looked like the ideal candidate but I came to notice a few drawbacks that I admit upfront - they are totally subjective and personal. So in no particular order:
- It's very cumbersome. I mean it's not as straightforward as Unity or GM Studio. I haven't understood eventually how to relate the GUI editor to the C++ code behind it. And In order to achieve the same thing you would with other game engines, in UE4 I have to write like 4 times more code.
- It forces you through predetermined paths with its actors, pawns, characters, game mode, game state etc. Not to mention the game templates. Not only that, but these classes have a ton of inherent code I don't need and I noticed people start from a template and then remove unneeded code down the road.
I prefer an "additive" way of making games, not "subtractive" or "ignoring".
- MSVS 2017 still doesn't work perfect with Unreal API in that the intellisense displays errors where there aren't and the autocomplete doesn't kick off.
- Not much documentation for C++. Most of it is for blueprint coding.
So in the Wikipedia list of game engines I ruled them out one by one until I was left with about 3, out of which Godot is at the top mainly due to C++, features and lightweight (in this order!).
I'm aware that Godot is still young and developed by the community and so it probably has its shortcomings. But where there's a will there's a way. I'm not that experienced so to be able to contribute to the engine, I'm merely a potential regular user. But I can promise that if I'll ever get the chance, I'll donate so those who are able can develop it.
I've read about GDScript and will use it, alright, but what I'm really after in a game engine is coding in C++. And doing it with absolutely 0 overhead. Unity has the possibility to write "native plugins" in C++ but they incur a little overhead with calling functions in the plugins. Moreover I guess you can't call C# API code from within C++ code (if I got it correctly).
Further research on C++ capabilities of Godot on the internet revealed the question asked multiple times but all I got to learn of was the 2 modes of coding:
1. Code as a module.
1. From what I got to read, this looks pretty much like the Unity way so I need some clarifications. I don't mind recompiling over and over with the smallest edit in code - no problem.
2. Documentation for GDNative reads:
Since GDNative runs native code it has literally zero overhead when it
comes to raw computation power (provided you don't make calls into the
script system all the time).
It's what's in the parentheses that worries me.
So in short:
A. Is there any way to code in C++ in Godot with absolutely 0 overhead at all? If yes, which of the ways to go?
B. I'm interested in your personal opinion: given what I let you know about me, do you think Godot would be for me too? (keeping my fingers crossed)