Proposals to upgrade the BGE

Hi! When I learned about Blender, and I saw it I was amazed at just 30MB compared to other 3D applications by several gigabytes… :evilgrin:
I started to work with Blender, just because of game engine, and expect that it will be light, but quickly realized that it is not so - turned out to be terribly clumsy and requesting unduly many system resources…

I do not know whether the developers of Blender read here, but:

  1. What process and why does the CPU usage always 100%, and even the stage is empty? Can it be eliminated?

  2. Why we have no choice for fps? I believe that over 24 fps is unnecessary, and the processor could deal with another action, instead of rendering images, which the human eye can not see…

  3. In the movies there is one rule: “Everything outside of the lens - not exist”
    Why Blender is not so???

What has in mind, here:

http://s3.postimage.org/RWWkJ.jpg

The camera does not see the ball and light, but renders them unnecessary… The result is:

http://s2.postimage.org/qAF99.jpg
(View from the camera)

What do we do in the current situation, we must have several thousand polygon and lights - the game would not have worked on any computer …

So something to which no direct line of sight, it is unnecessary to render.

  1. Why only spot lamp makes shadow? I want the light broadcast from one point to light and make a shadow in all directions…

  2. Why are there so many ways…
    …of texturing for example…
    If I make game on BMM, and then decide to use GLSL - I have to do the entire game to a new… If I pressed F12, the rendering image, it will be quite different in appearance…

This confuses beginners (like me)

If I could fix this myself, but I can not. For this I ask, is it possible for someone to make update for Blender 2.49b, for at least 1 and 3?

I and many people would be glad of such improvements. :wink:

(Excuse me for a spell, but this is not my language and use google translate.)

There is a way to set the fps -

I think the word your looking for is culling, and there are two methods to do this currently implemented.
Some limited info about it here - http://blenderartists.org/forum/showthread.php?t=152858

Thats all I can say for now, hope that helps

Have you tried 2.53? It is a beta version of blender, but 2.5 is bringing a lot of changes to the Game Engine. Better performance running a game within blender is one of those features.

Although I don’t know why it was using so much of your processor. What kind of specs does your computer have?

In my experience, the CPU utilization on windows is always 100%, regardless of specs. I think it might have something to do with how OpenGL applications are (mis)managed on windows.

On Linux, CPU usage is directly proportional to scene size, and in-game logic that operates on scene elements -> as it should be.

You seem to be right, in 2.49 the bge utilizes an entire core on my system as well. Never really looked into that.

However, things look different for 2.5’s BGE. I ran the default scene and, while it started high (not 100% though) it quickly dropped down to around 20% of the core it was using.

It is possible that there is still some issue, but it certainly is not as severe in 2.5

The BGE performs the usual render optimization incl. frustum culling, zbuffer etc…

In the situation above the sphere is in the camera frustum and should be rendered. Because another polygon is blocking the view you can’t see it. There is no automatic way to exclude them.
You can manually add an occluder between the boxes. If the occluder hides the sphere 100% it will not be rendered. This is quite handy in situations as you described.

This are mostly “historical” reasons. Please keep in mind the BGE was always separate from Blender. Blender with the raytracing engines supports a lot more material options then a realtime renderer ever could do. On the other side there are some material optimisations/flags/settings of the BGE that are totaly unnecessary for the raytracing engines.

Therefore there are so many options on many panels. In the last years there where additional options added like Multitexture mode, GLSL mode. Not all of them are supported by all PCs (I do not have GLSL support).

The developer tried to integrate the BGE options into the Blender materials, but I can imagine this is no that easy. It is like squeezing a triangle into an square.

You should have a look at 2.5x. With the Game Engine Render Mode the developer tried to encapsulate Game Engine options.

You got the answer for this already. But your believe is not totally true. 24fps is a minimum you should provide.

It is not enough for fast changing animation that games provide. After a while you would notice that this is not that smooth. Some people get headache or other problems. The most games try to keep 60fps. The fact is games look much smoother with 60fps.

This is a reason why computer monitors get higher refresh rates then plain TV.

If I sit some hours in front of a monitor (especially if I have a cold) I can notify 60 with flickering. Even worse on beamers. With some fast eye movement I can see the RGB images separated (depends on the beamer).

Great, thanks!

Yes - if fps is a maximum (60) - CPU usage is 100% if the video card is not doing well and drop fps, CPU usage is less.

Can more detail to say about this?

It’s good, I wanted to say that if I make a game in Multitexture mode, and switch to GLSL everything will go wrong and textures are not correct.

This is true, I notice flicker below 85Hz on my monitor.
Now, having learned how to set fps, I see that 24 is not good. But the 60 also.
I tried 85 - seems ideal.

You can learn more about occlusion culling here :
Blender Wiki : 2.49 release/ Optimization

What you will find :
http://wiki.blender.org/uploads/b/bb/Dev-GameEngine-occlusion-button.png

http://wiki.blender.org/uploads/thumb/c/cb/Dev-GameEngine-occlusion-resolution.png/640px-Dev-GameEngine-occlusion-resolution.png

http://wiki.blender.org/uploads/b/b0/Dev-GameEngine-occlusion-brick.png

60fps is a good balance between resource usage and looking good :D.

and to not rendering what you cannot see use the occluders…

edit: heh i have occluder on my nose :smiley: i cant see the previous reply :smiley:

Thanks, it works! But only for polygons, not for the lights. And adding more lights, again situation worse.

Although occlusion culling will perform well in this case, you will get better performance by implementing a specific logic that hides/unhides the objects; for instance making the objects visible only when the camera enters the house.
Can be done so not only polygons, and all objects (lamps) to disappear when the camera is not looking at them and when something blocking the view to them?

t’s good, I wanted to say that if I make a game in Multitexture mode, and switch to GLSL everything will go wrong and textures are not correct.
The idea is to use both methods. Some times when building a scene, I want to know how the model will look like after I apply a material (in general. planets) so I go to Face texture mode and apply the texture directly to the UV,/uploads/default/original/3X/8/8/88177ff9dd8c65da617215310d7c9a9264f8cd23.jpgstc=1&d=1283178414 then after I’m done editing (displacement), I switch to GLSL to add a proper material.

With a material, the textures will be correct both on GLSL and on Multitexture.
I haven’t started working with 2.5x, but I intend to as soon as I have my scripts working on it… the tests I ran show a 60% average improvement as far as rendering goes, I still have to see logics, physics, memory, etc

Attachments