Challenge to BGE team

I recorded Doom 3 BFG Edition performance tests, and I am wondering if BGE devs (or people who use BGE) could create similar test case to measure performance of BGE engine.

The terrain in the following videos is 120,000 x 120,000 units, it contains 1 diffuse and 1 normal map textures. Additive sky layer with 1 alpha mask, simple skybox. First video contains 41 monsters, ~900 polygons for the less detailed ones (~8 enemies) and polycount goes up (the 2 tall bosses maybe of 3500 polygons each, but no more than 5000). Monsters have 1 diffuse, 1 normal (sometimes combined with an extra height map for more details on run time), 1 specular textures.
Second video contains 30 monsters of specific type to exclude any dynamic lights (Doom 3 BFG engine still has forward rendering pipeline).

All textures are compressed with YCoCgDXT5 and decompressed on run time using GPU.

The game was running in 1280 x 720, full screen, no AA, v-sync off, anisotropic filtering 8x.

Video 1: http://www.youtube.com/watch?v=l_ir-tK-8Jc

Video 2: http://www.youtube.com/watch?v=X1oM1m8ZO44

I filmed it with my digital still camera, thus 640x480 resolution and ugly quality. The idea behind that is to eliminate CPU strain caused by Fraps and provide natural results of the test.

EDIT: Tested physics on BFG engine: http://www.youtube.com/watch?v=Cmz7Q3zzp9A It performs badly with the test case. I am not sure how other physics engine would perform with similar test case.

And why you are doing this?

Doom3 (id tech 4) wasn’t normal forward rendering.
http://fabiensanglard.net/doom3/index.php

So you can’t compare rendering.

Also D3 uses programmable pipeline with ARB Shader, BFG with GLSL for rendering where BGE uses immediate mode with GLSL possible ( but you have to get the shader for everything somewhere or code them yourself).
BFG: VBO vs. VAs & Display Lists at BGE
BFG: multi render passes for lighting, Unified Lighting and Shadows; BGE: one render for game, some passes for post-processing
BFG: multi-threaded, BGE: single-thread

So…

You can’t compare a Porsche(BFG → id tech 4 + id tech 5) with a bike(BGE)
:wink:

So there is no real challenge.
id tec 4&5 wins.
BGE doesn’t have a chance. Not even with the open changes from harmony, candy and co.

That’s what you call forward rendering - one pass for each light per surface. So if I have 5 lights lighting 1 surface, I’d have to render that surface 5 times (which is why Mr. Sanglard modified engine to illustrate how it works). With deferred pipeline, that’s not the case (UE3/UDK/CE3 use deferred lighting/shading pipeline, which allows for a lot of dynamic lights).

I didn’t do these tests specifically to challenge BGE. I did it to test performance with large number on enemies for my game Steel Storm 2. We are using idTech 4 currently, and while there are several improvements we have been making, Doom 3 BFG engine is simply superior to idTech 4. So knowing performance capabilities was the goal.

However, I still recall talks where I was pointing out that maybe it would make sense to use either idTech 4 or BFG engine and make it ultimately compatible with Blender. That would bring one of the most robust GPL engines with the most outstanding GPL 3D art suite together. Needless to say I’ve been told BGE is a good and BGE this and BGE that. So I thought to myself why not to challenge BGE fans with a real life test. This way maybe, just maybe, time and resources won’t be wasted and Blender community could get Porsche to replace a bike, as you put it.

So answering 2 questions at once :stuck_out_tongue:

I think you’re mistaken on that. BGE has built-in glsl materials. That’s how you can get normal maps, specular maps, shader nodes, per-pixel lighting, and other effects without touching a single line of code.

BFG: multi render passes for lighting, Unified Lighting and Shadows; BGE: one render for game, some passes for post-processing

I’d call that one a tie between the two engines. While doing one pass per light allows for more flexible lighting conditions (you can add lights mid-game that weren’t there at build time), doing all the lights in one pass is faster and more efficient.

Not trying to be a “BGE apologist” or whatever, id tec is certainly better as far as graphics are concerned (at least v5. Doom 3 is a pretty old game, so I don’t know about v4).

Quake 3 is powered by idTech 3, Doom 3 is powered by idTech 4, Rage - by idTech 5, Doom 3 BFG edition - by a mix of idTech 4 and idTech 5 (maybe call it idTech 4.5 ? :stuck_out_tongue: )

I thought BGE has GLSL shaders. idTech 4 has ARB shaders (OpenGL assembly), but I am not sure how idTech 4 came to this topic when engine I have been testing is not idTech 4 (especially rendering pipe is definitely not idTech 4).

What BGE team? :stuck_out_tongue:

Damn, you both are right.

@motorsep:
Yeah. I just took the passes as render-passes where it would render to some buffer and then put those buffers together. But that is nonsense and stupid from me. Just do a for-all-lights-loop in the shader and add those together at that pixel place. Saves buffers and does the same.
I thought that the old immediate mode would have normally done that and so ID just did something awesome new ^^

@laser blaster:
Right.
I found the code where they build the shader. It’s in the blender subfolder. Not within the gameengine source.
You always find something for BGE somewhere outside the gameengine source folder. Annoying. (From a standpoint where you just wanna concentrate on BGE) Grrh
But why don’t I at least get the shader code via getVertex/FragmentProg? Grrh
(And why is the material node in blender-game mode hidden in current/svn blender versions? )

Normally lights should be also exchangeable within the BGE. Especially with the GLSL Shader. You have that uniform array of lights. You feed it with lights. And it is possible in OpenGL to exchange the lights. So it should also be possible with BGE. But somehow it isn’t. Strange.

@motorsep:
Sometimes I also thought about replacing BGE with something better. I had a look at id tech 4 and BGE (and some other engines).
But you can’t simply exchange one for the other. The data and data handling is different. You would need to write converters to get the blend data including mesh, material, glsl, pyhsics, particle, animation, scripts, … in md5 & map & cm & mat & …
It’s easier to clean-up BGE and use the knowledge of other engines to make it better.

I never suggested to replace BGE. It will be impossible. However, improving Doom 3 BFG and creating almost seamless pipeline for Blender to import/export assets from/to Doom 3 BFG is very doable. Even making materials using Blender’s nodes would be awesome.

Sure, learning from idTech engines is what Carmack advocated, however, it’s a Sisyphus work to get BGE on par with Doom 3 BFG. No matter how one looks at it, it’s not going to happen, or when it happens, it will be obsolete and irrelevant. So maybe it makes sense to swallow programmer’s ego and get 2 standalone products working together seamlessly ?

It’s wiser to port BFG to iOS / Android and take advantage of its state of art threading to utilize current / next gen multi-core chips, than get single threaded Blender Player to iOS/Android. Not to mention free Unity does already better job in that field (although lacking in optimization and visuals) than Blender Player.

The conclusive statement here is one of the most insightful I’ve seen on the topic, for a while.

Isn’t the asset pipeline Blender → id tech relatively good?
You create your assets, modeling, putting materials on them, baking, getting out id tech ready model files and some texture maps.
Just like people are doing with other engines like Unity3D.
For most other stuff id tech brings its own editors with it.

Good joke :smiley:

And joining devs:
It would be nice.
But look at all those open source game engines: http://devmaster.net/engines/
If most of them would work together something amazing would happen. But this will not happen.
People like to learn and build stuff on their own. So people will create new engines. Also in the future.

Just a rhetorical question:
Why aren’t the last few remaining id tech users switching over to BGE and improve the BGE like they improve id tech?
I don’t see much projects or users using id tech. GRIMM is using id tech4, same for The Dark Mod. And you are the only I see working with id tech 4.5. And all those are first person shooter type games.
Right. There are also some projects around the engine:
http://www.doom3world.org/phpbb2/viewtopic.php?t=26065
http://www.doom3world.org/phpbb2/viewtopic.php?t=25989
http://www.doom3world.org/phpbb2/viewtopic.php?t=26009

I even see people there arguing about id tech 4 / 4.5 pains, like lighting, cloth, multithreading, physics.

But there are people that like id tech, and those who like BGE and both won’t switch just because.

Why do people prefer Unity3D over UDK & Cry?
Because it is much easier to use.

BGE is also easier then id tech.
So if people would come and improve BGE it would easily beat Unity3D.
Improving id tech and the Blender ←→ id tech pipeline just improves workflow between them, but won’t make it as easy as Unity3D or BGE.

Blender & BGE is already on Android. Kind of. ^^

@Urfoex : may be we have a seperate website for Blender Game Engine or a subdomain Blender Game Engine and proper uptodate documentation and all the tutorial links and also tech demos ! Many people would want to use Blender Game Engine and will also update it !

Nope, not at all. Sure I can export ASE and md5, however, LWO is preferable, and md5 exporter is a mess and has to be re-written (for organizational and optimization purposes). ASE/LWO/md5 import is also desirable (I think current LWO import is incomplete, but I might be wrong). Also export to Doom 3 .map format is highly desirable. Batch export of all formats. Entities export. There are a few things could be done for Blender to improve assets creation pipeline.

There are only few editors that are good. The rest is crap. Blender can be used for a lot of things for idTech 4 / 4.5 / 5

BFG isn’t moddable out of the box. So as modding engine for Doom 3 at its current state it’s not usable. However, for a game from scratch it works well. Still needs tweaks here and there, but generally it’s ready to be put to work. As modders don’t care for scratch games, they don’t see use of BFG engine.

You can make any game using BFG. The thing is that tools are poor, documentation is scarce, and community isn’t as friendly as, say, Quake community. A lot of Doom 3 mods are closed source and authors refuse to GPL them, even though the engine had been GPL’ed (and not, they are not violating GPL).

Maybe because they are not understanding the tech or fanboys of other engine? There is no cloth in idTech 4 / 4.5, threading is state of art, physics are not bad (not as good as Bullet, but physics does the job well in idTech 4 / 4.5 )

No, that’s not it. UDK is easier than Unity as you can make a game without single line of code with UDK. Unity is free, so people can make shit games and make their allowance money and pay no royalties. Plus Unity can release to all platforms. I can get into more details why Unity isn’t as good as it sounds (nor BGE, nor many other engines) if you are interested.

Kind of, and it’s still single threaded engine, which doesn’t take advantage over platform’s features.


join this group !

Why would people want to use BGE? Can you summarize it objectively using bullet point please?

to make live presentations or even indie developers can use it to develop games !

I think we should fix it,

it’s free

amazing, and just needs love,
this spear is only as sharp as you hone it,

and the “spear caster” applies his own strength and finesse,

the “throw” is your finished product,

help make a better “Spear base model” :slight_smile:

now Learn C and thread the BGE, would we need to replace python with something more thread-able?

So some things I can think of

move “physics” to separate thread, all other threads are drawn using this anyway?

figure out a “Tree” for deciding order of importance of physics calculations , anything that is moving and near another object should get priority, the closer the gap or the actual “over-laping” models should get more cpu ticks

finally, moving as many “hard coded” properties into the “properties” as callable items,
like changing the property “Mass” actually changes the mass, without a python call,

@@BluePrintRandom:
From business perspective and even production perspective you already lost serious indie devs :slight_smile:

@@isyedcg:
That’s not what I was asking :slight_smile:

@motorsep : do you want BGE to beat Cryengine 3,UDK 4 ,Unity 4
Join this grouphttps://www.facebook.com/groups/blendergameengine/ and support us !

I don’t really care what you think motor, :smiley:
I am making a production quality game now, for free, that will destroy your concept of “business”

Business gets in the way of everything, and can in fact go die in a fire :slight_smile:

Art was never helped by business,

if you want a better tool ,

put up

  1. Time
    and/or
  2. money
    and/or
  3. Documentation

Repeat