Jump to content
  • Advertisement
Sign in to follow this  
Triad_prague

Warcraft 3 cliff and ramp rendering

This topic is 1951 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

Hi people. I'm designing a format for a map in my game. I want it to have cliff and ramp, just like WC3. Thing is, I don't know how they make it work. At first I thought WC3 map was just a simple textured heightmap, but then it can have cliffs, ramps, which breaks the rules of standard heightmap. I guessed it was just a simple heightmap underneath, with "procedural" rendering for each tiles (I could see the heightmap layout in wireframe mode in the editor, thus I thought they just render each tile "differently").

 

Can anyone give me a hint on how to do that? I think I just got a few ideas, but somehow I feel not confident enough. I need the opinions of others. Thank you guys!

 

This is what I mean by cliff:

44739d1230921253-editing-cliff-skins-cli

 

and this is what I mean by "ramp" (basically it's a passable passage that connects higher tile to lower tile):

rampstart.jpg

Share this post


Link to post
Share on other sites
Advertisement

My guess would be that they have a terrain grid, which in most places is a regular heightmap. At each grid-cell though, instead of the regular height-map rendering, they can replace that cell with an artist-generated model. They then get their artists to make a "set" of models, which includes straight cliffs, corner cliffs and ramps.

Their editor then has a bunch of fancy logic that knows how these different models should be connected (e.g. ramp must have cliffs on either side, "inner" or "outer" corners selected based on angles of the straight cliffs on either side, etc) to make level editing easy. At any cell where these models are used, the heightmap terrain is 'stitched' up to the edge of the model on either side.

Share this post


Link to post
Share on other sites

Well, that's a good idea. I got a good idea to implement it now. But instead of stitch the terrain heightmap, I'll place a "parametrical model", which replace regular tiles. They will draw themselves based on the 4 corner values. Can't wait to implement it next week!!

Share this post


Link to post
Share on other sites

You can also generate texture coords based on the normals major axis.

Flat ground means normals Y is the major axis, textureCoord =   (vertex.x*tileScale, vertex.y*tileScale);

If X is the major axis, textureCoord = (vertex.y*tileScale, vertex.z*tileScale);

It makes texture coords on 3 axis instead of just top down y. You can then decide if the normals x or z is greatest to sample the rock texture.

Realistically though, just make rocks separate geometry, a lot of games do it. You can really notice it in something like Halo3 for reference.

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.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!