Localizing High-End Games for Low-End Machines
CowboyRobot writes "Intel engineer Dean Macri has an article at ACM Queue listing the challenges in designing PC games that will run on very different processors.
PCs vary widely in their performance, and if game developers design only for the high-end, they limit their market.
The article lists specific tips on how to guarantee that even old slow machine can run new games, such as 'the number of triangles used to create the trunks and branches could vary based on the available processor and graphics hardware performance', 'replace the clothing on characters in a game with actual geometry that separates the clothes from the underlying character model', and for simulating ocean waves, having low-end systems rely on basic sine waves while higher-end machines use more sophisticated methods."
'replace the clothing on characters in a game with actual geometry that separates the clothes from the underlying character model'
.. come to think of it, I might be playing the next Tomb Raider on my Pentium 133. Half a frame a sec is fine if it gives me half a chance to ogle Lara's buttcrack.
This actually sound like a pretty good idea. Hey, I got one too. Perhaps they could just leave out the clothes completely on low end machines?
It's easy to say what you want to do when you have unlimited processor resources. But when you don't, you'd rather your program not crash or totally freeze. Especially in a game environment, throwing the little things overboard first will leave the main gameplay elements in tact and still leave a playable game.
Yeah, it means extra programmer work on the design side because you're going to have to design a "smart version" and a "dumb version" for the effects you want to downgrade. You'll also have to select how you're going to measure system resources, and at what level of resources will the changeover for smart to dumb happen for each element. It's work, but I think it's an investment with a payoff.
The keyword is "graceful degradation". Take away the elements that contribute to the "wow factor" for the power user but the low-power user won't really miss. Background elements are the key thing you should be thinking about, especially ones that'll never have much direct impact on the outcome of game situations.
It's all about raising the spread between your "minimum" and "looks best on" system requirements. You want to get the minimum as close to the floor as possible, while having the high-end features will create great demo installations and really sell your game to the high-end fans. The more people who can enjoy your game, the more copies you'll sell, and therefore the more money you'll make. You remember money, right? It's the whole reason games are written anyway...
PCs vary widely in their performance
This is why I come to slashdot, the deep technological information you can't get anywhere else.
Like the X-Box?
I dunno...I'd still rather play Pong or Frogger than huge overdone games.
I remember when games were about gameplay.
Now my brand-new computer will have a usable life of more than 3 weeks, think of all the money I'll save, and thus spend on new games!
This would require an incredible amount of engineering support for practically no payoff.
use openGL
open the source
maybe folks itching to play the game without spending money will figure out how to port it to their machines.
Next generation games like Doom 3 and Half-Life 2 will allegedly scale to meet these sort of demands. And as long as the engine and development tools are written with scaleability in mind, the challenge should be far less for the game developer (assuming they can afford the engine!)
Karma: It's all a bunch of tree-huggin' hippy crap!
As a game programmer and developer http://igerard.com, I have worked with a number of systems that scale to the specs of the system. Most recently I have worked with the Torque Engine, which has some scaling capability, and with my own engines (although they usually dont require so much processing power).
As a gamer, I have always had a laptop, as I move around so much, and I am very impressed by the scaling capability I have seen in recent games (Medal of Honor: Call of Duty, Morrowind) which have worked fine on my meager 32mb Mobility Radeon graphics card)
Post apocalyptic gaming goodness
This sounds good, until the low-end people realize they are missing out of many of the important graphics that others are seeing. Sure it would be nice for everyone to be able to run the game, but I think most people would want to fully experience the games. I think this idea would fall apart on online multiplayer games. In a FPS, I would prefer to have as much detail as possible. Of course the low-end machine gamers will be shooting at the moving block instead of seeing a fully rendered opponent.
--
Real-time deal updates
Why would they bother optimising games for low-end hardware? We all know that software drives sales of hardware.
Hell, look at most of the hot games coming out: they have marketing deals with the graphics card makers.
Does it make you happy you're so strange?
Isn't this stating the obvious? Of course you could do this to speed games up, but all of these factors require longer development time.
With the rushed nature of game development, I don't think game companies are that worried about this. It raises development costs without paying out much- most gamers keep up with the latest video card, processor, etc., and won't benefit from this.
The type of computer user that doesn't upgrade their system very often is the same user that doesn't buy very many games.
If these games were open source projects, these sorts of enhancements could be possible. Since the code is open and shared, some guy with a low-end machine wants better performance, so he writes simpler algorithms to emulate the real ones. When you build your own copy, you just pick which optimization level you want to be at.
Instead of trying to do super-duper processor detection degradation stuff, let the player choose levels of detail and such-like.
That way he can choose whatever's important to him... if he's a big fan of realistic trees, let 'em have it at the cost of slower AI or whatever.
The Army reading list
Don't forget to expose these options to the user. Games a pretty good at this nowadays, but it's pretty important that there's some way for the user to actually decide these things, they shouldn't all be left up to 'timing loops' and 'hardware IDs'.
Not only do some gamers perfer framerate over display details or vice-versa, but it's also important for the future where the same game might meet with hardware that is literally 10 times as fast as the state-of-the-art at the time it was released.
Belief is the currency of delusion.
I dunno, it seems like making more generic algorithms -- ones that will draw quickly on diverse platforms -- would tend to limit the optimizations for the fastest machines. I.e., once you start coding algorithms with decisions based on processor speed you'll lose all the specific tweaks.
Games already have a lot of features to make them playable on older hardware including resolution options, fog, shadows, detail level, etc.. Hardware also moves pretty quickly. By optimizing in the general case you'll also make it more playable on less recent hardware (the rising tide floats all boats). Plus, who's to say that games lose their appeal as fast as new hardware comes out? I still play Warcraft II because I enjoy the gameplay.
There will be a software renderer built into UT2004. This means you don't need a 3D capable video card installed to play UT2004. It does help if you have beefy CPU if you use this mode, since that will be doing all the work. It isn't pretty, but at least you can play.
Journal
Valve has been conducting and publishing system specification surveys. It's interesting to see that the majority of their respondents are using GeForce 4 MX cards; I would have thought higher specs.
The most annoying thing about detail controls in games is that it's unclear what you (the end-user) are changing when you tweak the knobs. As a developer of 3d applications, (who's guilty of same), I think I'll approach this in the future by giving users immediate feedback: "Here's what your scene will look like with low shadow detail. Here's how smoothly it'll run, on average."
We're indie. We're working on our 14th game.
and for simulating ocean waves, having low-end systems rely on basic sine waves while higher-end machines use more sophisticated methods.
It looks better if you just use a cosine...
I lead the graphics effort on The Sims, and for us, there was a lot of luck involved. Most people don't think of The Sims as terribly cutting edge graphics-wise, but at the time we were trying to do something that a lot of people told us wouldn't work (software 3d rendering into a rich z-buffered background). I put a huge amount of effort in to making the game playable on a 200MHz MMX PC, which it barely was. In the end I think we got lucky...by the time it shipped, that was a definite sweet spot in the market. And it did manage to sell a fair number of copies, though probably not for that reason. :)
Rumor has it The Sims has driven up the price of RAM. We didn't spend nearly enough time optimizing how it would use RAM with hundreds or thousands of new objects added to the game, and from what I hear hardcore players are happy enough without high-spec CPUs, but they all like a gig or more of RAM.
Don't forget the article on slashdot the other day that was a rant from a guy who said that games were approaching the graphics cieling in terms of quality. At some point the required PC specs will nearly stop moving upward, then people will catch up . So maybe then in the near future when games can't be much prettier than Doom 3 is supposed to be, the developers will be able to basically stop designing for such things and concentrate on game content. I mean, if you've played or seen the Doom 3 alpha demo (and most of you should have, if not, for shame) How much prettier do gamers demand games to be? I think we are very close to the graphics cieling now....
Increasingly I've seen the reliance on a better graphics card to significantly improve frame-rates the most. Take my current box, in the past few months I just upgraded my PIII 450 from '99 to a P4 2.6 800Mhz FSB. RAM went from an initial 128MB to 320 MB SDRAM last year into 512 MB DDR dual-channel now. The overall improvement in gaming has been limited though. Yes, things do run much better than they did in the past. Massive numbers of units and other computationally intensive tasks have obviously seen the most improvment, but the graphics card is holding everything back.
I'm using a GeForce2 GTS from '00 at present and I certainly feel it. Vice City can drop to a crawl at times and other games need the graphics options knocked back quite a bit in some cases. While the $300 I spent on motherboard and processor upgrades are noticed the same amount of money needs to be put into a graphics card to really notice an improvement in frame rate and for almost all intents and purposes, actual improved performance.
The graphics card is increasingly becoming a major (not to mention expensive) bottleneck that needs to be upgraded on a much faster path than the rest of the system to stay competitive. The only advantage here is that in many cases a weak processor can be enormously helped in some cases by a cutting-edge graphics card.
While the article has a lot to say on this topic and it's certainly one of the easiest changes to implement scalability in it can still be a problem in many cases and should perhaps be addressed more seriously. Graphics technology, moreso than any other part of the computer is really what's driving gaming these days and should be watched closely to keep it in check.
Not bad for a game by Microsoft (and Big Huge Games.)
Computer games were always better then the console ones, were first with 3d, first with networking, you could use mods etc.
But now all the small gaming companies no longer like the pc. Id software and a few others are still around but most people use consoles for games and work on pc's. This leave even less incentive for a small gaming company to consider the limited pc market.
I was hoping Microsofts Xbox would bring in new games to Windows. It did not and now they are leaving the intel platform so that hope is gone.
http://saveie6.com/
One method of making scalable games is to use recursive based algorithms to generate the graphics. Basically, code up a 'for' loop, and vary the number of iterations depending upon the architecture of the machine it's running on. For things like trees, water, snowflakes, clouds, grass, hair, and so forth, this optimises rather well.
For example, refer to Koch's Snowflake
On a low end machine, only two or three iterations would be needed to create a decent snowflake. On a high end machine, you could iterate this function a hundred times with various compounding affects such as rotate, copy, resize, diff, transparency, and so forth. With high end machines, you can do close ups of snowflakes without any resolution loss... And most all of this is using the same algorithm as the lower-end machine would use...
Granted, the fractal algorithms have to be well designed and thought out to achieve this effect. A basic Koch's Snowflake algorithm at high iterations doesn't look too much different from lower iterations... Some transforms would need to be introduced to the algorithm, but those could also be scalable...
Anyhow... $0.02 cents
Okay, so imagine we've got a FPS set on the water (just for kicks, call it Waterworld). You have the sine wave water and I have the sophisticated uberalgorithm water. When you shoot me, your client-side model for water thinks I am in spot A, while my uberalgorithm water thinks I'm in B. You shoot me -- but from my perspective (pun intended!) you couldn't have seen me.
/render/ the smoke.
Sounds like about 10 million "he hacks!" calls waiting to happen.
I remember people turning the smoke off in their Halflife clients because they wanted to see through it. At one point, my graphics card driver wouldn't even
Let's try an alternate approach: let's market the games for the sophisticated gamer and that will get more people to buy better machines. Not everyone is rich, but (see above) It's the Graphics Card, Baby!
[Error 407: No signature found]
I do not think that word means what you think it means.
Instead of looking at making a game scalable on a single computer, how about looking at leveraging it off multiple machines instead.
Have a central box that controls the game mechanics, then farm out the rendering engine to multiple servers. Most homes are moving to multiple computers in any number of of applications.
Now, I generally loath the idea of gridcomputing, but rendering is one of the areas it is good at. Have a central box run calibration tests for the graphics flow, then you can add or remove additional processors as needed. A single processor would represent the lowest level.
So, market a generic game rendering standard that can be ported to any sort of processor (including embedded cpu appliances ), then focus on the console box or computer to combine the results.
While the industry specialists are worrying about compatability (which is a valid problem) Microsoft is selling single use machines such as the Xbox at a loss. Maybe it's time to produce similar architectures and even homoginize the processor/chipset platforms into something recognizable as one system. Unfortunately most people get linux for free, don't support open source projects, and then expect the world to cater to their minority preference of alternative environments.
As far as keeping in line with the article I do believe that instead of a diverse platform on which to design games, we are going to instead have more specialized products such as the Xbox and the TiVo that are going to destroy the computer's list of abilities one by one. In the end i see more and more Dell's and HP computers turning into conversation pieces instead of being diverse, which is in direct support of the premise of the article. Diversity in this field currently leads to an inability to produce games that sell well to an uninformed culture, instead you are developing games like GTA which was developed separately for 4 different systems instead of all at once like Sonic Heroes.
Just pick minimum FPS and replace heaviest algorithms with lighter versions whenever FPS drops too drastically. Just look up "Morrowind FPS Optimizer" for example of a program that does similar thing - shortens view distance whenever it causes speed problems. It allows several other hacks too: Remove far, small objects, shorten view distance (better FPS) in battles and much more.
45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
and you get:
Quake 2 with nekid Stroggs galore.
Wolfenstein with a nude Adolph Hitler
GTA 2 with realistic squeeky vinyl bucket seat sounds.
Silent Hill's "playdead" of the month.
Warcraft 3 expansion - Frozen Cajones
and Frodo still says "I am naked before the wheel of fire" in LotR, but he's grinning.
Who is John Cabal?
as they are already developing for low end hardware - tomorrow's low end hardware.
The net result of spending thousands on making your game engine run on machines that are old when you release it is a totally false economy. Games development needs to take into account the future and scale upwards, not downwards. I want my software to run better in the future, not better in the past!
I suppose the only point at which this might be useful is when portable and phone hardware is capable of running what we'd consider decent desktop games now. Is this likely to happen?
That the economics of PC gaming are already starting to look a bit "touch and go" for most titles. Add another mill or so for additional art and development to support bottom end processors and you're starting to have a bit of a problem justifying the investment. Not to mention the schedule risk.
Hopefully PC gaming will turn into a proving ground for the up and comers...
Hopefully.
Dave
I write a blog now, you should be afraid.
Sounds like a dead-end street to me. There's a significant market out there (casual, rather than die-hard gamers) that doesn't want to spend hundreds or even thousands of dollars to upgrade their systems to maximize the gaming experience (or to be able to play the newest games at all.) A parent who just spent $1000 on a stock Costco computer, for example, is not going to hand their kid another five hundred bucks so he can optimize it to play Half Life 2.
...then she must be a genius.
That bug remained in the final game I believe. I guess it was suppose to be a "feature".
No sig for you!!
Instead of forcing me to make individual choices about every single optional CPU or GPU taxing feature, try and detect the capabilities of my computer and give me the best picture quality I can get at a smooth framerate.
That way I don't have to study the impact of every single optional feature... if my computer can handle two pixel shader passes, 100 MB of textures, and models which have been decimated to 10000-20000 triangles each, I still won't have to know what a "pixel shader" is before playing.
We all like purty graphics for aesthetic reasons, but many of us play games for other purposes. To lots of people, online gaming is enjoyable because it's competitive, like football or chess.
I'd be interested to see how much both lack of detail (lower resolutions, turning off dynamic lighting, and the like) and bad framerate influence players' performance. My guess is: not much, and quite a bit once you go under 25-30 fps or so.
More developers need to have lower-end systems in mind! I'm a computer game fanatic, but I can't afford to upgrade or replace my system every year. Each computer I get lasts about four years before I get an overhaul. I love Blizzard for keeping people like me in mind! And I really look forward to playing half-life 2 and doom 3... some time in 2006.
It sounds like this guy wants us to write 2 engines: A high end engine and a low end engine.
Why not just write a good low end machine engine that will be killer on a high end machine?
You say things that offend me and I can deal with it. Can you?
This is why hardware sells, and why the article is 50% off the mark:
1. The article is old news/looking at eye candy. Trees are a good point, but some games already do it for scaling into the distance. Simple enough to re-use this code for scaling with performance. Cloth etc are just eye candy. Be interesting to see cloth as a gameplay feature, but the biggest use these days is in the flags of Capture the Flag game mode. Heck, Unreal Tourney did that years ago on my humble 300MHz MMX.
2. Implement that super cloth sim, and then you need a Prescot to run it! Good news - more hardware sales.
3. Multiple sets of models is fine for EA, as they can have a serious art budget - but need to buy lots of Maya platforms - more hardware sales - to make that artwork on. It's impractical for most second tier software houses. They stick with the one or two tiers of target platform, as that's all they can AFFORD! The article does not help them, and the first tier developers know most of what is in it already.
Now don't want to just bitch and moan, so constructive suggestions. One look at Doom 3 and I'm writing a check for a faster machine. It's the character skinning and lighting that sells me on the hardware. That Alien like monster in one of the preview screenshots gave me the creeps. I think the article is a good idea, with one good example (trees) and other poor examples. If he'd given a ref to scalable character skinning techniques I'd appreciate it more.
I've been dying to compile and play Tux Racer on my SE/30 for awhile now. As soon as I get done with that, I'm going to compile Celestia so I can explore the solar system at sub-sub-sublight speed.
Constitutionally Correct
Games for PS2 render to a 640x240 pixel frame buffer at 60fps. This results in jagged edges. Games for GameCube and Xbox, on the other hand, typically render to a 640x480 pixel frame buffer and try for 60fps. For an interlaced display, they do a simple comb filter on the scanlines. This results in smoother edges.
I agree.
PC games keep pushing the limit higher and higher for requirements.
Consoles are equally as bad now. Don't they have PS3, XBOX2 etc coming out in 2 years.
Imagine having the buy a new house every 4 years because your furniture is not compatible. This is the gaming industry tactics.
Considering that Intel ship only integrated gfx chipsets, it is no suprising for such an article. Traditionally integrated gfx chipsets are targeted to corp. clients, but I noticed that a lot of people besides corp. people are buying them too. Consider this, last year who ship the most graphics chips? Would it be suprising that ATI was NOT the king? In volume, Intel is flooding the market with their cheap gfx chipsets w/o hardware T&L and people have been flocking to them because they are cheap and they reduced the price of a computer by at least 200 to 300 dollars because you cut out the gfx card you gota buy. In addition, for every chipset sold for Intel, a CPU is attached to it. This is making Intel tons of money.
I think the problem is that when people started to play games on those cheap computers with integrated gfx they found out painfully that they got what they paid for. Some games won't even work because hardware T&L is the first thing they check. As a result, people will start to realize that they didn't save any money and they still have to go out and buy that 200 to 300 dollar gfx card in order to play the game they just spend 25 to 50 bucks on and can't return it because they opened it.
I am not an Intel hater, but rather I am tired of people asking me why can't they play the games they just bought and is there a way I can work some magic. Once I figured out they are using an integrated gfx, the only thing I can say was you need to spend 100 bucks on a decent card.
I am not suprised of such a paper getting published.
This guy is not a game developer. He's an Intel marketeer.
Notice what he talks about: Hyperthreading and Intel instruction set extensions. There's no discussion of the graphics subsystem, programmable shader pipelines, multipass rendering, lighting, Z-buffering, or texture memory - the things that concern graphics programmers for games today, and things that Intel doesn't do very well.
Beg to differ. Businesses buy expensive systems to use as servers. The only reason you'd use that much money is top-flight hard disks, gigs of RAM, RAID arrays, etc. (See ArsTechnica's insane "God" Box ($10k!))
It's eminently possible to put together the hardware for a very good gaming box for under a thousand, and an excellent one can be had with $1500-$2000.
Just as an example:
There, that's about $850. I said "under a thousand" for the hardware, right? That's lots of wiggle room for a second drive or better video card or whatever you feel the need for.
Now, given that this is a gaming box, and the best OS for gaming on this hardware is Windows, I'm not going to zealot around and scream "Linux! Linux! Linux!" at you, but figure in an extra $200 even for XP Home non-update; Professional is $300. (But just because you run Windows doesn't mean you have to run Office - take a look at OpenOffice.) Add to that an antivirus program (NAV 2004 is $50 or so) and whatever else you consider necessary, and you're looking at about $1100-1200 done. A far far cry from $5000.
And as a final point, I get plenty of games where my broadband connection doesn't matter. Some people still play singleplayer / offline games, and when I play MP, it's usually LAN.
[0] The last one I saw was 2600 & board for $90.
[1] Hell, a combo DVD-ROM/CD-RW runs about $60, if you have a minitower case.
[2] Do not skimp on the case. Cheap ones both cut corners (I did a build the other week where the motherboard just barely fit in past the optidrives - there was less than a cm of room. $15 case, I should have known.) and have corners that cut. (/me shows off scars on hands from cheap cases)
[3] Case fans, good cpuhsf, floppy drive if you want it, mouse, keyboard, etc.
if the answer isn't violence, neither is your silence / freedom of expression doesn't make it alright
The problem is that the hardware has gotten faster and now the developers can slack of more on their coding because 'by the time the game is released, there will be faster hardware available'. The progress in game 'speed' has nothing like kept up with the hardware speed. How else do you explain that the likes Descent and Terminal Velocity with their full 3D features ran just fine on a 486/66, and ran perfectly on a Pentium 66 with the full textures and details cranked up? Hardware speed has gone up by a factor of at least 50 (possibly even close to 100) since the first Pentiums were released. How come we now need this new high-end hardware to run all the new games when the technical advances have not been all that great? Original Quake worked just fine in 1024x768 on a Pentium 66. See how far you get with the recent first person shooters on hardware like that. Bottom line - hardware has long become the replacement for the skill of developers. How else do you explain the difference in resource consumption between, say, Windows 98 and Windows XP? Does it really do sufficiently more to justify a 10 fold resource use increase?
You (the user) would want to be able to 'order' which effects get thrown away first, and whether effects are either always on (never throw away), able to be thrown away, or never on. Some of this functionality we're getting already, with FSAA, and to some extent anisotropic/trilinear filtering. The only issue is games wanting to do it on their own or not ever asking the drivers.
As a side note: wasn't DirectX supposed to fix this? ;)
I'm looking to get rich. I've got steps #2 (????) and #3 (PROFIT!) planned out, but am having trouble coming up with #1.
'Scale the number triangles to...' 'use a sine wave instead of...', game development 101 my friend.
That doesn't mean that game developers have the time to support such a broad range of hardware, the Q&A and testing expansion associated, et cetera...
Nearly every game developed in the past 5 years attempts to embrace this approach, I can't believe that this is news. I mean, most games pipeline out over 2 years AT LEAST, so by virtue of the machines they develop upon there is a 2 year coverage of hardware support (and often games ship without support or scalable performance options for the 'latest and greatest' out there.)
Maybe he's under the impression that they don't support the PII because they just don't realize that there's money in them thar hills; however, that is incredibly naive thinking. They do not usually support the large PII base (just as an example) because their research has shown that people with PIIs are not very interested in the 'latest games.' (Game Dev magazine had a survey's results published 2 or so years ago that covered this.) Simultaneously, development teams are of a generally 'limited' size. They have 'limited' time to produce a game with a particular 'window' or 'target' for shipping. Each iteration backwards in performance that you wish to support requires a serious commitment of resources. Some games which make use of (relatively) new innovations (such as pixel or vertex shaders, or new processor instruction sets) may find it inordinately difficult supporting a long back history of machine performance. Ironically, engineering a (for example) 'rendering path' which supports much older hardware can preclude your game from taking advantage of newer capabilities.
Loading...