I’d just like to quickly convey some of my thoughts on something that I’ve witnessed negatively effect many game engines (both open source and commercial) over the years.
Now I know “negatively” can be interpreted in many different ways, so here is a basic example of what I’m talking about:
The Torqe3D engine which you may or may not be aware of went full open source (MIT) over a year ago. It actually started out immensely popular, but because they choose to make so much of the engine’s functionality, f.e. the editors and engine core, dependent on their proprietary and not widely known scripting language known as TorqueScript a lot of game developers, who could have been potential contributors as well mind you, were put off by it and opted to go with different engines.
So why am I bringing this up? Well, I couldn’t help but notice when I first found Urho3D that it is very heavily AngelScript oriented (both the editor and primary game example are fully coded in AngelScript after all). However, I was pleased to see from going through the source that the engine’s core functionality is in fact written entirely in c++. It’s also great that Urho3D supports the option to compile without any scripting languages included with compile flags, but the problem is you lose the use of the editor as well as the best and most useful example project (ninja snow war). I’d hate to see Urho3D go the same way Torque3D did and become too dependent on AngelScript (or lua even for that matter).
Don’t you think it would be better to use C++ for the editors and tools too and include the primary game example/s (“ninja snow war”) in c++ as well as the most popular scripting languages? If the tools and primary game example were initially written in c++ it would be easier to wrap their functions in just about any scripting language (lua can practically do this automatically) The tools and game example are the most important part of introducing new users to an engine in my opinion, so why lock them down to one particular scripting language?
Here are the reasons why I think this would be more pragmatic as well as more beneficial to the success of a game engine as a whole.
-
It gives you a much larger community. (Developers don’t often like to take the time to learn scripting languages they don’t know already, especially ones they haven’t heard of, so they will simply look for an engine that supports the one they want or allows them to easily embed their scripting language of choice. A larger community means more contributions to the engine as well as bugs reported.)
-
It’s easier to embed a new scripting language in c++ than it is to remove/replace an existing one. (you have to back-port exclusive features of the scripting language you’re removing to c++ first)
-
The C++(11) improvements have made coding in c++ nearly as quick and easy as using a scripting language. (Okay maybe that’s a bit of a stretch but it is a lot better isn’t it?)
-
C++(11) is becoming more and more popular at a rapid rate. (It is much easier to port to other platforms and both Google, Mozilla, and Microsoft are encouraging developers to write in c++ now more than other languages for that reason).
-
C++ can easily be ported to the web now (Emscripten, Mandreel and now Duetto all allow this).
Just some musings of mine for the Urho3D team