Saturday, August 19, 2006

A missing PC?

Continuing the thread of hardware and how the market doesn't always provide the machines we want...let's look at Windows.

We've hit a point that people have been saying would come for years: computers aren't getting faster - they're getting cheaper. Technically computers are getting faster, but there are now ultra-low-end Windows machines that aren't much better than what you could get a few years ago. But they are so cheap!

Consider a quick visit to Dell's website. Their cheapest low-end machine is less than $300 with monitor! Insane! It's not much of a machine to a flight-simmer, but it is a 2.5 ghz machine with 256 MB of RAM and an 80 GB hard drive. Put a cheap RAM chip in and that's basically what I got as my flight sim machine a few years ago.

The problem is - to get the price down, the machine's had the parts totally stripped out of it. The graphics are going to be an embedded chipset, probably Intel's, and they're not going to be usable for games. Want a PCIe 16x slot? (Accept no less for a flight simulation machine these days?) I couldn't find a Dell with one of these for less than $650!

Perhaps this makes sense - consider what my MacBook Pro is doing right now and how much of its CPU capacity is used:

- Email: 15%
- Word processing with real-time spell-check: 6%
- Surfing the web: 10-40%

Of course if I go launch X-Plane...

So if I was really talented and could do all three of these things at once, my computer would still be overqualified! For the average person, the sub-$300 computer is just great. It does what they need and is becoming very affordable.

Where things get tricky is when one of those users wants to try X-Plane for the first time. In order to get the price down to $300 Dell has had to cut to the bone on all components. So what we're seeing from users who have new machines is the have's and the have-not's.

The haves have new motherboards with fast memory controllers, large caches, dual core chips, and 16x graphics slots - the card in that slot is usually a monster. (Even last generation's mid-range cards like the 6600GT were very powerful by X-Plane's requirements.) The have-not's have a machine with integrated graphics and no slot to replace them with, very little cache and slower memory controllers.

There isn't really a point to this blog entry...the market is just meeting people's needs. A summary of my observation is: where a rising tide of technology lifted all computers a few years ago, that push is now lowering price instead. As a result, many users have machines that are not way overpowered for their day-to-day work and are thus underpowered when they discover flight simulation.

A missing Mac?

As I catch up on Steve Jobs' keynote for WWDC 2006 (where they announced the new quad Intel Mac Pros) it occurs to me that there's a missing slot in Apple's product line that makes things tricky for X-Plane users.

At this point I wouldn't say that Apple is expensive (they're not cheap, but the internal components aren't cheap either). The problem is finding what you want.

The MacBook and Mac Mini are reasonably affordable, reasonably fast (now that they're Intel-based) and do most things that users want. But both have Intel graphics chips, which make them hopelessly underpowered in the graphics department for X-Plane.

The MacBook Pro and Mac Pro come with great graphics chips and are great high-end products, but clocking in at over $2,000 they're outside the ballpark of what most people will pay for a home computer.

The iMac is probably the best bet for a home flight-sim user. At $1300 it's not too expensive, but it comes with a great graphics chip, is a fast overall computer, and flies the sim real well. The flat screen looks good and it's a nice clean machine to have on your desktop.

What Apple hasn't made (and I suspect never will) is an $800-$1000 desktop with fast graphics and no monitor (a mini pro if you will) and a graphics card in a slot (so it can be upgraded). Such a box would be the best choice for a Mac for flight simulation, but since it doesn't exist the iMac's the next best thing.

To end with a minor rant: the new Mac Pro comes with the nVidia GeForce 7300 GT as one of the options. This isn't a bad card - today's cards are now so fast that even the "low end" ones are fast. (Compare to the 5200FX, which was unusably slow from day one.) But a low-end nVidia card in a $2500 Mac? The previous-generation 6600 GT outperforms it in fill rate and memory bandwidth. This isn't the first time Apple's shipped a big machine with an option for an inappropriately slow graphics card. (I suppose I'm seeing the world from the perspective of a gamer.)

Thursday, August 17, 2006

Avoid thrashing pavement types in apt.dat files

In the distant past I blogged about the "crayon rule", that is, thet importance of not changing textures a lot during rendering, and how authors can help X-Plane avoid changing textures.

Before X-Plane 8.50 the sim would change textures every time the pavement changed types in an apt.dat file. So if you have an airport layout that alternates concrete and asphalt pavement (the order in the apt.dat file is the drawing order!) then X-Plane would just switch and switch.

X-Plane 8.50 tries to be smarter about this and detect when it can get away with changing your layout order to reduce texture changes, improving framerate.

Here's my warning: X-Plane is not very smart about this! We try to eliminate unneeded changes but our code isn't that elaborate and it won't optimize as well as you can.

The sure-fire way to improve framerate is to group your layouts by pavement type. This will give you the best framerate. If you have to overlap pavement and control the draw order, I recommend using as few groups of pavement types as possible.

Tuesday, August 15, 2006

Taxiway Layouts - positive or negative modeling

X-Plane 850 allows you to model taxiways by cutting holes in pavement, as well as by building up pavement around a hole. In other words, you can make a letter-'O'-like shape by making a circle and then cutting out the center, or by making two semicircles that touch.

Which is better? Here are a few guidelines:
  • Making an area out of smaller pieces is slower in that you must introduce individual lines only to "cut" the area into smaller parts. So generally subdividing your pavement is harmless as long as the cuts can be a few simple straight lines. Using bezier curves or lots of straight segments just to partition an area into smaller parts can slow down frame-rate. So if you're going to partition, keep it simple.
  • If you keep your partitioning smple, there's no harm and it does let you control the "grain" of the taxiways textures.
  • It takes X-Plane longer to build layouts that have more complex polygons. So subdivision can make airport build-up faster. So for example, modeling an entire class B airport with a single polygon is probably too complex - consider breaking up the polygon a bit.
  • It's better to have two adjacent polygon taxiways with more complex boundaries than one polygon on top of the other. X-Plane has to further subdivide polygons based on the topography of the local terrain, and that subdivision happens for every layer of pavement that's overlapped.
  • One exception: two edges of polygons that touch and are bezier curves may not line up properly, due to rounding errors. So if you want to have one curved surface over another, you may have to use overlaps.

Monday, August 14, 2006

Error Diagnostics

I got a bug report that Tom Kyler's "Grand Forks" scenery wouldn't load with X-Plane 850. It turns out the apt.dat file has a syntax error that X-Plane 840 silently ignored but X-Plane 850 reports as an error message.

I've wired up the apt.dat loader to use the new, more forgiving error reporting system. Most of the sim still doesn't use this system, but when the sim does, the result is a single dialog box (per scenery package, no matter how many errors) that looks like the image on the left.

X-Plane then logs detailed information about the problem to the log.txt file like this:

***Error with scenery file "Custom Scenery/grandforks/Earth nav data:apt.dat" (/code/design++/HLutils/OOPS_cpp/airp.cpp: 493.)
An apt.dat enumeration is out of range: Invalid beacon code. Expected a code less than 6 but got 343128. Airport is KGFK. File is Custom Scenery/grandforks/Earth nav data:apt.dat.

This way authors can get as much information as we have about the corrupt file while users are not bombarded with technical details. When possible X-Plane will continue to load, but the sim may abort if the file is too badly corrupted.

Sunday, August 13, 2006

I'm back and the sim is still slow - what happened?

I'm back from a week's vacation in the mountains - having access to no digital devices is so refreshing!

We're still working on optimizing the planet code; until this is done we won't have the best possible framerates in 850. So even with beta 7 I think there will still be some improvements we haven't gotten to yet.