Hi,
I’ve been blending since before highschool (2.49b R.I.P.), and tried numerous times to make a game using the BGE. At first I thought it was simply a daunting task. Always hacking there and there to achieve whatever goal I had in mind. At first I even tried to make a mouselook-system with Logic Bricks only (speak about whacky…).
But with time and more and more studies in Computer Science and getting more and more into more general software development, I came to realize what might be wrong with the BGE as of now… Take this with a pinch, because I’m opening this thread to also get your feeling on this tool that is the BGE.
The idea is to expose as much “problems” that might stick to the BGE despite the decade of service, but also to get the current “good points” that would make it competitive compared to other Game Engines.
This is my point of view:
Pros:
- Blender builtin: Your modeling app is your game-making environnement. Profit from the power of Blender as a 3D tool and run the game right in there. You can even use the animations that you made with Blender itself, almost everything you model/configure within Blender run in the BGE !
- Free: No financial requirement, just download the software and start working.
- OpenSource: People can work together to make it greater every commit ! Although it seems to me that the 3D editing part profits way more of the collaborative work, amazing projects are still done on the BGE (UPBGE).
- Logic Bricks: Even if I’m not fond of it anymore, its something very appealing for beginnners ! Give a free and powerful software to noobs, let them make silly objects, give it physics and run the thing with “P”, and now let them add basic logic. It feels awesome, with self-descriptive bricks, you can make things move like in games ! I started this way too
- Python ready: When you need to do more edgy things with the LB, what about programming your own logic ? Python is the perfect language for beginners again, there is little overhead when writing Python scripts, the general syntax is really simple, and provides really complex mechanisms when you get to know more about it. Its truly a good language for logic control.
Cons:
-
Logic Bricks: Sure, everyone starts with this, and even Python lovers MUST use at least a few bricks to get their scripts running (not with UPBGE components tho). But these bricks are just… Too limited. I’m not saying we should get rid of it, but development towards this brick pattern is not gonna make it for more serious future uses… Its a pattern that was thought of 10 years ago, before Visual Programming really took off (UE4 nodes or whatever), and it sure contributed to the appeal beginners had for the BGE, but come on… There is a node editor that was developed and used for materials, but the logic never grew there. You might ask why I think the current bricks system is bad today tho… Well, when you make programs, are say you want to design some general logic, you must control some kind of flow that the system will go through.
Logic Bricks despite the good idea of “events(sensors) to be processed(controllers) and produce actions(actuator)” lack of a more general awareness, which can be granted using Python scripts in the controllers, but in practice it feels whacky as hell, and you might have a little bit too much scripts left and right at the end of the day. LB sucks, but they’re cool, so its fine. We should move on from LB to something better. - Workflow problems: This is a consequence of the LB problem IMO: because they are so whacky to use, the few pattern really efficient using the LB are just exhausting and completely off of the way we would naturally do things (even when Python is allowed, it has to be executed with the bricks design in mind, its hardcore). Making a game is hard, you could make one from scratch if you want, don’t mean its a good idea. You could use Blender/BGE even if the workflow is hard to handle, don’t mean its a good idea. I think it got to the point where it also explains why the BGE is threaten to disappear from Blender, because the BF just don’t GAF about this decade tech that is so difficult to get working well that they don’t want to bother anymore. They are right to give up, because if no BF dev is willing to fix things, why would they bother ? Blender/BGE is a collaborative project: no one wants to work on something and people can’t use it properly anyway ? Drop it. It makes total sense.
- Generally passive community: The thing is, all the “pros” appealing beginners is a double edged sword, because now the core of the community is people looking to use the BGE and make a game, thinking that the devs are mighty programming-gods and could do anything to improve the BGE, so just relax and ask for cool features. But the amount of people actually contributing to the BGE is almost fearsome because of how few they are. Because of their inexperience maybe, the BGE users tend to not see how incomplete the BGE is, and try to use it in a state where a lot of work has to be made to finally “fix” the engine, rather than actively using it. Don’t get me wrong, people should use the BGE in its actual state, but they should also realize that a lot is missing (not just render-wise), and should take action to improve the tool if they want to get serious (instead, people usualy go to other engines because they are more game-making-ready).
To conclude my observations, I will say that I whine a lot. Be it because I’m French or because I’m lazy and want free shit despite not being worth it. But I’ve acknowledged this. So this are some of the improvements I think could get rid of some water leaking in the hull of the BGE, and some of my involvement:
- Better workflow: IMO Logic Bricks sucks. But what to use instead ? This is experimental still, but I’m tinkering with making a Logic Node addon, a bit similar to the former Netlogic addon, but more maintenable. I hope. lol. I also want to try to lay solid foundations so that it could be continued if I want to move to something else after, because I still think that nodes should replace bricks. 10,000 times over.
- Real framework: Logic Bricks even with scripts are hard to maintain. The API allow you to almost do anything you would want, but it lacks of a good groundwork to standardize the design of logic. What I mean is that the API is pretty low-level when it comes to game logic, sure you can control your 3D world, but in order to actually create a flow and manage events within the game (not just a simulation), it really lacks. People will find their own way to arrange things, but hell do two people don’t think the same way. The BGE should profit from the same enthousiasm the web had: frameworks. The basic idea is that in the case of web applications (website, webapp, webAPIs, etc…), you could make something out of Apache and PHP, use the API provided to make a server or a client, but you would need to reinvent the wheel everytime… “Here goes the auth system, now the content management system, now the persistence system, now this, now that…”. People worked around and became WAY more productive using the same basic technologies, by designing frameworks. Now your task within the framework is to develop the actual logic, not the system running your logic. You could think that Blender is already a framework, but IMHO its a rather crappy one right now. Its more in a state of Apache/PHP/MySQL and not much more. My contribution on this problem is that I’m tinkering with a framework of my own (named “bgez”) that would allow gamedevs to have a full-Python project right next to their main .blend where they would organize as they wish the logic, providing a vast array of managers so that you would describe your logic, rather than trying to make something from the ground up. I will publish on the forums something once I will have some demos to better illustrate the gain bought by using it.
Sorry for the lot of text, but its something rather important do discuss about as the BGE is meant to die soon if it continues to be unproductive. If something is so good nobody has to use something else, then why wouldn’t they use it ? I think the BGE dying is because it is not so efficient and thus is meant to die if it stays as is. A better renderer is really good. But until the “guts” are fixed, I think fixing the appearence won’t be effective enough to keep it alive (although its a really awesome project).
Thank you for any of your inputs too !
Be sure to be accurate about your point of view, so that we can discuss and work from it !