Random Terrain Generation By Cliff DeKoker
About my project ● Incremental development ● Focus on creating height maps that mimic real terrain ● Allow for expansion in terms of file formatting, methods of generation ● Allow for separation of UI and underlying machinery
My project should be able to ● Generate 2D elevation maps with a somewhat realistic appearance ● Use 3 different kinds of generation. ● Use modules that specify different file formats for saving and loading ● Display what has been created
Data structures ● Height maps: 2-dimensional arrays. Each location in the array hold the height for the current position.
Interface mockup
System architecture
Milestones ● Complete simple generation ● Complete file IO ● Complete UI ● Extras ● Complete texture generator ● Work on more methods of generation
Intro to terrain generation ● Games (SimCity, Civilization, etc) ● Simulations (Simulate erosion, changes to terrain over time, meteor impacts) ● Computer aided art programs (Bryce) ● Movies ● Dozens of algorithms for doing this depending on criteria
Existing Solutions ● Overwhelming number of algorithms and examples of terrain generation.
Generation by subdivision ● Start at the four corners of a rectangular map ● Pick random heights for each corner ● Find midpoints for each pair of neighbouring points, and then assign a height value to each midpoint. Also known as tessellation ● A version of this is called the Diamond- Square algorithm ● Results: very nice looking terrain that is rough, but not too random.
Generation by averaging ● Start with a 2-dimensional array ● Assign a random height value to each point ● Set the value at each point to the average of the original value and surrounding values ● Determine some key values to determine what kind of terrain you have generated ● Results: Can be rather noisy looking without running through a lot of averaging. Too much averaging makes very flat terrain. At least the algorithm is simple.
Generation by simulation ● This method is typically memory and computationally expensive. ● Earth is shaped by (but not exclusively): water, plate tectonics, wind, meteors. ● For a simplified version, you could focus mainly on water. ● Results: can be difficult to simulate all the effects that alter terrain at the same time. Works fine for a small scale area. IE: water carving through a valley.
Conclusion ● Ultimately, you should strive to find a balance between the amount of time you want to take to generate and the quality of the results you are looking for.