BGE devs might find this relevant and useful:
nice find! thanks for sharing…
With the information on directx and opengl fond in that pdf in mind,
(DX9 ≈ OpenGL 2Shaders
DX10 ≈ OpenGL 3
Streamlined API
Geometry Shaders
DX11 ≈ OpenGL 4
Tessellation and Compute)
And over half of users having dx10/gl3 support, why is the bge still using opengl 1?
I believe that the only way that Blender is ever going to advance as a game engine is if we start having support for these new features that large percentages of our user base can run. (As a side note, as there are a few here that have directx11 support and opengl is backwards-compatible, I don’t see a reason to to upgrade the bge to opengl 4)
Origin and Steam have 30 and 50 million active accounts respectively http://www.gamasutra.com/view/news/180646/Origin_continues_to_creep_up_on_Steam_with_30M_registered_users.php
Steam stats show that 90%+ of all its users have DX10 class GPUs, which means they do have OpenGL 3.2 support.
Someone in another thread/poll said that most of the gamers have no GLSL support (so that’s the reason BGE lags behind on OpenGL implementations).
Now the question is, who do you believe, BGE-zealots or leading companies in the business?
It isn’t. You can’t really put OpenGL and DirectX versions side-by-side, it’s more complicated. The way OpenGL progresses is that extensions get developed and implemented in drivers, which can be used regardless of OpenGL version (but may or may not be actually available on a given device).
Eventually some of these extensions may become part of the core specification in a newer OpenGL release. When you use GLSL shaders in the BGE, you are using a feature that became core in OpenGL 2.1 (but where available before that in the form of extensions), but you might also be using particular GLSL features that became core only in OpenGL 3 (or later), as well.
EDIT:
Someone in the other thread mentioned that a lot of people still have devices without GLSL support. This is the very unfortunate truth, because some of the crappier Intel chipsets (such as the dreaded GMA 950) have been put into a huge amount of devices. They are the reason you will still find fixed-function modes in engines such as Unity3D, which are bound to support a large market.
Now, it’s quite obvious that this isn’t the kind of graphics chip a gamer would use to run Steam games on.
To get a broader picture, you can look at the Unity3D Web Player stats. The GMA 950 still has a whopping 10% market share. (It isn’t listed under fixed-function however, because it technically supports non-GLSL assembly shaders)
Now, having said that, I’m personally not in favour of supporting these underpowered devices. I’d rather live without these ten percent (most of which are likely netbook-like secondary devices, anyway). However, it’s not the case that these ten percent somehow prevent using newer OpenGL features on the side. The reason that the BGE is lagging behind in terms of features is that nobody is developing them.
This thing about opengl 1 and extensions was explained in a thread yesterday. I think it is time for a sticky thread, or a seperate section, for those that are convinved that BGE is inadequate, but do not seem to have much knowledge of BGE. There have been halv a dussin threads the last two weeks discussing the same thing, how a new game engine is needed etc.
I vote for a sticky “BGE Alternatives Discussion”, so that these threads do not clutter the BGE Support forum.
I am not saying that motostop posted an irrelevant thing, but this thread seems to become another discussion as four other on the first page.
Steam stats show that 90%+ of all its users have DX10 class GPUs, which means they do have OpenGL 3.2 support.
Someone in another thread/poll said that most of the gamers have no GLSL support (so that’s the reason BGE lags behind on OpenGL implementations).
Don’t forget that the steam survey results and the Blender survey results are sampling different groups of people. I have no problem believing that the majority of users of the BGE (a free, open-source game-engine, designed for people who don’t have a lot of available money but are pretty thrifty with what they can afford) have overwhelmingly less expensive hardware than the users of a platform for buying ready-to-play games.
We are talking about business, aren’t we? So if one wants to not only make games, but make money with it, it’s only smart to target people who pay for games and have at least capable hardware (Steam crowd, which is much larger than those who can only play games that don’t support any GLSL shaders). Note that DX10 GPUs are cheap. DirectX 10.1 start from $29 on newegg.com Many laptops / lower end PCs come with that kind of hardware. So by the time one is finished with his game, DX11 will be accessible and DX10 will be defacto mainstream.
If you keep on clinging to old outdated hardware support, you encourage people to hold on to it, instead of looking for a better more modern options. On the other hand, if a person can’t buy $10-20 used video card with DX10.1 support, then the person most likely will never buy a game. Note that by buying new hardware, end user improves performance of Blender too.
The thing is, as said before, is that there are a surprising number of people on the BGE forums that are still using an old computer that doesn’t even have a cheap GPU capable of handling GLSL.
Sometimes, the reason is that some of the users are young and have an old hand-me-down computer, other times, they claim no need to buy newer hardware even if it’s ten years old.
Now I may or may not have mentioned it, but I do find it unfortunate that there are some who haven’t been encouraged so much as to buy a cheap GPU so we can safely remove all of the old GPU calls (even though their old machines may not be able to run perhaps 90 percent or all of the games and software available today). By all means, we should remove all OpenGL calls predating 2.0 as a start because of the fact that few, if any engines have OpenGL 1.x support these days and that it only take a very minimal investment to make an old machine 2.0 compliant (unless it’s completely ancient like a Pentium 4).
I understand that people may not want to spend a lot of money on their machine if they mainly use free software but there’s nothing out there that can be supported forever.
I have old PC, P4 2.4Ghz single core Prescott + 2Gb of DDR1 RAM + GF7600 GT 256Gb on AGP bus. It’s old. I also still have GF 5200FX somewhere. That’s even older. Yet, it supports Shader model 2.0 and 128-bit floating point precision.
If you want people to upgrade, you upgrade BGE and Blender. People will follow.
People can upgrade GPU, there are plenty of old GPUs out there for sale. They will never do that if Blender / BGE will keep being at OpenGL 1.4
Anyway, I only posted info, that’s all. I don’t care what arguments people will bring to defend state of BGE / Blender when it comes to 3D View / real-time rendering as I simply don’t care I simply provide interesting info, that’s all
Are we talking about business? The BGE is hardly a business-friendly engine. If you’re doing it at anything more than a hobbyist level I would really recommend choosing an engine with commercial support, proper encryption, and so on. I quite like the BGE but we have to be honest about what it’s for.
You are preaching to the choir my friend If only everyone who is with BGE agree on that.
I would like to see a “Hydra” blender, so you can choose a “export core” to use
(Like Quake 1 - 3, Unreal, Secondlife, Etc. AND BGE)
then all “flags” are game specific,
So if you could make a generic “insert your flags” to make “porter”
So the BGE could be used OR ANYTHING !!!
this would just take about 20 hrs + per porter
but once done, each extension could be a default environment interaction, that is tunable by the user…
in short, make it so I can hit P. have it compile and run on a target engine, or a “Shell” of that engine, like a “empty” single player SecondLife client…
I question the existence of these threads. They all seem to fall back on the same points.
Anyway, just for fun here it goes!
Dead on.
I would hope this was understood by the majority. Most developers of “commercial blender games” seem to be newbies who couldn’t succeed regardless of the engine. Don’t get me wrong, I’m sure it’s still possible if you know what you’re doing.
And on behalf of the hobbyist BGE zealots with ancient hardware (such as myself):
-I don’t need need a different engine when the current BGE suites my needs.
-I don’t mind reverting to old versions for fixed pipeline support. But from what I understand, legacy support is NOT currently hampering development.
Look, the reason I post this things is that so people can read them, because sometimes it seems that BGE devs (not the core ones, but the ones who use BGE for their projects) live under a rock. Read, learn and separate facts from fiction surrounding BGE/game dev on their own.
This isn’t a movement to overthrow BGE or anything like that. Smart people understand the difference between BGE and other engines and how and where BGE can be applied.
Do note that why it is true that there might be people who are uninformed about other engines (I know the BGE isn’t anywhere near the top commercial engines for example), we have to note that there are many other BGE developers who are. Simply put, I do agree that the first step towards making the BGE a more capable engine is to raise the minimum software requirements to allow more modern code.
I would also say that the idea that the BGE is for hobbyists only should lead people into thinking that there shouldn’t be any sort of effort to improve the graphics as well as the feature-set along with optimizations ect… This could potentially lead to a community-wide mentality that is pessimistic and defeatist which will only serve to hamper future development.
As for commercial unfriendliness, the closest we have right now is the BPPlayer which surrounds the .blend file in a non-GPL shell, I think that perhaps C-106 Delta could use another developer on the project to flesh it out more and make it much easier to use.
Anyway, the reason I still choose to use the BGE is for these reasons…
-It’s free, and it’s not just a ‘free’ version designed without the advanced features like the case with Unity.
-Zero pipeline, I still have yet to see an engine that’s as closely integrated into Blender as ‘press P’.
-Countless hours invested in existing projects using the engine, the high level of complexity in some of the logic means it could take months at best to port.
-A sizable amount of knowledge on using the BGE while I know next to nothing on using engines like Unity, this would further complicate porting as I would need to relearn how to do so much as make an object move.
- (applies to a comparison with Unreal, Cryengine, ect…) Starting from scratch everytime means that while I might be spending more time setting up gameplay, it ultimately means the ability to build gameplay mechanics for certain games from the ground up instead of having to go above and around to mod an existing FPS game (especially if the target game is highly dissimilar to a typical FPS).
That’s my take on things anyway.
Beating the dead horse:
There are indeed BGE users who seem to live under a rock, but they’re also new to game development.
These people will always exist with an engine that’s receptive to their demographic.
Nonsense psychological banter aside, I acknowledge the attempts to expose different technology as positive. It’s just getting a bit tedious how it always turns into a BGE vs The World debate. Not really your fault I guess crawls back under rock
pqftgs; I think one of the big issues is that some will unquestionably praise the BGE as if it’s the perfect engine. We have to be aware that there are many areas where it could use further improvement (like graphics, vfx, and performance not to mention cleaner code). The BGE can’t improve if we decide that we’re not going to identify what the BGE needs and find a developer to do it.
For example, Kupoman has taken on the task of creating a new rendering core for the BGE (the harmony project), and as such has made tremendous strides in getting that work done (which is already near the point of usability). Moguri likewise has identified areas needing improvement and has been working on tackling those area.
That’s not to say that the other engines are perfect, but blind praise towards the BGE is not going to do anything to improve it.
By all means, we should remove all OpenGL calls predating 2.0 as a start because of the fact that few, if any engines have OpenGL 1.x support these days and that it only take a very minimal investment to make an old machine 2.0 compliant
One does not just “remove OpenGL calls predating 2.0”. The clean cut you want happened with OpenGL 3.0 (not 2.0), where all the immediate-mode and non-shader based stuff was declared deprecated and it was “removed” in 3.1 Core. The 3.x Core feature set somewhat overlaps with OpenGL ES 2 (for mobile devices), which has never had immediate-mode/fixed-function-shaders.
Now, in practice, most people with old codebases will stick with compatibility mode (which retains all OpenGL features) because (as the Valve presentation points out) “No actual driver implementation has ever demonstrated” that using the Core profile is faster. Moving your codebase to Core means completely restructuring your entire drawing code.
The Viewport FX project you mention all the time? It has spent most of its time creating an abstraction layer to emulate the old immediate mode drawing style (which can be quite convenient to use and which a lot of Blender viewport code requires). If it wasn’t for the fact that the Android port requires such an emulation layer, I would have said that was a complete waste of time.
I really wonder what people that seemingly have little conception of how OpenGL works actually mean when they say they want newer OpenGL. Is is shaders? They’re in BGE. Is it tesselation? It could be added without throwing out anything. Do people just want faster everything? That’s not necessarily tied to the minimum (or maximum) OpenGL version requirement. Do they just want more features? There’s usually a way to implement things differently, depending on what OpenGL extensions are availabe. It’s easy to just throw around larger numbers and claim it’s an improvement, but that’s nonsense.
The problem with using old-style OpenGL is mainly to just have more code (how) to gracefully fall back when features aren’t supported. People throw around the word “abstraction layer”, but I don’t think that really solves anything by itself. You still have to do all the work twice plus the work for the abstraction layer. If you’re willing to go that far, you better just write a new, clean renderer and throw the old data at it (possibly with a conversion step in between).
Right now it is already up to the content creator to decide whether they even want to support non-GLSL content. A 30$ GPU may in theory support DX11-level graphics, but when you actually throw that stuff at it, they will just break down.