170 likes | 182 Views
Develop a tool for creating 2D elevation maps mimicking real terrains, offering diverse generation methods and file formats. Separate UI from machinery, allowing easy expansion and display of results.
E N D
By Cliff DeKoker Random Terrain Generation
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.
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.