Jump to content
historic_bruno

Important: Please read if you have an older computer or graphics card

Recommended Posts

Recently, 0 A.D. developers have been making strides in improving the game's graphics quality. We have added normal maps, parallax, ambient occlusion, trees that sway gently in the wind - all of which were included in Alpha 11. For Alpha 12, we have added waterfalls (animated textures), post processing effects like bloom and distance fog, and some nice water improvements like realistic water color, waves, and foam along the coastlines. These new features have been added mostly thanks to the hard work of two new developers: myconid and wraitii.

We have ideas for further improvements we want to make, both new graphics features as well as improving performance along the way. However there are some shortcomings in how the game's graphics engine is structured, which could make further improvements very difficult or impossible. We have always considered it important to support as many users as possible. For that reason, as we've added these shiny new features, we have been careful not to break old hardware that uses something called the fixed function pipeline. That was what graphics cards used before shaders, which are a much more flexible and powerful technique. Many features of the game are significantly harder or impossible to implement with fixed functions, including shadows and particles, so it has remained a relatively low quality view of the game. Even though fixed render path looks simpler, it actually has worse performance on most shader-capable hardware (2003-04's GeForce FX series being a rare exception).

Since about 2003, there has been growing support for shaders in new computers and graphics cards. When 0 A.D. first started, shaders were not planned and only a few users could boast such high-end graphics cards. But over time, fewer and fewer of our users have the old pre-shader hardware, while we've added better and newer graphics features. It has gotten to the point (since 2008) where on newer computers and drivers, the old fixed function pipeline is deprecated or removed.

It has been proposed that maintaining the old fixed function support is too much work going forward, for too little benefit. There has been serious discussion of heavily updating the graphics engine, which will require pulling out all the fixed function code. If we choose to continue supporting old ~2003 hardware, it means we have to add another layer which complicates the design and maintenance of the game. It has become difficult to justify this extra work, given how few of our users play the game with such old hardware. Our best estimate is only a few percent of them would find the game playable, of all users since we began collecting user report data in early 2011.

Keep in mind that fixed render path has no benefit to "new" computers, while the tradeoffs of keeping it are: less progress in improving how the game looks, increased maintenance of the game going forward, and potentially less performance enhancements. The only reason to keep fixed function support is for the few users who benefit from it. The affected graphics hardware would mostly be:

  • GeForce FX/5000 or older (including GeForce2, 3, 4 series), GeForce FX Go 5 or earlier [1]
  • ATI Radeon R200 or older (2003's Radeon 9250 or earlier), any ATI Rage cards, Mobility Radeon 9500 or older [2]
  • Intel GMA 900/950 or Extreme Graphics [3]
  • Low-end cards from other vendors (SiS, S3, etc.)
  • Possibly newer cards with buggy or missing drivers

So we'd like to hear from the community. Do you play 0 A.D. with one of those old pre-shader graphics cards? Are you using fixed render path by choice? Do you feel it's important that 0 A.D. support very old (10 years) hardware, why or why not?

  • Like 3

Share this post


Link to post
Share on other sites

I've already said it internally but let me go ahead and say it publicly: as much as I feel for the around 1-3% of the people who will be left out when the switch happens, I think it is much more important to pave the way for future improvements and an overall better graphical gameplay experience. Technology advances at a fast rate and eventually everybody (of the the said 1-3%) will catch up. That is the great thing about open source and tech... they just keep getting better and better.

On a side note, eager to see how far the capabilities of the engine are pushed and what the limits will be. Only time shall tell :P

  • Like 3

Share this post


Link to post
Share on other sites

It's unfortunate that some users won't be able to play 0 A.D. on their older system, but I totally agree here. Hardware vendors no longer support these older cards, open source mesa drivers also dropped some older chipset in 8.0. Desktop users can still buy a supported card if they really want to play on newer 0 A.D..

Maybe you can also start to offer optional features on newer OpenGL 3.0 cards (in some recent commit I noticed however that something requiring OpenGL 3.0 was adapted to be compatible on 2.1 also).

Share this post


Link to post
Share on other sites

Wow, i didn't know there were people with so old computers, the oldest i still have here is from 2008... I really feel sorry for these people, tho, but i guess a graphic card upgrade isn't that expensive, so they'll catch up with us very soon (at least i hope so).

  • Like 1

Share this post


Link to post
Share on other sites

Even though many of my computers would be disadvantaged by this update, I have to agree.

  1. This is the most important reason for me, Windows XP will be losing support from Microsoft soon, when it loses support many people will upgrade to Windows 8. Windows 8 uses a software based renderer for GPUs that never got drivers outside of XP. This software based renderer only supports OpenGL 1.1 which the game already does not support. These people could never run 0ad anyways. So my point is that the 1-3% of people with old hardware is going to go down to around 1%. which makes supporting them totally unworthwhile.
  2. If this update is completed is it possible that at least a basic software renderer could be thrown in with 0ad so it can still run to some extent on older hardware?
  3. Also would this update keep support for OpenGL 2.0?

Edited by Josh

Share this post


Link to post
Share on other sites

Those (very old) graphic cards that you mention, isn't performance on those very low already? To the level of making 0 A.D. unplayable?

This is just a guess though, I don't know for sure.

If it were up to me, I'd drop the fixed function pipeline and go for shaders only. They've been supported (and preferred) for many years now.

  • Like 1

Share this post


Link to post
Share on other sites

  1. If this update is completed is it possible that at least a basic software renderer could be thrown in with 0ad so it can still run to some extent on older hardware?

A software renderer isn't going to work, it would basically need to be a 2D sprite based engine to achieve playable speed and that would require lots of changes to art and a whole new rendering engine, it would be easier to keep/rewrite the fixed render path.

  • Like 2

Share this post


Link to post
Share on other sites

I also feel that dropping support for the fixed function pipeline is the better option here. Is there a region demographic of those that have older cards and have played 0 A.D?

Also, is there a wiki page that briefly talks about the software design of the rendering logic in 0 A.D? Its pretty daunting to figure out.

Share this post


Link to post
Share on other sites

I'm really surprised to hear that you've been supporting those old cards. I used to have a computer that had one, but I upgraded the card because I couldn't play any of the newer games - and this was several years ago (got a different computer now). You can get better graphics cards than that cheap on ebay, and swapping them out isn't hard.

I can't imagine 0 A.D. plays well enough on hardware that outdated to make it worth the effort to support it, though I can't test that. I'd drop it.

Edited by greenknight32
  • Like 1

Share this post


Link to post
Share on other sites

If I'm not mistaken, the netbook I'm writing on now has Intel GMA 950 graphics... and even though I tried, 0 A.D. were absolutely, utterly unplayable on it, with something that felt like 1-2 FPS per second. So I'd wager that on any computer without shader support the game will not be very pleasant anyway, and the people using such hardware will be fewer and fewer. 0 A.D. part 1 probably still has a couple years to go anyway, and throwing out some legacy cruft will at the very least not slow development down.

Share this post


Link to post
Share on other sites

Are those 1-3% actually playing the game? I can imagine someone trying the game, only to find out that their older hardware does not run the game well, so they play only once or at least not that often. I think that on older hardware the game isn't going to run smooth or even playable, given the load on the CPU (which will probably be underpowered as well). Thus, my point is that not many actual players may be lost, at the benefit of the more than 95% who would benefit from an easier to maintain/develop code base.

  • Like 1

Share this post


Link to post
Share on other sites

While I am someone who is usually against discarding support for older versions/computers, I think that we should proceed drop the fixed renderer. The reason? dvangennip explained it well. I agree with him.

  • Like 1

Share this post


Link to post
Share on other sites

Also would this update keep support for OpenGL 2.0?

Yup. Also, llvmpipe has software emulation for up to OpenGL 2.1, though I can't imagine it being particularly fast.

Maybe you can also start to offer optional features on newer OpenGL 3.0 cards (in some recent commit I noticed however that something requiring OpenGL 3.0 was adapted to be compatible on 2.1 also).

For OpenGL 3.0 we need SDL 2.0, though it hasn't been released yet. It's definitely something I'm very interested in, though.

Share this post


Link to post
Share on other sites

As someone whose newest laptop still has a GMA950, I'd obviously rather you didn't break 0ad on it... :unknw: . Despite what some have said above, it is in fact playable to a reasonable extent.

However, I can also see the logic in dropping support for my old hardware, as I gather the overlap between "new enough to play 0ad tolerably" and "old enough to not have the required features" is somewhat restricted. I can always play on my desktop (Pentium D, HD 7770 :fool: ), which gives far better graphics and performance anyway. If you think dropping old hardware support will have significant benefits, go ahead and do it - I'll be waiting to play with whatever new features it allows...

Even shorter: Personally, it would be better if you kept the old hardware support. If you don't and that allows you to make the game better, I can put up with that. Thanks for the awesome game.

Share this post


Link to post
Share on other sites

Posted on twitter, but I also wanted to register since I really appreciate the work that's going into 0AD.

As much as I can appreciate wanting 0AD to run on older hardware, I would vote to abandon older video cards (specifically).

This project represents a lot more in the big picture, and I'd really love to see this game succeed in the (very) long-term.

Thanks and keep up the great work!

Share this post


Link to post
Share on other sites

Posted on twitter, but I also wanted to register since I really appreciate the work that's going into 0AD.

As much as I can appreciate wanting 0AD to run on older hardware, I would vote to abandon older video cards (specifically).

This project represents a lot more in the big picture, and I'd really love to see this game succeed in the (very) long-term.

Thanks and keep up the great work!

I really agree with you. Since the pyrogenesis engine is being built for long term use and such broad scope, I think removing the fixed function pipeline is not a matter of if, but when.

Share this post


Link to post
Share on other sites

As someone whose newest laptop still has a GMA950, I'd obviously rather you didn't break 0ad on it... :unknw: . Despite what some have said above, it is in fact playable to a reasonable extent.

However, I can also see the logic in dropping support for my old hardware, as I gather the overlap between "new enough to play 0ad tolerably" and "old enough to not have the required features" is somewhat restricted. I can always play on my desktop (Pentium D, HD 7770 :fool: ), which gives far better graphics and performance anyway. If you think dropping old hardware support will have significant benefits, go ahead and do it - I'll be waiting to play with whatever new features it allows...

Yeah I've got an old laptop with a GMA 900, and I've tried to play 0 A.D. on it, and I've done development on 0 A.D. using it. It definitely isn't what I'd call "playable", it gets about 2fps max and has Intel's typical buggy drivers. On the other hand, I tested with an old GeForce4 on an Athlon XP 2000 desktop and that was more like 10 fps, but I think the CPU would struggle in a serious game. I replaced the GeForce4 with a GeForce 7600 GT card about 3 years ago, that has shader support and is very cheap these days, it's a huge improvement for like $20 - about the best AGP card you can get.

It's annoying to have one less computer for playing/developing 0 A.D., but like you, I have a much better desktop. Based on comments here, it sounds like some people who have tried 0 A.D. with old computers also have at least one newer one available.

Share this post


Link to post
Share on other sites

Just nuke support for cards that old - you have to draw the line somewhere. This game has been in development so long that you've actually lived through a major technological shift in GPU hardware architecture and corresponding APIs, meaning that many of the old requirements/assumptions are no longer valid. Maintaining a legacy codebase for an increasingly diminishing audience will just burn out existing developers and turn away potential new developers that don't want to be saddled with that much legacy baggage. Plus, as the team has clearly become aware of, maintaining that degree of legacy support virtually guarantees your game will look like something from the early 2000s.

As long as you maintain a forward rendered render path for older/weaker GPUs (e.g. first generation SM3 cards and older), you should still be able to cover a large audience and not make your graphics engineers want to kill themselves. Plus if this goes through, I'd be interested to see if I can contribute again, especially if myconid is serious about implementing a deferred render path of some sort as building a rendering system from scratch has been a personal goal of mine for a while.

Edited by Zoomastigophora
  • Like 1

Share this post


Link to post
Share on other sites

As long as you maintain a forward rendered render path for older/weaker GPUs (e.g. first generation SM3 cards and older), you should still be able to cover a large audience and not make your graphics engineers want to kill themselves. Plus if this goes through, I'd be interested to see if I can contribute again, especially if myconid is serious about implementing a deferred render path of some sort as building a rendering system from scratch has been a personal goal of mine for a while.

Well there's a lot of exciting work being done on the rendering side of things, and more is planned, so I'd say it's a good opportunity for anyone with the know-how to contribute, helping make pyrogenesis a great, modern engine :)

Are you guys referencing this data to help make the decision?

http://feedback.wild.../report/opengl/

http://www.wildfireg...showtopic=13784

Yes, though it would be nice if Philip could update the reports :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×