Getting out of the stone age - baseline OpenGL functionality

Dammit. Please stop calling anything above at or above the level of a GTX 8000 series card high-end already. My friend’s 600$ laptop has DX11 support for god’s sake. You’re targeting the lowest of low-end, but I am NOT targeting high-end only. There’s a middle ground… -_-’

There is the problem - you are not a game developer.
Tech demos are naturally different and use more stuff.
If you want to create a game experience, you want to reach as many people as you can, and give up on graphical effects if necessary.

Also please stop talking crap about OpenGL 2 being stone age.
I bought a laptop 4 years ago, has 2.1, I work with it every day, I have money, I am an IT person - so it’s safe to say many many more people have this kind of equipment
It runs games until NFS: Carbon
and if those graphics aren’t pretty enough for you, then there obviously something wrong with you

Just a random idea, how about targeting OpenGL ES 2.0 ? Just a few days ago the news was posted that the ANGLE Library is now fully OpenGL ES 2.0 certified. LWJGL also now supports OpenGL ES, so in theory it should be a pretty reliable target for Windows (probably even more so than using OpenGL drivers).

As a side benefit it’ll make porting to mobile platforms and WebGL (maybe using GWT) easier.

Price isn’t the only factor though - it’s also related to how often people upgrade, or what’s bundled in off-the-shelf pcs. My desktop for example is only a 6800. Not because I couldn’t afford to put a better card in there, but because it’s perfectly adequate right now and I haven’t been bothered to upgrade yet. Similarly people choose laptops that get better battery life, which is often counter to having the latest shiny thing that nVidia have put out. There are lots of reasons why people lag several years behind what’s current.

The Steam survey even shows that only 56% of people are DX10 capable. And those are pretty hardcore gamers. Your friend with a DX11 card is within 5% of hardcore gamers. You might not consider it to be, but that’s very high end.

Yup - it’s all about what is actually out there in the wild, not what you yourself consider to be high or low. I think for Orangy Tang’s purposes targeting OpenGL2.1 will let him use most of the fancy new functionality he wants to try out like shaders etc. and only lose, what, maybe 15% of the potential audience which seems a good compromise.

Cas :slight_smile:

Observations about what’s cheap, what’s obsolete, judgments about how people should just get a clue and upgrade and stop seeing GL 3.x as “super fancy” and so on … it’s all well and good, but Cas runs a business. I’m sure he’d love to ditch the legacy cruft, but the hard fact is that casual games that support older OpenGL versions sell more units than ones that don’t.

Me, my target is “whatever runs on the random hardware I have on hand” and it’s all OpenGL 3.3 and higher. By the time I ever get my current project shipped, OpenGL 6.0 will be out ::slight_smile:

I’d love to ditch the old fixed function pipeline and finally start using shaders in earnest. Just unfortunately have to support some older hardware for another couple of years yet.

Also… there is a school of thought that says I seem to be achieving what I want to achieve without actually bothering :slight_smile: Retro graphics FTW!

Cas :slight_smile:

Are there any major technical hurdles to supporting multiple versions in one game? I envision different levels of graphical settings corresponding to different render pass implementations.

That’s a very difficult question to answer, I think. From my experience it’s very dependant on what you’re trying to do graphically, and how much you can afford to scale things back without breaking your gameplay.

(All this my own experience, if anyone wants to chip in with their own angle or methods that’d be helpful).

FBOs for example - if you restrict yourself to 24bit RGB then you can pretty easily emulate that by drawing to the backbuffer, and it’s pretty easy to do it so that only a tiny amount of code needs to change. But as soon as you do something more complicated (like wanting RGBA, or using FBOs with shared depth buffers) then the non-FBO path has to do much more elaborate things like drawing twice with different blend modes, or using the stencil buffer to emulate the shared depth buffer, and it ripples through to the higher level code quite badly.

Things get worse when you may have some sort of combinatorial explosion of enabled effects, hardware capabilities and fallback paths. Choosing a good baseline goes a long way to making this all much more manageable. And that’s before we’ve touched on keeping all these different options tested and working with only one pair of hands.

just to prove my point - a friend of mine told me he is buying a “IBM T42” Laptop - because he doesnt need anything powerful

Intel Pentium M (Centrino) 1,7 GHz 400 MHz
1 GB 400 MHz DDR1
and ATi Radeon 7500 32 MB -> (which supports OpenGL 1.4)

And when doing 2D games I think of awesome games like Diablo 2 and their requirements - a game that would run on that laptop no problem

It’s weaker than my PSP. I’m actually laughing my ass off at him if he’s paying for that shit. Is he, and how much?

I use OpenGL ES 1.0 and it still is beyond 50% of phone hardware. So some people are stuck in the stone age for 2 more years.

I’ve written an engine that had rendering paths for the following:

  • Fixed-function lighting + multi-texturing.
  • Two paths for semi-programmable hardware, utilizing NV_register_combiners and ATI_fragment_shader.
  • Full shader-based (GLSL). I’d used the low-level shader extensions as well, but ended-up throwing that out when GLSL drivers stabilized.

I would never ever do it again. Which means I’m closer to what theagentd is saying. I’m not comfortable with his strong opinion either, but in his defense Orangy Tang didn’t really specify what kind of engine he wants to build in the OP. Anyway, for Puppygames-style games, I’d go with GL 1.5 baseline and then build on that. Decent VBO support is the minimum requirement. One fixed-function path and one (basic) shader-based one is not that hard to build and support.

@theagentd: I’m wondering why you consider GL 3.3 should be the baseline. Take one step back and you can run on the newer Macs (3.2). Take one more and you can run on Ivy Bridge (3.1), which imho is going to be really popular. Do you really require geometry shaders to build a modern engine?

Stumbled across this which has a nice list of what functionality made it into different versions: http://www.opengl.org/wiki/History_of_OpenGL

Of course it’s not entirely helpful because it doesn’t say when extensions were first introduced.

Yeah, that was a mistake I only just noticed. For the sake of argument, let’s say “modern 2d”, although I’m sure people will have different ideas as to what that means.

I’d completely forgotten about pre-GLSL shaders. Would you consider those obsolete now? I’d be inclined to ignore them just because of how much of a pain they are to work with.

I’d use non-GLSL shaders only as a workaround to GLSL bugs or to speed-up start-up times. For “modern 2D” games you shouldn’t need to do that ever.

like a hundred bucks - and why is it shit
I would still buy a C64 =D

Not everyone is happy to ride the evil-capitalist-conspiracy planned obsolescence train. Also, IBM Thinkpads are well regarded for being pretty reliable machines.

Because it’s I’m gonna have my school report done when you’re computer has finally opened up Word, probably even using less electricity. I can even listen to music at the same time without my hard drive grinding to a halt!

My logic in buying an expensive computer is this:

  • I need a computer for school work, Internet, e.t.c.
  • I want to play games.
  • I want to watch movies and anime.

I could get a cheap computer, a console and a DVD/Blu-ray player, but they would all be low end (yes, PS3/X360 is low end). If I just combine my budget into a decent computer, I can get a computer that does all the things I listed above in one package so much better performance. You just have to be technical enough to hook up your desktop/laptop with an HDMI cable to your TV. I’m not saying that it’s cheaper or better than buying those things separately, just that you get so much more performance for the same amount or not much more money. Add in that I like graphics and programming, it’s obviously cheaper for me to focus on my PC than anything else.

And don’t just ignore me as some rich kid or something. I worked my ass off for 3 months on McDonalds on minimum wage to build my computer.

I differentiate between “runnable” and “playable”. Just because your game RUNS on a computer older than I am doesn’t mean that it runs well. OpenGL version doesn’t say anything about what performance you can expect performance from them. I’ve seen OpenGL 2.1 cards that have barely enough fill rate to fill every pixel on the screen without shaders. GLHF getting 60 FPS on those cards no matter what OpenGL version you support.

This is a perfectly sensible POV and one I subscribe to myself. Unfortunately you’ll have a job convincing the other 90% of the population…

Cas :slight_smile:

I’m not trying to argue your reasoning - people should use newer technology

but this is the reality
also - I earn my money with a Laptop, a HP nx6325, has like 2Ghz single core, some ATI express, 1GB Ram
if this thing breaks I’m gonna buy another weak laptop or netbook to replace it, maybe even the same model if I get it cheaply, because this thing was just so reliable all this time

one person on our developer team has a acer aspire one, which is the weakest machine we all have
so we ensure that our game runs 60 fps on this machine