Game Engine Components. Request for ideas (and or submissions)

Hello BlenderArtists!
I’ve just finished the first version of my networking in Blender through a components plugin.
(http://graphicall.org/83) - patched blender
The only problem is that it is incredibly addictive (and cool!) :slight_smile:
So, i thought to myself, there are many things that the BGE needs (inferred lighting…AO(realtime) and collision calculations…)
But these have to be implemented into trunk, and delve into the depths of the python api that i don’t have any knowledge of.
However, what we also need are uniform, simple to use (yet also powerful) features to be ready implemented into the BGE.
Now, one could set about with a set of scripts… or they could use the component system by Moguri!
I was under the impression that there are a number of things that everyday BGE users need, and so present this questiom:

  • What would you like to have as a component in BGE?

For example, with my component, you type: network.Server for a server and fill in the options(SIMPLE).
I wondered if there could be a similar system for:
Mouselook,
Rag-doll physics (would need to have certain features like bone names pre set)
Filters (e.g Motion blur, but i don’t know if these can be set in component system.

Does anyone have any suggestions &or contributions???
:slight_smile: thanks agoose77

I’m not sure if the component system would work, but if it can connect a filter actuator to a python controller, then it should work fine. I’ve got a library of Python functions that I should release… You could implement some of them into components:

Clamp (clamps values between a minimum and maximum value)
Max (sets the value to the maximum of two properties / values)
Min (same as Max, but the minimum)

etc.

Dam… I need to speed up the dev of my python component framework… So all can get these goodies without needing a special build…

Hi, it’s a great initiative - thanks for that !
In my experience it is generally very hard to make generic components that

  1. is easy to understand and use
  2. does exactly what they are expected to do
  3. do not interfere with other components in a negative way.

Even a “simple” component like “rotate” can be interpreted in many ways, and even if it starts out simple it can grow into very nasty code if it tries to implement all functionality in one component.

My suggestion is that you focus the attention on designing the component system in a way so that components can be combined. It is hard to design components that are truly orthogonal (does not interfere with each other in any way), so this need to be considered.

Unity3D has some generic components that could be useful in BGE as well, like rigidbody, different character controllers, audio-controllers, camera filters &c. (everything is a component in Unity, even the “camera”, so the list is long).

In Unity3D components can be dynamically added and removed at runtime (from other component scripts), this is very important and I hope this will also be available in BGE,
it is important that the component knows what it is supposed to do when it is instantiated for the first time (Awake() in Unity), at startup. I’m not that familiar with BGE so this might exist already, but a timer-component that calls a component function N timer per second (Unity’s Update()) would be very handy.

Cheers !
/Thomas

Thanks for your commments guys!
LAH, i think what you’re referring to is your own custom system, am i right?
thpetsen, all of your concerns are correct, however what i am aiming for at the moment does not require these features.
Secondly, i think the only way the components can interfere is if they use the same Global Variables, and or set rotation (more than one would confuse the GE)
but these problems are due to incompatibility, and therefore there isn’t really a problem (state on the script what it cannot work with). Finally, this is useful for me, as when im creating a set up from scratch, i can type in my component, and therefore combine a multitude of components rather than manually coding it myself (again).
I’ve already used the thridperson movement!

Sort of… It’s for using components in a ‘stock’ blenderplayer. And expriment with the concept.

Adding, configure and removing components at runtime is one, custom events that can be generated by other components and a possibility to chose what event that trigger a given components update() is another.

It is true that components can step on etch-others toes… Two components that want to set the force affecting a object for instance… What we want then is to sum the forces but out of the box BGE will use the one that happens to be executed last. But for now this is about finding problem - then, when a blurry big picture appears, try to find solutions.