Hello BGE users, I’m very new to the engine and I have a question.
Having used other game engines before, I know that there are certain features of Blender BGE doesn’t support because they aren’t realtime effects (can’t be rendered in realtime).
But then I see there are features which could be done in realtime, but BGE doesn’t support, like point, line, geometry and sprite particles. I know they can be done in realtime because I’ve used them in other realtime engines before.
So I’m assuming there are also features which BGE doesn’t support because they have not been “ported” to it from Blender’s internal rendering engine.
Is there a list of what Blender feature is and is not supported by BGE?
Hello,
and welcome to the wonderful world of Blender Game Engine.
In my opinion the main interest of the Blender Game Engine is to allow people who don’t know how to program ( like me), to make games/interactive content!
“Is there a list of what Blender feature is and is not supported by BGE?” I don’t know!
I know they can be done in realtime because I’ve used them in other realtime engines before.
There are many BGE games that use particles and some of the other stuff you refer to. But currently you need to make your own particle system (and it’s not that different from using Blender particles either) or use an addon for that.
Real time particles can probably never use the same code as prerendered particles because of all the optimization real time needs. Particles need to be re-thought and specially created for game engines and that is what you are seeing in every other game engine as well. Why? Because particles (as used in prerendering) quickly build up unfeasible polycount and texture filtering task for any hardware.
Rather than simply listing what works and what not you need to reset your approach in lots of things. For example meshes work just the same in BGE as in Blender, but you still need to create your BGE meshes with things like polycount in mind. You need to rethink animations because now you are moving the object as well as playing the running animation. You need to rethink materials again because of the real time approach. This is not because of how limited Blender is but because interactive real time content is very different by nature from prerendered content. You’ll face the same problematic also on other game engines, but no two tools are still more closely related and intertwined as Blender and BGE are.
Get to know the BGE little by little by following simple tutorials. Being patient will pay off
Blender is a sort of “DIY” type of game engine, which makes it so brilliant. Unlike most other engines, it isn’t designed for a specific genre of game (like how CryEngine 3 basically only allows you to make Crysis…). You can do practically anything with it, and it’s open source, so if there are any missing features, with the right skill and time, you can create them yourself, or find them online where someone else has created them already.
So in reality, there are no features it doesn’t support, only those which haven’t been created for it yet.
but some obj default im my opinion should/can be .
a simple sphere lowpoly to call to create particle for example .
without be care if it exist, since it exist. (maybe with a special name “FIX_SPHERE” hidden somewhere )
and at this point is easy also write some function premade , since it NO NEED of other.
at moment the only thing like so is drawLine , but do just LINE (that is little, to make a things big need a mountain of lines and half CPU)
I didn’t say they do. I get your point. But seeing how the same amount of point and line particles render just fine in realtime in the 3d view, as well as other game engines, I’m sure this could be implemented in the BGE, it’s not impossible, just not ported yet.
That’s a good idea.
Statements like this get me a bit nervous. I’ve used to think like this, and seen many people using open source tools say this.
The truth is in practice this doesn’t help much.
If a library doesn’t support something, it doesn’t support something. There’s no guarantee it will at some point and you need it now, and the fact that it can be added still doesn’t change the fact that it isn’t supported.
Sure with enough time and skills you can add it yourself. Most of the time you can’t, you either don’t have the time or knowledge. That’s why you’re using an engine instead of writing your own to begin with.
Sure with enough time and skills you can add it yourself. Most of the time you can’t, you either don’t have the time or knowledge. That’s why you’re using an engine instead of writing your own to begin with.
Any engine has it’s limitations. Not all game projects need 3rd person or FPS camera, not all need level streaming or particles, some don’t even need GLSL. No engine can support everything out of the box and bashing engines for missing x or y out of the box is pointless. If you compare to writing your own engine, one could never get as far as BGE has come considering the SCA and visual programming system plus modeling/animation suite integration.
Making your own particle emitter that is just an empty that has an addObject() script is trivial once you gain a bit experience with BGE. I couldn’t even imagine how Blender particles could be converted to something interactive BGE needs like particles following player or some other character or change the emission rate/type based on game variables. It would be nightmare trying to make it versatile enough for even most people who’d want it. The only usable part is pretty much about “add this object” because everything else varies on per-game basis.
And I think there are several templates/addons for BGE particles or at least I’ve heard people refer to them (never needed it myself).
bashing engines for missing x or y out of the box is pointless.
I got better things to do than complain about a 3d engine. Reread my post and don’t argue with a straw man.
If you compare to writing your own engine, one could never get as far as BGE has come considering the SCA and visual programming system plus modeling/animation suite integration.
You didn’t get the point. I’m saying writing a part of a game engine yourself is a big deal, as is writing a whole game engine. Big enough to make you choose another engine.
And you’re really oversimplifying the difficulty and time needed to write a decent particle system.
You’re saying it will be hard to write your own game engine to be as good as BGE, but somehow just the particle system part of the engine isn’t a big deal.
Well, it’s hard to explain why there is no out-of-the-box solution in BGE to someone who doesn’t understand the system, the solution or even the problem itself.
Look, here’s a particle system:
#put your particle in inactive layer and name it "particle"
#put an empty in your scene and call it "emitter"
#attach this text to python controller in any object in active scene and fire it when you want to create a particle
scene = bge.logic.getCurrentScene
scene.addObject("particle", "emitter", 60)
Anything you want to make in addition to that you will have to make by scripting yourself according to your game needs. The particle probably needs to move, scale, rotate according to some set of game objects and variables. You can’t make that “a rule set” that you could put into options like checkboxes and drop-menus so that people could really build their particle system with enough customization options. You need to be able to describe it freely.
And even in python simple particle motion is simple:
particle.applyMovement([1,0,0], True)
=> Makes the particle move along local x axis.
That is what game development is about, not taking some ready made fire effect and thinking “that will do because I don’t want to look under the hood”.
I’ve got half dozen game projects and I’ve written all particle systems myself, first ones with very poor python skills, half of them even before I understood this is what they call “a particle system”. I haven’t even used Blender particles to make anything until recently I used it to place couple of rocks randomly. The point is, making core particle system is not hard and like I said many times now you can find good examples of particle systems in these forums. But likely none of them are exactly what you need because exactly what you need depends on your game type.
Regardless on if you use something that is already available in BGE/ any engine or copied from other users the hardest thing about particles is configuring the particles to your needs, not the technical solution of adding particles that above takes 2 lines of code.
Wait for someone to program them. Probably won’t happen unless it’s really important and generally useful like LOD.
Kindly ask someone to program them for you; possibly put out a code bounty.
Program them yourself. Plenty of resources on the internet these days and there is the great BGE community
Change to another FOSS game engine which might have more batteries such as Urho3D, GamePlay, Irrlicht, Panda3D (uses Python also), etc. Being of the FOSS nature, you’ll probably run into the same issue here with missing features. And only the BGE does logic bricks.
Change to a proprietary ($) game engine with more batteries included such as Unity, UDK, CryEngine, etc.
Generally, if the person lacks time and/or knowledge (programming), #5 is really the only solution. Although #5 is probably worth it if:
You have a large team and lots of resources.
You plan on selling your game and you feel confident about it being successful.
However, currently there is no avoiding programming if you want to create a game unless you are specializing in a non-programming aspect of the game like creating art etc. Even with all batteries included, a basic understanding of programming should be a minimum and is a good investment. The nice thing about programming compared to learning tools, is the skills transfer over since programming is fundamental to how the average computer works.
And even if tools are provided, you still need to learn how to use the tools effectively. This means, the bottom line is you need motivation and determination to finish the game (as everything in life right?).
The other nice thing about the BGE is its use of Python. Now, a lot of game engines use LUA or implement their own like Unity/Boo. IMHO, LUA is like a niche-version of Python as LUA started out as an embeddable configuration language. It has been growing over the years and it’s heading in the direction of Python which makes it seem redundant. It works well in the context of larger commercialized engines as they have the resources to develop the libraries to support LUA or their own language, and thus they can have more control over its features. In the case of open-source engines, resources are limited and Python already has a well-equipped standard library so it reduces the amount of work (DRY/KISS principles).
Python’s focus is on readability; you might say the human element of productivity is the limiting factor these days. There are the logic bricks but personally I prefer programming everything in Python but at least we have a nice expressive language. IMHO, the GPL licensing concerns have mostly been proven to be FUD.
Overall, the BGE strikes a nice balance in providing all the power at your fingertips given you have the willpower, for a FOSS game engine anyhow.
Look, I’ve used many other game engines before, Panda3D has a nice particle system, although hard to use. I know what is and is not possible with realtime particles, I’ve seen them, created particle effects myself.
So I could say the same to you: looks like you don’t understand how realtime particle systems work if you’re gonna come here and give me an explanation like that. It’s just not true. You don’t seem to understand the difference between a particle system (a factory, renderer and emitter) and setting different parameters of them by the user to achieve different effects from fire to rain.
Look, here’s a particle system:
That’s not a particle system. You’ve just created an empty object which can hold or be parent of the particles.
Anything you want to make in addition to that you will have to make by scripting yourself according to your game needs. The particle probably needs to move, scale, rotate according to some set of game objects and variables. You can’t make that “a rule set” that you could put into options like checkboxes and drop-menus so that people could really build their particle system with enough customization options. You need to be able to describe it freely.
That’s just not true. Most game engines have a particle editor. Unity has one, Panda3D has one. They have a GUI for every parameter you could alternatively set by code if you wished so.
not the technical solution of adding particles that above takes 2 lines of code.
Again, that is not a particle system. That’s just an empty object.
Look, I’ve used many game engines before and I think BGE is a great tool, especially for artists with no programming skills. But I see no reason to defend it when someone mentions it has a missing feature and looks like you have no idea what you’re talking about.
I’m very comfortable with the Python programming language.
I’ll agree that for serious projects you need to write some code.
However, creating particle effects is not one of those cases when you need coding. Unity, Panda3D are the only engines I’ve used enough so far to tell for sure. They have a particle editor. Each dumps a particle configuration file. You can either load that, or set all the parameters in the file manually by code. There’s nothing for the particle effect you can’t do with those editors but can do by coding.
Hi.
Here you can find a pre-built particle system:
It s called easyEmit.
It is nothing different then an empty added an alphatexture(fire,smoke,stars,etc…),giving it a direction and a rotation.
Ready is your particle system.
This addon proves my points. A simple particle system that allows to set everything by GUI, save and load presets. Exactly how it’s done in other engines.
Also shows how much code you need to write yourself.Lacks many features compared to Panda3D and Unity, like point, sparkle, line and geometry particles, forces, color blending, etc. but is still over 1000 lines of code.
bigredshoes raises an interesting point (one that should be fairly obvious to experienced BGE users) that the BGE is missing built-in particle system handling. This means:
The particle systems you create in Python aren’t as easy to use as they could be (with a GUI to alter particle properties, etc).
The particle systems you create in Python don’t run as quickly as built-in particle systems.
I think what you’re looking at is basically two options:
Add the feature that you’d like to the BGE or another open-source engine.
Go with a paid or open-source engine that has the feature you want.
The BGE currently doesn’t have particle systems built in. It’s unfortunate, because it’s something that pretty much all games use, so it’d be nice to have it built-in and easy to work with. Fortunately, it’s not impossible to make such a particle system yourself, though it won’t be as flexible or easy to use, for sure.
However, it’s worth noting that there’s no guarantee that any engine will ever support any given feature, so there’s no reason to get nervous that an open-source program’s philosophy, if you will, is “if it’s not there, add it”. If it’s not there in a paid and closed-source engine, you’re kind of stuck.
Most game engines have a particle system built in, it makes sense because it’s something almost all games use and usually customizable enough to make any effect you’d need, regardless of the type of your game.
Not really true. I prefer to use open source tools when possible, but for other reasons.
If you notice a bug or missing feature in a commercial program or a programming library, you contact the developers and let them know of the bug or feature suggestion. They might fix or add it, and they might not, same with open source projects. Sure, with the latter everyone can take that task, but you’re still not “stuck” in this case with closed source projects.
As for particles, if there is tighter integration between Blender and the BGE, one day we may just get to use the particles in Blender:
Blender Game Engine
With work being done on threaded drawing and updates, viewport (compositing) effects, unified physics, node based animation, and everything that’s currently real-time in Blender already, I also propose to refocus the current game engine to re-use much more of this work.
Or more radically worded: I propose to make the GE to become a real part of Blender code – to make it not separated anymore. This would make it more supported, more stable and (I’m sure) much more fun to work on as well.
Instead of calling it the “GE” we would just put Blender in “Interaction mode”. Topics to think of:
Integrate the concept of “Logic” in the animation system itself. Rule or behavior based animation is a great step forward for animation as well (like massive anims, or for extras).
Support of all Blender physics.
Optimizing speed for interactive playback will then also benefit regular 3d editing (and vice versa)
Singular Python API for logic scripting
Ensure good I/O integration with external game engines, similar to render engines.
And yes, there was already an epic thread on this lol
You’ve used particle systems before. I’ve created them.
So I could say the same to you: looks like you don’t understand how realtime particle systems work if you’re gonna come here and give me an explanation like that. It’s just not true. You don’t seem to understand the difference between a particle system (a factory, renderer and emitter) and setting different parameters of them by the user to achieve different effects from fire to rain.
Yeah, clearly I don’t understand particle systems because I don’t refer to some GUI components of Panda3D particle system. Words like “particle, factory, emitter, renderer” are not really universal standards of particle systems. They are abstractions for various parts of the script that essentially creates and moves textured 2D planes. FYI in Blender for example there is no division you’re describing. Granted, “particle” and “emitter” are still pretty understandable concepts in particle system thus why I’ve used them in my own particle setups / scripts.
All you have ever seen and used are particle systems that come ready coded and polished with GUI for the ignorant end user who can never bother with technicality. Using them requires no expertise and you’re limited to what the particle system creator has enabled you to do. If you want to be proud of that go ahead but don’t take it on me for pointing it out when you go ad hominem.
Again, one of us can merely configure a prebuilt particle system with GUI, the other can make whatever particles he wants on any engine / graphics frontend by checking the syntax of programming language and basic API of the engine in question.
That’s not a particle system. You’ve just created an empty object which can hold or be parent of the particles.
Yes it is. It’s not Panda3D GUI particle system polished for the ignorant end user ™ but it spawns particles. Frankly you don’t even seem know what the two lines of code do. You got everything wrong in your interpretation. No, I did not create an empty. No, it’s not for holding or parenting the particles.
Most game engines have a particle editor.
No No, they don’t. Most engines only have what’s been programmed into them for the flagship title. If you want more it’s going to mean C++ and PhotoShop. Even the few ones that do such as Source that is especially aimed at modding is very limited in custom particles. But then again most people just want builtin rain or fire and never even bother with it.
Unity has one, Panda3D has one. They have a GUI for every parameter you could alternatively set by code if you wished so.
Oh, so this is where you base your claims on. Comparing BGE to Unity, bravo! Seriously go and use Unity if you need more of that prebuilt polished GUI for the ignorant end user ™ approach because it’s right to the point.
Again, that is not a particle system. That’s just an empty object.
Really, go learn python / BGE / graphics programming theory before trying to understand what it is. You’ve got some nerve coming here as total noob telling others what their scripts do.
Look, I’ve used many game engines before
Since only use GUI/WYSIWYG approaches that makes you an expert on nothing. You’re overconfident without any basis and that attitude will get you nowhere. To make AAA games on BGE does take a lot of expertise and understanding and I think you’re off into nothing but world of disappointment when you demand out-of-the-box for this and that and come raging on forums.