Random Terrain Generation

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 DiamondSquare 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.