Jump to content
  • Advertisement
Sign in to follow this  
trdezrek

What makes a good terrain engine?

This topic is 5451 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

A complex question, but not one I think that is beyond the good people who visit these forums. What do you think is vital/nessecary to make a good terrain engine? Is it texture splatting? Geomorphing? Mip-mapping? per-pixel lighting? You tell me. I know that there is probably alot of differing opinions on this but I'd truly like to know what people think. Post examples, links, pics. I'd love to see what you've accomplished. Ciao

Share this post


Link to post
Share on other sites
Advertisement
To be honest, since I'm not familiar with creating a terrain engine the main thing for me would be creativity.

From my perspecive it's one thing at a time, you improve the basics then refine them, then improve them again. First thing that I would see important is the geomorphing, since the perpixel lighting, and texture splatting aren't very important unless you have a nicely done map to begin with.

First I would get a few books on terrain generation, maybe do a few pre-book tests yourself by generating a height map then generating each poly baised on that height map. Maybe take a look at some topographical maps to see how the earth is formed, give you an idea of what the glaciers did to change the terrain.

Share this post


Link to post
Share on other sites
Well, I hope you didn't take it to mean that those were the only choices. I just wanted to throw out a few examples of features that my friends have touted as the true necessities of a terrain engine, heightmap renderer or whatever you want to call it.

Ciao

Share this post


Link to post
Share on other sites
Life: Tress, bushes, shrubs and grass.
Not So Life: Rocks and boulders.

Giant flat green squares isn't very exciting. Eye candy like pixel-perfect lighting and texture splatting can come later. Flat, boring terrain, no matter how well lit and textured, lacks detail and richness without vegetation.

Share this post


Link to post
Share on other sites
pickup the Terrain Engine book by Greg Snook. Its a good read showing how design and fully implement a terrain engine in DX9, he currently works at Bungie and worked on the original Halo (full of terrain) and now on Halo 2.

-digga

Share this post


Link to post
Share on other sites
I fail to see what the book has to do with the original question. What do "you" think are important features of a terrain engine?

Personally, I think the true magic of a terrain engine is its LOD algorithm. My current engine uses geometrical mipmapping to cut down on the vertices nessecary for the whole scene.

Recommending a book is an okay thing, but it does not tell me what your opinion is on the original question.

Ciao

Share this post


Link to post
Share on other sites
I'd say the answer to the question is simple: appearance.

Now, there are many facets of appearance.

The first (and most obvious) one is how it looks in a screenshot. Is it blocky and poorly-lit? Or are there beautiful rolling hills, rocky outcroppings, and a nice atmospheric look to it? Are there small details? Tiny bumps? Vegetation? Large draw distance? All of these things add up.

The second is how it looks in motion. Are shifts in LOD noticeable, or does the terrain pop more than a weasel in an Orville Redenbacher bag? The most beautiful looking terrain can look terrible if the LOD changes are really noticeable.

Third is smoothness. And by smooth I mean framerate-wise, not landscaping wise (though that could be important, too, depending on the scene you're trying to render). Again, it doesn't matter how beautifully it renders, with near-pixel-perfect LOD if it runs at < 30 (or 60, depending on your pickiness) frames per second.

On a non-appearance note, the memory footprint is important, too. I made a really nice-looking terrain engine that used almost a gig of memory for a medium-sized level. That's very unacceptable, and thus I scrapped it. Using procedural noise and higher-order surfaces has been said to use very low amounts of memory. Geomipmapping uses very high amounts of memory. Memory is a scarce resource, so use as little of it as possible.

Now, with these qualifications, there are bound to be tradeoffs. Maybe you need to reduce the amount of detail for a speed increase, etc. But those are the main factors in terrain rendering, to me.

Share this post


Link to post
Share on other sites
I can say, almost everything that makes it model nature better.

As about performance, it have no point to be 15 FPS if rendered mainly on GPU - from 15 FPS you have to either fall to SPF and make better quality(because 15 FPS is not SO much better than 3, but there's 5 times more time to render, "5 times more quality" possible).But all SPF engines is purely software because it allows to do more things.
Or get it to 30 FPS, but with lower quality. Or stay at same performance and wait for next GPU, and then keep 30 .. 60 FPS.

From other side, nn CPU, it's hard to get above 10 FPS, so i focussed on quality. I think my renderer might work at >30 FPS if done on GPU....

Share this post


Link to post
Share on other sites
just to add my thoughts...

I'd reckon scale is an important factor in any terrain engine. I personally love hill/mountain walking (in the real-world!). Sitting on the top of a mountain looking over a huge vista of lakes/hills/mountains spreading out over however many miles. Any terrain engine that replicates this sense of scale gets my attention.

Unfortunately, pulling it off is often quite taxing on current hardware :-) I think Project-IGI (#1) and Farcry is as close as I've come to being truly impressed (along these lines) by a commercial engine in recent years.

Jack

Share this post


Link to post
Share on other sites
If it's realtime, then you had better read up on binary space partitioning, and how to implement binary trees. You will need to be good at this to even consider a good framrate.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!