Unity3D gone greedy, this is the perfect time to revamp the GE! Crowdfunding!!!

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? :stuck_out_tongue:

Great Idea
#1 = make a system that exports game logic in another usable format - a .blend is your property - Blender and the game engine are not = something like What Gorand is working on. or make some sort of Cython based new BGE version with a more commercial friendly license. or some sort of Html5 engine with OpenGL acceleration.

#2 see one

#3 a full rewrite would accomplish this with one consistent design architecture,

#4 - tighter modern openGL versions or full OpenGL (X?) compatibility

#5 - Definitely, collision event does not return enough information

#6 - Add some logic to bge.logic?
Vector = object Z+ = object.worldOrientation.col[2] (I think?)
Point axis to object -> own.AlignAxisToVect(own.GetVectTo(target object or position)[1],axis,time))

want a function over time?

add a object?

ObjectMover = scene.addObject(‘Mover’,own,0)
ObjectMover[‘Object’]=scene.objects[‘Object’]
ObjectMover[‘TargetTime’]=integer or float
ObjectMover[‘TargetObjectorPosition’] = where to go
ObjectMover[‘Method’]=string = “Linear” , “ease in” , “ease out” , etc

I would be all for this if we had close to the estimated $227,000 to spend on the blender game engine itself. Ton doesn’t seem to be particularly interested in upgrading BGE and further down the road map there are plans to replace it with an ‘interaction engine’.

NOTE: Before people start to b*tch that I’m doing this for money and stuff, I would like to let you know that I have absolutely no interest in making money with this. I’m not going to start the crowdfunding or something. If this gets enough attention I’m going to contact the Blender foundation on how to proceed. Ideally, I would like to stay away from funding and stuff like that. I just want to organize a ‘roadmap’ and know if this is viable.

Hello there. Thank you for your reply. Here are my considerations:

1- I agree, but we need some statistic on the demand for HTML5 imho. Mac/Lin/Win are pretty much mandatory and there surely is a demand for iOS and Android, but I don’t know about HTML5.

6- Well, IMHO, Unity is the ‘role model’ to be followed. It has pretty much everything one would need in terms of ready-to-use functions, we need lots and lots of functions imho, functions like angleaxis(), functions to convert stuff (like quaternion to euler angles, euler vector orientation to quaternion, etc), the mathf ones are pretty much essential also, and we could go even further and implement the mathfx stuff and even do similar stuff for other types, for example, something like a Vector3.Berp() would be awesome :).

Well, that’s why I though a crowdfunding could do… people raise lots of money even for some quite cheapo (imo) games that way.

So, the BGE is going to be discontinued? Bad news :(. BGE has so much potential.

I don’t think it’s going to be “discontinued,” per say, it’s just been mentioned/planned to be “reimplemented” for use alongside B-Internal… sometime… However the details at this point are too vague to say what that all entails (From what I’ve gathered).

I personally would love to see BGE expand and grow, and I think crowdfunding could be a nice direction to move. CARRY ON REPGAHROLL!

The BGE has a couple fundmental problems that money simply won’t solve.

  • First off, the BGE is in the process of being recycled “interaction tool” - no one knows what it means, but it’s provocative…

  • Much of the BGE codebase is old and moldy - in reality, a brand new engine would be rewritten…
    [LIST=1]

  • With that said, a permissive license would probably be used like Apache etc. (if you want commercial investors to even touch it).

  • This means NO code can be used verbatim from the BGE or Blender, which means rewriting all the Blender functionality which currently the BGE utilizes for loading blend files, rendering code, animation code, etc. - not easy.

  • If this new engine did appear, it most likely would not fall under the umbrella of the Blender Foundation.

  • Since crowdfunding is proposed and money is involved in this hypothetical situation, why create yet another open-source engine that has no significant difference over existing open-source engines? i.e. C++/Java + LUA/Python/etc.

  • Examples: Panda3D, Irrlicht, Urho3D, GamePlay 3D, Godot, Torque 3D, Ogre, io quake, Grit, Delta, etc.

  • Practically, all decent open-source engines are similar in features and are capable of producing games made in the BGE. Hobbyists will never use advanced features, thus hobbyists.

  • If what makes the BGE the BGE, is using Blender as an editor, then it’d be easier to add Blender support to an existing engine, as what appears to be happening now.

  • The hard part here is every engine has its own animation system, etc. Of course, what’d make it easier is if the engine used Blender’s animation system, but the engine would need to use Blender/BGE’s GPL code directly or rewrite it, and you’re back at square one.

[/LIST]

Overall, game engines are a very dynamic volatile thing and tend to be suited to a genre, thus why you see so many incarnations of them. However, if you feel Unity is losing market share, you could always start your own game engine company with the engine based on Blender. If you open source it, you could use unreal’s subscription based business model…:eyebrowlift2:

What i like about bge is you have blender with it.
I would love there to be made another game engine with similar features to bge.
And for it to be a whole lot better than the bge.His idea’s sound great for a new engine.I really wish someone would make it.I think it would be great to replace the bge with our own game engine.

Just another “we need more features” thread.

If you like Unity, there is no problem to use it. There is no competition between the BGE and Unity and any other game engine.

The above mentioned “features” sound more like a problem in front of the monitor:

1-Ability to deploy on various platforms in a professional way (Mac/Lin/Win/iOS/Android).
What do you mean with “professional way” you already have all you need. You can even use an external tool to feed an installer to support the user on installing the completed product.

No, iOS and Android are not supported yet. If that is your point, please focus on that.

It is up to the user how to distribute -> problem in front of the monitor.

2-Scripting in cython to provide c-like performance while maintaining python compatibility.
Why? Scripting is there to describe high level behavior. Typically this does not require ultra-fast processing. If so it is most-likely not high-level.

You can always create fast low-level code with C++. The BGE is open-source so nothing stops you to create the low level parts (except your skills).

I would agree if you have arguments to add more scripting languages. For me Python as scripting language is good enough.

Btw. bad designed code will not become better when running a bit faster. It is still bad designed.

Problem in front of the monitor.

3-Better organization of game-related components
This is 100% up to the game developer.
Problem in front of the monitor.

4-Better realtime rendering features
Sure there is always demand for more “eye-candy”. More eye-candy = more work = longer development time.
Problem in front of the monitor.

5-Unity-style events
This is the BGE. Why it should rely on Unity architecture? Use Unity and you have it.
The BGE is event based. The events are measure by the highly configurable sensors. I do not see an architectural problem here.

So it sounds like a problem in understanding the bge.
Problem in front of the monitor.

6-Easy, intuitive and fast functions for manipulating objects
What you describe are operations in 3D space. If you do not know the math than there is nothing intuitive. You have the option to create an high-level library that provides the operation that you think are so important.

In the BGE API the up vector is simply “z” (if you define the Z axis as “up”).
Again, the problem is in front of the monitor.

Overall I suggest to focus at one aspect you want to approve.

+1 on ‘problem in front of monitor’ symdrome.

I have yet to find limitations on whar can be done in BGE. I am not opposed to supporting development of the BGE, but having used the engine a couple of years, I can confidently state that the biggest limit is: the thing at the keyboard.

Say you walk into a workshop. You’ve used a hand drill before. In front of you is a lathe. The lathe doesn’t know what you’re making, it doesn’t have an obvious handle to turn to make it work, you need experience and training to use it.

Lets say you’ve used Scratch before. In front of you is blender. Blender doesn’t know what you’re making, doesn’t have clear buttons to make it work. Again you require prerequisite knowledge.

I aggree with @sdfgeoff :“Blender doesn’t know what you’re making, doesn’t have clear buttons to make it work. Again you require prerequisite knowledge.”

It doesn’t matter which help you need to archive your goal, it depends on how you do it. 3D softwares calculate physics and meshes the same ways like each other (geometry mathematics). Those are just formatted in different kind of human logic with help of programming languages. And for game engines, people just collected some specific functions and put into a library, all you need is just to know how to use it.

Hey there, I’ll jump in this “fight” for I fell like it!

1 . People complain about the BGE for lack of feature, and with reason! We all want to effortlessly make a great game!
But there is a thing or two that can be done.

If the BGE is rewriten, it might get better. It just needs to do what it does in a larger scale. We shouldn’t be designing around the obstacles. For me there’s no real need for too many shortcuts, they become too many lines to know.
My idea of a good Blender is that you can mix-a-lot of things in it and get a smooth outcome. That mentinoned, it’s what comes out of the monitor that is wanted, that’s the goal! A beautiful, smooth display. As long as the BGE does what it does in a robust way. Either it can or it can’t (if it can’t render 1M suzzanes, just render what it can 8 or 10).

It has come a long way and is going further up to meet our demands. The BGE has done well!
It can also not “die”, for it’s open source. If from version X.xx Blender comes packed with the interactor engine, well, if we really want it, we can continue a previous version with the BGE engine, and can even ditch all non bge related features.

So yes do it!
Blender is free and opensource(limited), if on can start a crowdfunding campain to further develop it, I’ll give him my money!

Good! We need at least bug-fixing.

Fork it, strip it, fix it!..then we talk about new features.

Sometimes we just need to be more realistic!

Following from Goran’s post concerning the awful API, Unity really isn’t a good example of a well designed engine.

It suffers from the embed-over-extend design that limits the extensibility of the API, and uses black-box components to implement non-reuseable features.

Unity is great for getting started quickly, but like most engines which attempt to hide complexity by creating a brick wall “simplification” layer, it becomes cumbersome when trying to push beyond the limits of what the developers thought necessary.

For fear of making this my obituary, I shan’t repeat this at length;

The BGE is just a game engine, and it is not special in its design to any other engine. Becoming attached to an engine is not sensible, because every game engine is designed to roughly achieve the same task.

It does not make sense to spend time / money developing an engine which is in a weaker position than other open source engines when the particular needs of the original game engine can be met.

The BGE offers in particular one benefit - Blender editor integration. Users have no concept of the code that drives the engine, all that they use is the scripting layer.

It would be far more sensible to invest in supporting a well established open source engine to achieve the goal that we all likely share of a stronger, more maintainable game engine, which can allow the users to do greater things if they have the time to invest.

On the topic of the original post:

You can already use Cython in the game engine. And it’s a pain to do so. It’s platform specific, and is rather ugly syntax. It makes far more sense to use Boost.Python if you want speed, and write some small wrappers over C++ code (yes, this too is platform specific).

By the time you rewrite core features of a Game Engine - like components, events, scripting API, it is not the same game engine. It just bears the same name.

For this reason, consider actually using an existing open source engine (cough, like Panda3D)

A short university case study of BGE vs. Unity 3D:
The biggest factor that came up when helping a university instructor was that Unity 3D’s educational license was way too much money for his course. He could not get the funding for it. So together we came up with a game plan to use Blender Game Engine instead.

He was very happy with having a tool that keeps his lesson plans the same. He didn’t have to try to secure funding for any licensing and he did not have to jump through the hoops of using other platforms that looked free for educational use. Blender’s straight forward FOSS licensing, easy install/uninstall and capable feature set fit his needs perfectly.

It was a graduate student media management program at a university and the class was specifically about interactive media production. It was more important to teach what went into interactive production than how to use a particular tool or platform. So Unity 3D’s platform and licensing as well as others just did not fit like Blender’s Game Engine did.

Stuff like Ogre and Irrlicht are not game engines, that list is flawed because only Godot and Delta are more or less on the same league as Unity, although you can’t compare them. Godot is very nice, has lots of features and stuff, but it’s a pain to deal with external data and it’s kinda slow as well. There’s another one called ‘polycode’ which is somewhat like Unity, but it’s in development for like 3 years and still not usable.

The problem is, we have some opensource engines that are supposed to compete with Unity, but opensource has a problem that is de-centralized efforts. We have 10 Unity wannabe, but none is usable. This is just how opensource works, we have 10 square wheels because these 10 guys won’t join forces to make a round wheel. That’s why if we want something GOOD, we have to pay for professional work.

Also, which existing engine supports Blender? Gamekit?

I don’t agree… C++ is not as productive as other newer languages like Java, C#, Python, etc. The programmer doesn’t matter. You’re saying that a good pilot will win a F1 race with a beetle. Bullshit.

I’m not talking about BGE but blender itself, for example, modifiers are ‘components’ aren’t they?

Also, Python IS slow for realtime… people who are actually making games even complain about Mono being slow for Unity, and it’s like 200 times faster than Python. Speed always is a concern for game engines because some of them will be pushing the limits of the hardware, and you don’t want a huge overhead on top of it.

That’s the problem with opensource people… want a new feature? The problem is YOU, YOU is responsible for making it. Even the most basic thing. I remember this same mentality from KDE4 release. That’s why I’m using Windows since then…

We give you a square wheel, if it doesn’t work for you, it’s up to you to make it round. There’s no dialog nor ‘reasonable’ – it’s not reasonable to make our wheel round simply because it’s ours, if you want your wheel round make your own.

This is the kind of mentality that stalls opensource development imho, I don’t see how that is beneficial… You could’ve said that it’s not a priority, not gonna happen, and stuff like that, but instead you try to spread the idea that Unity is not doing things correctly, what’s plain bullshit, and blames people who can’t achieve the same level of quality Unity provides on BGE. Not everyone should know everything. People can be successful and worthy without knowing everything, most people are.

There are lots of people being successful with Unity without coding a single line. I’m yet to find a ‘successful’ game made in BGE. I think there are problems in front of the massive majority of monitors :).

/thread

Just to let you know, I’m going to steal that fairly often. Well said.

Thank you for using the nazi strategy of extracting minimal excerpts from my text and using them out of context to prove something. Do you really feel superior doing that? Ok, I buy that, you really are superior than me.

throw a stone at her” - Jesus H. Christ
See? It’s easy.

This discussion is going nowhere… I wanted BGE to come closer to the best engine on the market today, besides some very positive feedback (thank you guys) most people can’t see what is right before their very eyes. It seems they are the majority… In the end the fact is people believe what they want to believe. I can’t imagine how blind one must be to not be able to see that Unity is unarguably the best game engine available in terms of providing the tools developers need to get things done.

/thread (please)

Your request looks like you want to turn the BGE into unity. There is no need to do it. You can simply use it already.

Your current idea is to create interest for some vague ideas.

With crowd funding the motivation moves from developers to investors. With the money collected the developer will implement the idea even if the developer does like the idea enough to do it for free. This is “normal project work” as any developer who works in business.

Both, the investors and the developers need clear requirements to measure what the result should be.

As said already, better focus on one thing at the time. We already have a long list of pretty specific features and enhancements.