Open Terrain Generator (OTG)

Open Terrain Generator (OTG)

10M Downloads

Feature: Cave Worlds

WACriminalG2 opened this issue ยท 1 comments

commented

This is my attempt to summarize the conversation we had on Discord about features that might be useful for cave world development, and potentially other similar "special case" preset types. If I missed something, obviously someone feel free to comment and add it on.

  1. SAGC verticality

Currently, SAGC generates a single noise value for an entire column, 0 < Y < 255. In a cave world preset with lots of overhangs and layering, this results in a situation where patches of special ground blocks (such as patches of sand) will duplicate at the same XZ coordinates at each Y level, which feels a bit "behind the curtain" or unnatural in appearance. An option to fracture the SAGC noise map based on Y levels could solve this.

  1. Unwanted "surface" just beneath bedrock ceiling

If a biome's stone block does not match its surface and ground blocks (which is most biomes!), you can find a small layer of "surface" just beneath the bedrock ceiling. This can currently be fixed with a ReplaceBlocks, but it might be more intuitive or performant if OTG treated the bedrock ceiling as a stone for the purposes of determining whether it should generate a surface there.

  1. Tree() and other light-dependent resources

Currently, it's impossible to use Tree() and other resources that utilize light checks or "highest solid block" checks. It would be handy if we either had the option to disregard these on a per-resource basis, or a master "CaveMode" toggle that would skip such restrictions. Otherwise, we have to make a LOT more BO3s to incorporate things like modded trees and plants into our terrain.

  1. 3D biomes

Obviously useful for a variety of preset types.

  1. Cave configuration per biome

This was mentioned, although the conversation somewhat decided that it was probably best to leave this for external mods to manage. Including it here in case anyone gets randomly inspired by it.

  1. World Height 128

For performance reasons, many cave dimensions such as the Nether cap their worldgen height at 128. A similar option (perhaps with a configurable height) would be useful for cave presets.

  1. HighestSolidBlockWithin option for BO3s

Currently, when spawning BO3s within a cave setting, we can't use HighestSolidBlock. Instead, we have to emulate it by using a combination of RandomY, high frequency, and block checks. It would be a huge QOL adjustment if HighestSolidBlock instead respected the minY and maxY settings for the BO3 -- or, alternatively, if we had a HighestSolidBlockWithin shorthand for this. The current option is definitely usable, but could be easier from a preset-dev perspective. Depending on the situation, it might even be more performant with the suggested adjustment.

  1. "Top Slide" method for ceiling generation

This is one that PG mentioned. The basic idea is that for a cave mode, we would be able to define a "top slide" in the same way we define a biome's normal terrain. The top slide would then be generated upside-down on top of the biome's existing terrain. This would definitely make it incredibly easy to perform common cave-world tasks like generating stalactites, hanging BO3s, etc. Perhaps a CeilingBiome setting in the .bc file, which references a separate .bc file, or (for consistency) an 'IsCeilingInBiome' setting to match the way borders and isles work.

commented
  • Will most likely need to use CAVE_AIR instead of AIR for cave worlds, if users use terrain noise to create AIR pockets, rather than using carvers to create CAVE_AIR pockets.