Thursday, November 29, 2007


Looking at the screenshot in my recent post Achievements, you can see a how dull and low-polygon the terrain can be in games when you get up close to things that are designed to be far away—in this case, a mountain. This is by no means a problem exclusive to World of Warcraft. Since the object was designed to be viewed from far away, it's made up of relatively few polygons and low-detail textures. Up close, it looks pretty sad. Some games like Oblivion have multiple versions of terrain objects: a low-resolution version for when they're far away, and a better version for when you're up close. When you get high up into the mountains you can see the negative effects of this; things far away look really, really bad when you can see much further into the distance than you can in, say, a forest. But overall, Oblivion does a pretty decent job at this.

I wonder if one way to combat this problem is by having procedurally-generated terrain models. From a distance, the mountain I'm standing on in the screenshot could look as it does today. Closer up, some code could kick in to start generating details. From a medium distance, the game needs to render more than just a silhouette of the mountain, but it doesn't need individual rocks and juts yet. Up close, it would be nice for it to look like an actual cliff, with rocks, jagged edges, and the like—all of the things that would kill performance if they were rendered when you were a mile away. Nobody really has the time or budget to add that level of detail to the game manually, but if they could be procedurally generated, so that the game could just "fill in" missing detail, it wouldn't take much longer to design areas of games than it does today.

Of course, the question is: how do you ensure visual quality and design consistency? Does someone still need to go through every square meter of the world to make sure that the code is generating terrain details that are aesthetically pleasing? In most cases, you'd want this to be a repeatable process, so the next time you visited the same mountain cliff you'd see the same rocks and terrain features, instead of new ones picked at random. How do you make that work? I'm sure that there are solutions here... I don't know if they're the right ones. It just seems that, at some level, we're going to get to a point where the computer is capable of rendering incredible detail, but no design team has the time to create that level of detail. Today we use shortcuts like reducing polygons or reusing textures to save time. How much of that can be improved by letting computers do tedious detail work for us?

No comments: