Procedural World Generation

OC is played in expansive, detailed, procedurally generated worlds.

W2Elevation

Summary

  • OC’s worlds are generated procedurally. Significant factors in world creation include:
  • Properties can be controlled during generation to build worlds with specific features.
  • World sizes range in area from a few square kilometers to hundreds of square kilometers. Much larger worlds have been generated and played on high end hardware (32GB+ of RAM, 6+ physical core environment). Playable world size generally scales with hardware, but more testing is needed before deciding upper bounds on world size for release.

World Generation Walkthrough

A comprehensive write up of how world generation works would require a walk-through of many, many thousands of lines of code and so much explanation that it would probably bore everyone to tears. So, I’m going to try to provide a brief overview of the process a quick demonstration of how to use the world generator, and highlight some neat examples of the algorithms at work just to give a general idea of what world generation is all about.

World Generation Process

World generation follows a sequence of steps, with later steps leveraging data generated by earlier ones. The process begins by forming landmasses and generating terrain data. Once terrain data has been generated, the climate simulation occurs. A frozen hemisphere and tropical hemisphere are selected. Mean annual temperature as a rough north-south gradient, and elevation data is then factored in to modify the temperature values.

Next, a prevailing wind direction is generated, and then a latitudinal precipitation gradient is built. Topography is subsequently accounted for, and a series of calculations are run to model orographic lift. Resulting data is then used to build mean annual precipitation values, and windward mountainside effects and rain shadows result from large mountain ranges. These rainfall values are then used to form creek sources and runoff data, which can ultimately combine to form river systems and fill basins with lakes.

Once elevation data, temperatures, and precipitation values have been calculated, biomes are generated. Calculations then occur to seed world regions with mineral spawn data, region characters are generated, and the region naming system generates names as a result. At this point, initial world generation is completed, a map is displayed to the player, and the player can decide whether to accept the generated world and embark, or to generate a different world.

The last phase of world generation occurs after the user has decided to accept the first phase. These calculations are generally more time consuming, so they’re only run after a player has decided that they like the general form of a world. During this phase, veins of resources are spawned underground. Some of the more hardcore hydrology calculations are run, simulating hydraulic erosion and carving terrain in the vicinity of river systems. Flora and fauna are spawned according to biomes, and human presence is established.

Analyzing Some Results

Let’s take a look at a world generated using default settings to see some of the functionality described above. The best place to start is by checking out the world’s elevation data and some overall world information:

W5Elevation

The name generator dubbed this particular world Darzor 9. From the elevation map, we can see that the world’s largest sea extends from the west-central part of the map through its south-central region. A large mountain range, shaped like a backward C, can be seen on the eastern edge of the map, a high plateau that gradually slopes downward can be seen in the west, and a large, monolithic highland can be seen near its northwest corner. Lakes and river systems can be seen throughout the world, with a particularly large lake occurring near the mountain range in the east.

Next, let’s take a look at the world’s temperature data.

W5Temperature

As you can see, the southern part of the world is cold, while its northern regions are hot. If you compare the temperature map to the elevation map, the cooling effects of high elevation are clearly visible. The relatively cool region in the northwest, near the source of the three rivers, corresponds to the highlands.

Precipitation data is a good place to look next.

W5Precipitation

Some of the most salient features of this view are the dry regions in the southwest corner of the map, and the extremely dry basin just east of the northwest highlands. The extremely dry region in the northwest is a highly visible result of the rain shadow caused by the higher terrain on its western flank and the prevailing winds from the west. Some areas of very high precipitation occur as a result of orographic lift on the backwards-C mountains and the high terrain to their south.

Next, let’s see the biomes that result from this data.

OceanOfUnsettlingPower

Here is a complete biome map key to help interpret the results:

MapKey

The biomes correspond to appropriate regions of temperature, precipitation, and elevation. Also of note, the red box shows a selected region. This one, hilariously named the “Ocean of Unsettling Power” has an abundance of mineral resources for any expedition willing to attempt suboceanic mining.

Advanced World Generation Parameters

Several settings used in world generation can be controlled by opening the advanced properties dialog.

Advanced_WG

Most of these options are pretty straightforward, and it can actually be a lot of fun just toying with these and generating worlds. For example, I turned the sea level up high, set the minimum temperature value to extreme cold, and set the precipitation value to low. The following miserable world resulted:

Ocean_World

This world is plainly awful. Scattered archipelagos of dry, cold islands. Badlands. Frigid wastes. Tundra and glacier-covered specks in a vast ocean. If you want to simulate a world that’s like the subantarctic islands of earth, then this is the one for you.

Swinging all the settings in the opposite directions (sweltering heat, oppressive moisture, and a low sea level) can yield the following sort of result:

Jungle_World

This world is covered almost entirely in dense forest, with a huge expanse of marshy jungle dominating its north and temperate rain forest in its south. Extensive river systems fed by the tremendous precipitation empty into vast, freshwater lakes, which cover much of the world. Most of the planet is a boggy, swampy, soaked mess, with a few patches of subtropical highlands and a bit of cold, snowy terrain in its extreme southern end.

Hopefully these examples show the extreme effects that the advanced parameters can have on world generation and give an idea of the possibilities that the system gives to players.

Zoom & Navigation

From the world generator, it’s also possible to zoom in on specific areas and view world details more closely, as shown in the video below.

Posted in Simulation