The node editor sounds like it should be enough, right?



Just build a Generator object that contains multiple Graphs, where each Graph is a Layer/Pass that modifies the terrain or places objects. So the base layer would be a graph that creates the initial terrain shape, the second layer uses the resulting terrain data to make decisions about adding caves and cliffs and other geographic features, and a third layer uses that data to populate the terrain with vegetation and gameplay prefabs.



Allow the user to add as many layers as they want, and allow variables (int, float, bool, UnityEngine.Object, and possibly string) to be shared between layers.



So rules like temperature and humidity would be variables in the graph that the first layer might influence (the temp at position xyz is t), and the next layer might use to place plants (plant p generates at xyz if t > 30 && t < 60) or whatever.



This also leaves materials up to the user, because the user can say "I will make this entire terrain out of stone" or "I will first make a stone base layer, top it with dirt, then add pockets of iron and copper." It can be as simple or complex as the user wants.

Click to expand...