Lineage/WoW-Like Terrain questions.

Started by
10 comments, last by Bliz23 18 years, 4 months ago
Hello people! Me and some friends are planing to start making a MMORPG game (don't laught :P) I have never worked on a terrain engine before. I find some e-books and some tutorials. All of them(and i mean ALL of them) are talking about terrains generated from a heightmap. I have't found some e-books or tutorials talking about techniques for saving terrain geometry data from a 3d program (and some textures/shdaer data maybe) and then loading it in a 3D Engine. Its hard to believe that lineage2 terrain is generated from a heighmap! Its not possible to save texture data on a heightmap. For example in Lineage2 the roads has a lot of different textures. This means that the texture does not selected randomly from the engine.. but the artist wanted to add a specific texture in a specific road. I also noticed in all the e-books or tutorials that the x and z coords of the vertices if the terrainis on a grid (has a constant distance to each other) and only the y coord is variable. (this is logical when you have a heightmap) Maybe this (putting all the vertices on a constant x/z grid) is more efficient when traversing the data structure that I will use? (octree..portals.. or anything else). Or there is no problem to have a not constant x/z grid? so.. 1) Anyone has any idea how the Lineage2/Wow artists has build and save the terrain/world data? 2) Any e-book/tutorial about this? or about terrain engines in general?(i have some but if you have something good, suggest it :) ) 3) Is there any advantage when i use constant x/z grid for the terrain? this questions for now.. i think i will have more soon :P thanks for your time :)
Advertisement
Sorry, I don't know how Lineage2/Wow does the job, but I have some general thoughts to tell:

The main reason for using height maps is to save memory. E.g. a 16 bit height map uses 2 bytes per value where a full vertex may use 12 bytes (say 3 floats). Terrain is inherently large, and hence memory saving may become clearly an issue if you pick a geometric resolution just fine enough.

You are wrong if you mean that textures could not be used w/ height maps. Using a regular grid allows to compute the missing 2 co-ordinates on-the-fly, so that full vertices could be constructed for rendering.

Of course, it may happen that the (more or less standard) modelling app you use does not work well for this purpose. So you may take into account to write a tool that convertes the standard output format accordingly to your needs.

Many terrain related stuff could be found here:
http://www.vterrain.org/

EDIT: You may also take into account that individual texturing of large terrain consumes also much texture memory. There are some techniques to reduce this consumption, too, e.g. "splatting texturing" (I assume that was the official name).
Hi,

For the first question, the answer is : they have editors. You can take a look at freeWorld3D (go in the download section and get the demo version) It's basically how heightmap terrains are built : using a custom made editor (or and existing one that work on heightmaps) After that, they export in they own format.
Alright I'm going to speak from a WoW perspective here because I've worked extensivelly with that data.

The way WoW does its terrain is it has a file with an extension of .adt. Inside of this file there are several chunks of data. One of these is a heightmap. There is also a list of textures used by the terrain. There is a chunk with alphamap information and indices into the texture list for up to four layers. There is also chunks that say where to put buildings, sound emitters, etc.

So basically its like a "super heightmap" where the height data is followed by additional data on texturing. This is how they achieve the road effect.
Yeah, you use a height map to give terrain it's 'height' then you plot your objects on it and this is appended to the file. Some map formats have scripting embedded also. I have been reading the book 'Focus on 3D Terrain Programming' it's a great book with plenty of examples. They show you different ways to render your terrain, and a few optimization techniques as well. Each chapter has several sections and each section comes with source code. I would highly reccomend this book.
one of the advantageous of the height map is that you can easily download height maps of practically anywhere in the real world (called DEM, Digital Elevation Model). I've got some DEMs of my home town in both 30m and 10m resolution (i.e. each pixel represents either 30 or 10 meters of distance). It's a pretty common format, you might want to check it out.

USGS provides some free ones for most of the US, with some very, very high resolution ones if you're willing to pay a few dollars (maybe $2.00 for about 100-400 square miles?), I'm talking 1 meter resolution. Awesome stuff. I know there are other services, like OSUK in the UK, but other than that I can't remember their names in Europe.

The only disadvantage to height maps that I can think of is the ability to only create continuous, 1-to-1 terrain. This makes cliffs rather difficult (and often results in unsightly texture stretchy) as well as makes caves and other underground areas impossible.

I believe WoW handles underground areas by creating a sharply turning entrance that is essentially an object model on the flat terrain. Once you turn that corner and can't see outside anymore, it switches modelling paradigms. So, what looks like a hole opening into a tunnel in the side of a mountain is actually a special entrance area that uses the terrain as the floor and builds an object for the roof overhead until you get out of view of any terrain.

[Formerly "capn_midnight". See some of my projects. Find me on twitter tumblr G+ Github.]

:D
Thanks for the replies guys! :D really thanks! :D
Squirell:
Do you have some paper on the internet about this structure? I can not understand.. how with one only alpha map you can define several layers and textures..? :/
For several textures maybe something like this?: from 0.0 to 0.1 alpha value use texture1, from 0.1 to 0.2 alpha value use texture2 and so on..
or something else? and how you can also add leayer information using the same alpha map?

thanks for your time! :D
He never said that all this would be inside the alpha map. Apart from that, using a rgba blend map would easily allow to blend 4 layers (strictly speaking 5, but let's be lazy).
f@dzhttp://festini.device-zero.de
ooops :P you are right :P i read it too fast and understand wrong :P.
Anyway.. if you have some resources about this(wow) kind of terrain/world format give me some urls :D
thanks :D
Link for WoW stuff

This topic is closed to new replies.

Advertisement