Monday, December 04, 2006

This One Goes to 11

If I could have a nickel for every time a user has asked me "what machine do I have to buy so that I can max out all of the settings in X-Plane"...

The problem is simple and two-fold:
  1. X-Plane's maximum rendering settings can sink even the biggest computers. Why is X-Plane's maximum so "overbuilt"?
  2. The rendering settings are not good predictors of performance. Why the hell not?
The answers are, roughly in that order, "Because we can't predict the future" and "because it has to be that way". Here's the situation...

The Maximum Limits
Some of X-Plane's maximum settings are design limitations. For example, your anti-aliasing can't exceed your card's capabilities, and the visibility can't exceed the loaded area of scenery.

Other limits are based on algorithmic limitations - there are as many objects in New York City as we could possibly pack in. We figure you can always turn down object density if there are too many.

Still other limits are based on guesses about hardware. We could have made the mesh or less complex - we chose a mesh complexity for the global scenery that we thought would be a reasonable compromise in frame-rate and quality for the v8 run based on typical hardware. This is just a judgement call. big of a computer do you need to run X-Plane with maximum objects? I have no idea! We honestly didn't give it any consideration. Our strategy was:
  • Make sure the maximum object density the renderer would produce would not exceed our disk space/DVD allocations. It didn't...because objects are only in cities, they contribute only a tiny fraction to the size of global scenery.
  • Make sure that we could turn object density up and down easily.
  • Ship it!
We figure you'll turn objects up and down until you get a compromise of frame-rate and visual quality that you can live with. If you can't find a compromise, it's time to buy a bigger computer, because we can't give you something for nothing. All those objects require hardware to draw.

And I would go a step further and say it's a good thing that the maximum density of objects is very high. When Randy (our sales/support/marketing guy) got a new PC, a very nice one, but not even the most ridiculous gaming box possible (and this was months ago) he reported that on the default settings he can fly the Grand Canyon at...283 fps!

My point is that the hardware keeps getting faster and we can't predict where it will go. So it seems like a safe bet to leave the maximum settings very high for future users.

So How Insane is Insane
The other problem is that rendering settings don't correspond well to machine power. I can't tell you that a 3 ghz CPU can handle "tons" of objects. The problem is that hardware performance is a composite of a number of subsystems, and scenery complexity varies by region and even by view angle.

Even the slightest change in camera angle can have a pretty big effect on performance. Combine that with different types of scenery elements (objects in some, beaches in other, mountains in others) in different regions and it becomes very difficult to predict how well scenery wil work on a given computer.

A Good Value
Given all this, we don't try to come up with correlations between the settings and the hardware. Instead we simply try to make X-Plane run as efficiently as we can, and try to verify that you get a "good value" - that is, a lot of graphic quality relative to the power of your computer. We have to trust that you'll buy as much computer as you want and/or can afford, and we try to give you the best look we can for it.

So if you are shopping for a new computer, you can go for the "Rolls Royce" strategy, where cash is no object and you maximize every component (even if paying a huge premium for brand new technology) or you can go for a "good value" strategy, trying to find the best price-per-performance points.

I'll close this off with a few tips on buying:
  • If you are buying a new computer, be sure you have a PCIe 16x slot! Any decent motherboard should come with this -- if it doesn't, you're not getting a good computer. A PCIe 16x slot for the grahpics card shouldn't raise prices too much.
  • Get 1 GB of memory minimum - X-Plane will run with less, but it helps, and memory isn't that expensive these days. A new computer will be fast enough that the system can use the extra memory. I get my memory from Crucial - it's good quality and often cheaper than what you pay if you let the computer manufacturer upgrade you.
  • In the US for Windows/Linux, look for a graphics card between $100-$200 - that's the best value range for graphics cards. Get an ATI or nVidia card (nVidia if you're using Linux). I don't buy my cards from PriceWatch but I find it a useful listing of the price point of a lot of graphics cards.
  • Don't get a video card with HyperMemory or TurboCache.
  • Check the "suffix" of your graphics card on Wikipedia - there are tables for the clock speeds for both ATI and nVidia cards. An nVidia "GT" card will cost you more than an "LE" card, but will be clocked a lot faster and given you better performance.


Schimmi said...

What I wonder in X-Plane and FS2k4 as well is, why there is no better automatic regulation which automatically set object density, object quality and so on based on the current frame rate. So e.g. if I am in clear sky condition a lot of things are shown. When a rain conditions come up or clouds appear which decrease framerate considerable scenery detail should go down to keep proper framerate. I only know from FS2k4 that they somehow reduced autogen stuff based on framerate, but still things like object details of an airports are always constant.

Anonymous said...

Kudos to you Ben for this post!
I couldn't agree more that you need to stay ahead of the curve!
While it may be a little frustrating for users of older machines to have to 'turn down' the complexity rigt off the bat, I think most would agree that, if they suddenly had the newest greatest machine, they'd want X-Plane to show them a little something extra that only that class of computer can handle.
I say this somewhat selfishly as I'm looking to buy a new Mac Pro with the Radeon X1900 (or whatever comes out in January). I know that I would also be disappointed if all I got was the same visual effects as my MacBookPro, but just more fps...
The jump from PowerBook to MacBookPro was spectacular; I really appreciate that everyone gets something with X-Plane, and that X-Plane simply tries to make full use of all resources available, regardless of the CPU/GPU's generation!

Thank you for an amazing product,

Steven Haigh said...

Interesting you should say that. I just purchase a 2.66Ghz Mac Pro with 2Gb RAM and an X1900. What I can tell you is that Xplane rocks. You can crank up the settings most of the way, however you will get some times where performance grinds to 3-4fps, however most of the time, it'll be at least 30fps. It looks great though :)

I still run Xplane at 1024x768, as I find a lot of panels etc of third party aircraft just don't scale well to higher resolutions.

Grab one, you won't be disappointed :)

stefano said...

I am still hoping to see an improvement of the framerate during gameplay when using a multicore/multiprocessor machine... :o| (or even a cluster! ;o))
Something using fixed multiple threads, or automatic ones like the ones of OpenMP, assigned to different cores... . But I understand the problem of converting the code into an intelligent "multithingy". But it will soon or later happen, or not? In the end, that's were the market is going now with all these double, quad, etc cores popping up.

Photosmith said...

You describe visibility as a "design limit". Just curious, but what is the limit defined by? Is it the video card's VRAM, or the total system RAM? Is there any chance you will kick the maximum higher than 25 miles at some point so people who have high RAM (either the 1GB VRAM cards, or systems with 4GB system ram for example) can fully use that capability?

Benjamin Supnik said...

Photosmith - visibility is limited by two things:

1. The number of DSF tiles loaded (six right now) - basically if the visibility is too high with too few tiles, you see off the edge. We have definitely discussed loading 12 tiles, something would be possible on some machines. Right now vis tends to be a physical RAM limit but is rapidly becoming an address space limit.

Bear in mind that before v8, load time pauses were proportional to tile count, so loading a 4x3 (instead of 3x2) area would really be slow.

Of course, there are limits ... even with 4x3 we would still start to have issues beyond 100 km of DSF, and that's not _that_ much distance.

2. Framerate goes down with more DSF scenery, so there's a real performance issues. But this really isn't a "design limit".

Bear in mind that the real design limit is that we have to use using the "earth orbit textures" we can get a lot more visibility....but they just don't blend well with the of the open questions is: if we blend from DSF to earth orbit after 4x3 DSFs, will that transition be less noticeable.

It may be that we need to go to 4x3 DSFs for those with the RAM, and somehow put some mountains and other "large-scale" features into the earth-orbit textures.