• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
  • entries
    73
  • comments
    77
  • views
    81310

Procedural Terrain

Sign in to follow this  
Followers 0
JoshKlint_34394

2144 views

[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']I wanted to add some default procedural generation tools in the Leadwerks 3.1 terrain editor. The goal is to let the user input a few parameters to control the appearance of their terrain and auto-generate a landscape that looks good without requiring a lot of touch-up work.[/font][/font][/color]
[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']Programmers commonly rely on two methods for terrain heightmap generation, Perlin noise and fractal noise. Perlin noise produces a soft rolling appearance. The problem is that Perlin noise heightmaps look nothing like real-life terrain:[/font][/font][/color]
[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']Image21.jpg[/font][/font][/color]

[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']Fractal noise provides a better appearance, but it still looks "stylized" instead of realistic:[/font][/font][/color]
[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']Image23.jpg[/font][/font][/color]

[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']To get realistic procedural terrains, a more complex algorithm was needed. After a few days of experimentation, I found the optimal sequence of filters to combine to get realistic results.[/font][/font][/color]
[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']We start with a Voronoi diagram. The math here is tricky, but we end up with a grid of geometric primitives that meet at the edges. This gives is large rough features and ridge lines that look approximately like real mountains:[/font][/font][/color]
[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']f1.jpg[/font][/font][/color]

[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']Of course, real mountains do not have perfectly straight edges. A perturbation filter is added to make the edges a little bit "wavy", like an underwater effect. It gets rid of the perfectly straight edges without losing the defining features of the height map:[/font][/font][/color]
[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']f2.jpg[/font][/font][/color]

[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']The next step is to add some low-frequency Perlin noise. This gives the entire landscape some large hills that add variation to the height, instead of just having a field of perfectly shaped mountains. The mixture of this filter can be used to control how hilly or mountainous the terrain appears:[/font][/font][/color]
[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']f3.jpg[/font][/font][/color]

[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']We next blend in some Fractal noise, to roughen the landscape up a bit and add some high frequency details:[/font][/font][/color]
[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']f4.jpg[/font][/font][/color]

[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']Finally, we use thermal and hydraulic erosion to add realistic weathering of our terrain. Thermal erosion works by reducing the harshness of steep cliffs, and letting material fall down and settle. Hydraulic erosion simulates thousands of raindrops falling on the landscape and carrying material away. This gives beautiful rivulets that appear as finger-life projections in the height map: Rather than relying on conventional hydraulic erosion algorithms, I created my own technique designed specifically to bring out the appearance of those features.[/font][/font][/color]
[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']f5.jpg[/font][/font][/color]

[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']Here is an animation of the entire process:[/font][/font][/color]
[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']Animation1.gif[/font][/font][/color]

[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']And in the renderer, the results look like the image below. All the parameters can be adjusted to vary the appearance, and then you can go in with the manual tools and sculpt the terrain as desired.[/font][/font][/color]
[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']Image19.jpg[/font][/font][/color]

[color=rgb(11,25,2)][font=arial][font='Helvetica Neue']The new landscape has ridges, mountains, and realistic erosion. Compare this to the Perlin and fractal landscapes at the top of this article. It's also interesting that the right combination of roughness and sharp features gives a much better appearance to the texture blending algorithm.[/font][/font][/color][color=rgb(0,0,0)][font=arial] [/font][/color]

11
Sign in to follow this  
Followers 0


9 Comments


Very nice! It's interesting that we both converged to roughly the same set of steps in our terrain generation (voronoi  perlin + hydraulic erosion) - I think it's a fairly optimal approach to generating nice-looking terrain.

2

Share this comment


Link to comment

Very nice! It's interesting that we both converged to roughly the same set of steps in our terrain generation (voronoi  perlin + hydraulic erosion) - I think it's a fairly optimal approach to generating nice-looking terrain.

I actually came across some blogs you wrote a while back that helped me get the initial direction.  Thanks for writing those.

1

Share this comment


Link to comment

Could you go into more details about these erosion algorithms? Perlin / fractal / voronoi are known pretty well already, but it would be interesting to hear more how did you achieve the last effect, whats computational overhead of doing that last "pass" - is it suitable for real-time terrain generation?

2

Share this comment


Link to comment

Ah , but that part is the secret sauce.  Basically, I just wrote a raindrop simulator and let thousands of random raindrops fall down and carry material away from the mountain.  Maybe I will cover it in more detail at GDC 2014. :)

1

Share this comment


Link to comment
Raindrop-based hydraulic erosion is pretty cheap. I've seen several GPU-based implementations that run very nice animated demos in realtime...
1

Share this comment


Link to comment

Thank you for a nice collection of algorithms gathered in one place.

I myself spent countless hours on terrain generation in the past. Currently in our engine, we use procedural algorithms mostly for closeups. I would suggest the next step is bringing in some layered materials.

Otherwise good job.

0

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now