Defining Keystone Decisions

My Worldmaker app centers around keystone decisions defined by the user. Each decision is a step toward generating a cool fantasy world that can be used for game development or Dungeons & Dragons-style worldbuilding. Each keystone decision has its own class that handles all calculations and updates the state directly. This is the first draft.

  1. Points: Determine the map points and generate the voronoi graph. The world has to be generated on a base that can be referenced and manipulated by the code. This will provide cells - the basic building blocks of the map.
  2. Tectonics: Make the tectonic plates. Plates are generated by a simple flood-fill algorithm. Tectonic plates have several properties that the user may define: Origin cell, strength, random-ness, color, bend type (convex or concave), bend strength, elevation, and direction.
  3. Terrain: Terrain is generated using tectonic plate boundary rules. Sea level, terrain randomness and coastal erosion are also set here.
  4. Islands: Because islands are kind of ignored by my tectonics and terrain generation algorithms, I think it's appropriate to add them in their own step. Island clusters can be a unique tectonic cell type and are generated for special cases.
  5. Temperature: Poles are cold, equator is warm. Let users define the temperature gradient and equator.
  6. Wind: This one's going to be difficult, but essentially determine which direction wind flows, globally. Atmospheric pressure simulation? Hmm.
  7. Moisture: Wind and temperature defines how much water wind picks up from the ocean and dumped on land.
  8. Rivers: Use moisture values to determine where rivers flow to the sea.
  9. Biomes: Use rainfall and temperature to determine biomes.
  10. Flora & Fauna: Generate flora and fauna from a list of plants and animals. Users can define what flora & fauna are allowed/disallowed from the source list.
  11. Regions: Generate initial nodes where towns can spawn, and the regions around them. Each node defines the desirability and resources of the possible town. Think of regions as simply the area around a town.
  12. Tribes: Generate tribes of people with unique languages and spawn them in different parts of the world. Flood fill them, and they will build towns on owned nodes and name regions they are familiar with.
  13. Timeline Simulation: The end-point of the generator. Step through a linear a linear flow of time, generating events and moving characters and armies. Use Crusader Kings, Total War, Civilization, and other grand strategy games as a reference point.