Hello there.
NOTE: You can skip the paragraph below
------------
I’m sure all of you who develop games knows that Unity, which is the leading cross-platform game engine on the market, just hired a new CEO, a CEO who won’t leave any stone unturned, there are some rumors that they hired another CEO because the company have been sold to investors and the founders aren’t the owners any longer. There are even some evidence that something is very wrong in UT (Unity Technologies) for example, the former CEO even replied on their blog something like “I won’t let the new CEO ruin the company” and stuff like that. I do believe that they changed their CEO for a ‘draconian’ one because the investors who bought the company want money, and the former CEO didn’t leave immediatelly because that would surely scare some customers. There are unanswered questions, like, who owns UT? Why David (the former CEO and founder) didn’t leave UT immediately, since he said he want to have time for his family and he have more money than one can spend? Why did they hire a well-known ‘draconian’ CEO? UT won’t answer these questions because the answers are not good. The fact is, Unity is a money-greedy company now (well, it always were, but in the past we used to pay for a nice engine with great updates, not to have the ‘right’ to use a lazily updated engine, 3Ds-Max style) and it will inevitably stall in terms of development as the money flows to the pocket of the investors, and IMHO, this is the perfect time for BGE to rise from the dead and kick some ass!
------------
IMHO, BGE is a quite decent engine, but it has some serious flaws. My idea is to discuss here what it needs at the moment to be on-par with the game engines leading the market today (NOTE: Forget 2D atm please), my idea is to have a list of the most needed features that are missing and discuss them in detail, including estimated cost, and possibly make a crowdfunding campaign to have them implemented by some professional coders from our community (e.g. ideasman).
Lemme start the list: (NOTE: The estimated costs (USD) are wild guesses)
1-Ability to deploy on various platforms in a professional way (Mac/Lin/Win/iOS/Android).
IMHO, at the moment this is the key point that is seriously lacking. It’s possible to make somewhat decent games in BGE atm, but you simply can’t distribute them in a decent way. I have no idea on how this could be done… should it be a separated and very optimized ‘player’ for the blender stuff, or should we make use of something like gamekit? Shipping a player and .blend files feels cheapo imho. This needs some serious debate.
Est. Cost: 100,000
2-Scripting in cython to provide c-like performance while maintaining python compatibility.
This is another point that is seriously lacking in BGE imho, the logic blocks are cool and I heard they are fast, but python is just too slow for anything realtime. Gamekit uses C++ or lua. C++ is unproductive, although it’s great to have it as an option because of unbeatable speed, but imho, it was a bad move to choose lua for gamekit, not only because we (Blender users) are used to python, but also because it’s kinda slow. I know luajit is very fast but cython is much better imho, it’s fully compatible with standard python code, so you could just code as you’re used to, and if you need some extra speed, just put some ctypes here and there for awesome speed (cython is even faster than Unity’s mono, Unity is addressing that with the il2cpp).
Est. Cost: 15,000
3-Better organization of game-related components
I don’t know how Blender works internally, but it seems it uses a component-based architecture, just like Unity, it’s a pain not to have an overview of an object’s components since they aren’t organized for game development purposes. What we need is a “GE-related Components” panel. Just a simple listing.
Est. Cost: 2,000
4-Better realtime rendering features
BGE is lacking in terms of rendering, we seriously need more power over shaders and stuff, and of course we need things like batching (dynamic and static), lightmapping that blends with realtime lighting, etc.
Est. Cost: 75,000
5-Unity-style events
This is very important. Unity scripting is genial because of the events which are basically functions that are called in every script when something happens, for example, Update() is called every frame, FixedUpdate() is called every ‘tick’ (physics engine stepping and stuff), and most important are things like OnBecameVisible(), OnCollisionEnter()/Stay()/Exit(), etc. You have an event for pretty much anything you would need, and there are even useful parameters for some (like collision events pass the collision data).
Est. Cost: 10,000
6-Easy, intuitive and fast functions for manipulating objects
Do you know how you make an object face another one in Unity? It’s as simple as writing “transform.forward = targettransform.position - transform.position”. Do you know how you get a vector of the orientation of an object in Unity (say you want the vector of the local ‘up’ axis)? “transform.up”. That’s called intuitiveness. Unity is full of it. To make things even easier, there are a number of functions, for example, to make an object face another you could simply use Quaternion.LookAt(), this way you wouldn’t even need to know that if you subtract the target position from your object’s position you get a vector pointing to it. We need this! And most importantly, we need them implemented in blazing-fast C++ which we call from cython code. For all the other non-realtime stuff, there is a bellyful of python modules for anything you may need.
Est. Cost: 25,000
Any input is appreciated… Is anyone else interested? Am I dreaming too much? Am I dreaming alone?