After working quite a while on the general game engine I needed some variety. So I started working on the world generation system.
I decided to use a generation approach that divides the process into two mayor steps.
Macro-Simulation
The Macro-simulation is the global scale world information. It contains data-maps which are the basis for the Micro-Simulation. All the values within the data-maps will be interpolated and used in the Micro-Simulation.The first step is to create the landmasses which are defined by randomly placed hills and planes. Each gets a strength, radius and falloff parameters. Some of the planes are places near to hills to achieve more coherent landmasses.
The parameters for the generation are all based on presets. This allows for different kind of landmasses like continents, isles and many more.
Heightmap |
The result is a approximated heat,cold and humidity distribution. Some parameters are influenced by world specific values like base temperature or humidity. Changing these world setting change the environment from desert to moderate or arctic.
Heatmap (blue =cold, red = medium, yellow=hot) |
Data-maps
- Height
- Heat
- Humidity
- Typemap (used for blending between hill and plane detail noise)
- Water (planned)
- Vegetation (planned)
- Ores/Material (planned)
- Artifacts/Landmarks (planned)
Planned features and modifiers for the Macro-Simulation
- Heat/Cold/Humidity fields (radius based area modifier)
- Vulcanoes
- Crater -> heightmap
- Heat -> heatmap
- Meteorites
- Crater -> heightmap
- Heat -> heatmap
- Material Deposits -> oremap
- Rivers
- River bed -> heightmap
- Humidity -> humiditymap
- Water -> watermap
- Canyons --> heightmap
- Streets
- Change the underlying material
- Cities/Ruins
- Streets connect them
Micro-Simulation
This part uses the generated data-maps from the macro-simulation and interpolates them. One cell of the data-maps will be used for one ore more chunks. Depending on the chosen scale factor.The macro values are used as a basis for the detail 2D or 3D noise functions. And those noise functions convert the 2D global heightmap to a Voxel-map with tunnels, caves and overhangs.
No comments:
Post a Comment