Deciding on minimum/target hardware levels

Continued from here, but pulled out into a separate topic because I think it’s important and want a few more replies - how do you go about deciding on minimum and target hardware and JVM for your games?

Pretty much all my stuff has been lowest-common denominator - Java 1.4 and basic OpenGL 1.1. That covers pretty much any pc you’ll see in the wild today - even laptops and budget computers with those crappy integrated intel chips. However I’m increasingly feeling restricted by this, but I’m not sure whether it’s a good idea to up the requirements. Sometimes it’s possible to have multiple paths which produce the same output (like with FBOs), but when you start getting into shaders it usually becomes impossible to have a GL1.1 fallback which looks the same.

Now if I was someone like Cas and charging for them, then it would probably make good business sense to stick with the current lowest common denominator. But since I’m not maybe I’m restricting myself unnecessarily. Switching to Java 1.5 would certainly make some areas of the code much cleaner, but is it worth loosing X amount of players for? Similarly for shaders, theres a whole lot of cool stuff that can be done even really simple shaders, and it seems a shame to miss out on using them. On the one hand, if you’ve got a crappy integrated intel chip I think you shouldn’t expect to play any games on it, but I suspect people who actually own them would feel differently.

I suspect everyone has different motivations and compromises they make in this area, so I’d be very interested in hearing how others pick and choose what to have as a minimum baseline and why.

/rambling

Hi!

It is an excellent question. Even Wurm Online doesn’t support a lot of Intel chips and some ATI chips too. I think that you could do as in Quake 2 (and TUER). I test which extensions are available and I do my best with these. For example, if you can’t use shaders, try to use something that might work worse as a replacement on chips that don’t support it. If you can’t use VBOs, try to use vertex arrays or display lists. I know it requires a lot of time but programming games requires a lot of time. Personally, I switched from Java 1.5 to Java 1.6 because of bug fixes on nio buffers and sound mainly. I understand your position but if you use Java Webstart as you gave me the advice, the user will be able to simply upgrade its JVM, won’t it?

As I mentioned, there are some things that just can’t be done if a certain extension is not present - the text rendering being a perfect example of how we must choose between a low-tech solution that looks good everywhere and a high-tech solution that looks great on some hardware but worse on old hardware. The question becomes “how much are we willing to sacrifice the image quality for hardware A in order to give better quality for hardware B?”.

[quote]If you can’t use VBOs, try to use vertex arrays or display lists. I know it requires a lot of time but programming games requires a lot of time. Personally, I switched from Java 1.5 to Java 1.6 because of bug fixes on nio buffers and sound mainly. I understand your position but if you use Java Webstart as you gave me the advice, the user will be able to simply upgrade its JVM, won’t it?
[/quote]
Personally I’m less worried about VM version since I suspect pretty much everyone has 1.5 now (Macs have 1.5 now right?). But it’s a closely related issue so I thought I’d include it.

I go with it depends on the game. If you’re working in 2D and doing something light, I would think potential customers would be appauled if it doesn’t work on their old machines. If you’re up in 3D land or you’re working 2D but doing some fantastic visuals then shader dependency is fine in my book.

I generally stay squarely in the first section.

Kev

I really think it depends on the game you are making. If you want to appeal to graphic enthusiasts, chances are, that you can require SM3.0 and a > 1.8Ghz PC. If you are targetting casual gamers, you may have to stay with OpenGL 1.1 and low CPU requirements.

I am more or less in the same situation, since I am currently developing a commercial game and I use the easy way out: the lowest requirement is my laptap, so I can test on it :slight_smile: Since it is a pentium m 1,7Ghz with an ati X700 chip, the requirements might be a little high for everyone, but I am alone and can’t effort taking the time to fine tune on low end hardware. I just hope there are enough players out there with a decent hardware to run my game.

I can really only echo what other people have said, but regarding the OpenGL versions, 1.3 is pretty much everywhere now and you will hardly ever see anyone with less than 1.3…

RE shaders, Ther are ways around using them, meta language that compile to a specific shader version is the first idea that comes to mind…

DP :slight_smile:

The main reason I’m sticking where I am (with a 1.1 baseline) is because I haven’t got the time to learn anything new :slight_smile: I’d rather spend the time just cranking a new game that works everywhere rather than waste 6 months learning shaders only to find that the market’s a third of the size and I’ve got one less game to sell to show for it.

Wouldn’t mind using some Java 1.5 features - really must start thinking about Retroweaver.

Cas :slight_smile: