![ExtrabiomesXL](https://media.forgecdn.net/avatars/thumbnails/5/711/256/256/635351432498586927.jpg)
Canyons
ScottKillen opened this issue ยท 24 comments
Added this one to the oneone-whakaaro wiki in the terrain feature WIP section. Closed
Require Forge terrain events, which I am currently working on.
๐ See ScottKillen/MinecraftForge.
Nice! Its also cool to get an internal view to how you do this biome-randomness.
Are structures possible within a biome? Something like Petra in Red Rock canyon would be amazing
The best part was I said it half as a joke, then I get a Github email about it and was like WOOO!
The Red Rock areas are what I was inspired by, was trying to think of a Biome that'd feed into Metallurgy well, and having giant wide crevasses that are hell to try to travel through but would have ore all throughout them was just too awesome to pass up.
The Forge hooks I am working on will allow the ravine generator to be replaced....which is exactly who we do this.
Yes, I was going to include that type, but wanted to check to see if you saw it as having other types as well.
Alright, my comment on this:
First, above ground canyons should (90%) be "water carved". Even if they are now dry, at one point they were wet with water flowing. As such, they should be above ground, higher at one end, lower at the other. This puts them as features found in the hills-variant and regular hills biomes; given the water-carved nature, some (~30%? ~50%) should still have water source blocks at/near the base (floor) somewhere in the higher elevation section.
Other canyons should be "fault" or "quake" style. This is where the landscape has been pulled apart by geology. These will be found at/below ground, primarily in flat biomes. Rather than running everywhere with no sense of direction, at random, within a given area they will have a predominately standard "curve" to them -- not necessarily straight, but the variation between this crescent-shaped canyon and that crescent-shaped underground rift should be minor.
Looking back at the "How is the landscape built?" idea, in addition to the "Zoom in, and assign biomes", we could have "Assign polygonal (4-8) boundaries", declare those to be the fault lines, place "hilly" biomes along some, and "flat" biomes along others. Then, those become the "seeds" for the rift-canyons
@Shadowclaimer - where you thinking mainly Grand Canyon type...or canyons in general that would reflect the biome that they are found in? For example, something like this http://pinterest.com/pin/134545107588305529/?
I am starting the design document for it, so any additional features or things you'd like to see...let me know.
Something more desert-y, with a barren topside that slowly changes into
stone, very hard to traverse. It goes from almost hill-like to cliffs as
opposed to constant cliffs.
More akin to:
http://www.hdwallpapersdepot.com/wp-content/uploads/2012/10/deep_canyon_v04.jpg
Where its hills and such above and you can come down over a hill and BAM
canyon.
I think of the quake generated ones being mainly ground level and then going down from there as ravines not so much as a canyon. And yes...most canyons were started primarily as a river that has eroded down thru the layers over time, but glaciers and wind and even plate movement can work together with the river. A few are even caused from a cave being exposed do to the erosion above it. The river is trying to reach the base line elevation which is normally the elevation of the body of water it drains into. The greater the elevation difference between the two...the more energy the river will use to erode in order to provide faster and more efficient drainage. This is why many canyons are found in mountainous areas.
And, just as an interesting tidbit, an old "Planet Earth" episode on caves (old DVR recordings) indicates that super giant caves like minecraft's really do exist in limestone in real life.
So if the "Stone" of minecraft is limestone, then giant caves, carved areas, giant ravines, etc, all become "realistic".
Now, if you have a 50-80 times scaling factor, a real life canyon of length ... ? 1000 feet? 5000 feet (1 mile)? 3 miles?
Point is, I think a scaling factor of 50 is the low end; that means a mile (about 5000 feet) becomes 100 feet, or about 33-35 blocks. A 5 mile canyon is about 180 blocks. So I think the "Realistic" size for canyons would be around 100-200 blocks, centered around the lower end (longer tail on the long size).
That doesn't work with the current chunk-sized creation, which as I understand it, basically says "As you get within 7 chunks of the center of the ravine, then the entire ravine pops into existence, even altering the already generated chunks". You can't have a feature realistically being more than about 3 chunks in radius without risking problems.
Either I misunderstand how features are made, or that really puts a limit on the scaling / size of any geological feature.
I can say for certainty that Ravine generation does not alter previously generated chunks.
This is mainly to explain the sequence and should not be held as correct to the most minute detail:
Chunks are generated in two passes. In the first pass (I call this terraforming) the shape of the land is made out of stone blocks based on the output of a noise generator. The these blocks are replaced by biome specific blocks (including water) near the surface and various earths (gravel, dirt, etc) below. Next, ravine and caves are carved out. Finally the start locations of mineshafts, villages, temples and strongholds are determined. Lakes and rare lava lakes are randomly carved except where villages are slated to be. Dungeons are built.
The second pass(I call it decorating) allows generation of the above mineshafts, villages, temples and strongholds procedurally from their recorded start point (this may load other chunks as the structure is built). Finally, grass, flowers and trees are distributed based on the parameters of the biome found in the lowest x and z coordinates in the chunk.
I have been working in this code the last few days adding Forge events at each of these steps (and some others) so that each of these things will be available to modders to tweak.
That's ... ... say what????
I know that mineshafts will generate pieces in other chunks. I've seen it happen. Back when "FLAT" was not "flat" -- I think 125 -- I had issues with a test world that went from 1.1 flat to 125 default, and at the edge where flat chunks met default chunks I did find that mineshafts from the new default chunks put pieces/segments into the air of the 11 flat chunks.
So, for structures like mineshafts, villages, etc, the whole complex is generated from a central point -- and the generation doesn't seem to start until that central point is generated.
How then do ravines know to generate before the "central" chunk is generated?
I don't know of anything that prohibits "air" as a filler for biomes. It is a byte value with no restrictions.
When the subject came up in another thread, the author was saying that air would have required a value of negative 1 as the argument which would have failed (not in the 0 to 255 range)
The blockID for air is 0.
๐ Minecraft wiki
Sweet. While you are working on this code, can you do the following:
- Permit air as the "filler" block. The idea of a biome with a thin layer of dirt above a tunnel is not new to me -- several people have talked about it -- but apparently you can't specify "air" as a filler currently.
1b. In particular, filler=air, top=dirt, decoration = dirt, will pretty much make sure that there are no gaps even at the height changes.
- That sounds like the same section that was discussed in that "prize winning" post, about the multiple zoom passes and ocean/snow/normal division. And the vanilla code has lots of biome smarts.
So how about ways to identify a biome as an edge description for another biome, an ice variant for the snow regions, an interior version for a base biome, etc. -- the goal here is to permit other generators, such as the mystcraft generator, to have the same "smarts" as vanilla, even with a completely altered list of biomes, and to permit a "base biome list" instead of having to list every variant biome in the list.
Hmm, and then, 3: Edging variants of some of EBXL's more extreme biomes :-).
Did I understand this correctly:
In the first pass (I call this terraforming) the shape of the land is made out of stone blocks based on the output of a noise generator. The these blocks are replaced by biome specific blocks (including water) near the surface and various earths (gravel, dirt, etc) below. Next, ravine and caves are carved out.
The ravines and caves that are present in a chunk can be determined without having to start from a central chunk?
- The "other events" I mentioned will allow edge biome variant placement and hill biome variant placement. Yes, the goals are as you state, as wellas shore variants.
- I don't know of anything that prohibits "air" as a filler for biomes. It is a byte value with no restrictions.
- Yes, the ravine generator and the cave generator maintain state information (I have not looked at that code--but both ravines and caves are carved out one chunk at the time.)