Trees and Biome generator stuff
#1
Hey, I'm back! Smile
After a break of not playing minecraft (because it bored me) i'm now interested in doing stuff again.

I had the idea of doing multiple kinds of generators.

There is the MCServer one:
- It's like you want to (don't have a special idea how it looks like thoughTongue)

The Vanilla one:
- Vanilla like terrain and trees
-> because most people expect the terrain and stuff being like bukkit if they use this as an alternative)

The realistic one:
By realistic i mean more tree variations and not these repetative vanilla ones,
smooth fade-out/fade-in of biomes, not a simple line, or just a river (that's really lazy in my opinion) like so:
[Image: iaifa33wu3.png]

Terrain features like rocks, tree trunks laying on the ground, warped trees (don't know if it is the right word, but trees that are not straight because of the wind),
small bushes etc.

Rare oceans, but if there is an ocean it's huuuuuuuge and has small islands in it rarely. (already implemented, kinda)

Realistc ordered biomes (No jungle would be next to a Taiga like now)
Warm biome -> Normal Biome -> Cold Biome
Diffrent tree and grass density per biome:
Lots of Trees in the Forest, Rarely Trees in Savannas
Lots of grass in Savannas, less grass in Forests (maybe even podzol?)

Biome based Villages
I know, there is already biome specific villages, but they are often generated in 2 diffrent biomes so e.g. sometimes there are desert houses in savanna.
I would check, how much space is left two the next biome so when there is no more space it stops generating (and has a min. size).
The paths are to "plain" so i would rough them up and curve them a bit (the chinese villages still can have these straight paths as it it their style)



For the Trees i came up with a cool system, so i can make my good looking trees:
When the trees are generated, the are generated with the leaves that decay if there isn't a trunk nearby. BUT the don't get updated, so they won't decay until someone chops down the tree so the leaves get updated block by block.
That way i can make leaves that only connect vertical to other leaves. (If block updates are caused by every block in a 3x3x3 are around the block)

Then the custom one:
Like the 1.8 custom terrain thing, where you can adjust the noise and stuff by hand

I played around with it and i now have pretty good knowledge of terrain generation
and what kind of things lead to what terrain style so i could "configure" those generators (i can't code themTongue)

Now i like to hear your opinion...
Reply
Thanks given by:
#2
Oceans rare? 70% of the earth is oceanTongue
Rocks and tree trunks on the ground does sound pretty cool.

Big trees doesn't always mean better. I've seen some people building huge trees, but I didn't really like them. I'd say the jungle trees we build in the gallery server is about the maximum size that might still look good.

I really like the biome transition, but I don't think it would look good with certain biomes (like rivers).


I do really like the idea of a realistic generator. Maybe we could make it a side-generator next to the Composable generator.
Reply
Thanks given by:
#3
If you want to have a dithered biome boundaries, it should be possible to code that as a biomegen filter - it will use an existing biome generator to generate the biomes, and then make the dithering for the boundaries.

Note that even vanilla (and we as well) actually do trigger a block update for 50 random blocks in each chunk every tick, so the trees *will* decay even without the players touching them. And even if they didn't, touching a single leaf block could then cause the entire forest to update in your approach, which would be rather weird.

Be careful with larger structures. They will cause the terrain generator to run much slower, because it will need more adjacent chunks to generate a single chunk. Right now it's balanced - generating one chunk with trees requires generating a 3x3 area of chunks worth of terrain composition, which in turn will require a 5x5 area of chunks worth of biomes (because the terrain composition averages values between biomes). If you make a tree larger than 16x16, you suddenly triple those - for a 17x17 tree you'd need a 5x5 area of terrain composition and thus 7x7 area of biomes. This will get slow.

With our generators you can already adjust most parameters by hand. Do you think there's a parameter that you'd like to adjust and it's not available in the INI?
Reply
Thanks given by:
#4
@STR_Warrior
I agree on the trees, i expressed myself wrong...
And the biome transition was meant to be on diffrent-block-based-biomes, like transition between desert and plains, or taiga and plains, so it isn't cut-off

@xoft
Well, i saw people using sort of my method with their custom tree gallerys (i don't know how they do that, but i thought it was like this)
By large trees i don't mean wide trees, i mean tall trees (where it makes sense, like on extreme hills you could definetly put some Pine trees at the bottom or at some flat places, not at the top)
Reply
Thanks given by:
#5
Oh and things that i think would be nice to adjust is the X- , Y- and Z-Noise...
Reply
Thanks given by:
#6
There is no such noise in MCS. We have one single 3D noise for the terrain generation; there's only the wavelengths / frequencies for each direction that you can set, but those should already be good enough to match Vanilla, more or less. If you want to play around with those, set your shape generator to Noise3D, clear all the other settings, let the server regenerate your world.ini and play with the Noise3D params from there. Consider that shape generator to be single-biome, so try to optimize for one biome.
Reply
Thanks given by:
#7
Hmm.. Can't get it working. Can't find the shapeGen option and if i just write ShapeGen=Noise3D in the generator settings in the world.ini there's nothing diffrent... Btw what kind of noise is it generating? Simplex or Perlin?
Reply
Thanks given by:
#8
ShapeGen has been added rather recently, make sure you have up to date sources.
Noise3D shapegen uses three 3D octaved Improved-Perlin noises - two as volume noises and the third to choose between those two. Plus there's a 2D noise used as an additional height.
Reply
Thanks given by:
#9
I have a really cool idea for the generators:

this means re-writing everything, i know, but it will make adding new biomes, trees, etc soo much easier, so here we go:

We make a new file called "biomes.ini" ore something, and there we can add all biomes like so:
[Name]
temperature: // defines wether it snows, rains or neither and which biomes can be generated next to it (warm biomes next to warm, etc)
treetypes: // defines which trees will be generated
treedensity: // defines how much trees should be generated (jungle has a lot, savanna has nearly no trees)
noise: // defines, how much noise will be added (so it changes the looks, like beeing flat or hilly)
features: // defines, which features CAN be generated in this biome (villages, strongholds, etc)
biomeborder: // some biomes (like jungle edge) can only be generated next to the jungle biome, so you would type in jungle if this biome would be
// jungle edge, otherwise type "-1"
ores: // defines, which ores can be generated (neded for e.g. emeralds)
biomeflag: // the major problem with this is, that the server needs to send the biome to the client (for the f3 screen), this option defines, which biome is sended to the client
[...]

that way you can easily add new biomes to the generator

then we have a "trees.ini" ore something for trees:

[Pine]
1:[blueprint]
2:[blueprint]

[MegaPine]
...
and so on, or similar to that, that way you can easily add your own trees

then we could have some files like the trees.ini for features like strongholds etc. although it will be hard to make a connection between those.
I mean you could easily define houses or paths, but how could you tell the generator that it should generate it with lots of other houses? (ideas?)

would be nice if you could tell me if you are ok with that Smile
Reply
Thanks given by:
#10
I had something like this in mind when I created the Gallery server.

The biome definitions don't make much sense, because the client has a limited set of hard-coded biomes and the server needs to send the biomes to the client, so we can't really define any new ones. So what's left of your biome configuration is the ability to specify per-biome rules for spawning structures - trees, ores, villages, maybe more later.

I'll give you a counter-proposal to ponder:
Let's add a couple of folders to the server's executable folder - "Trees" and "Villages". Inside those there will be definitions for:
- groups of trees. Each group will have a list of individual tree images (blueprints) and may have a limit on the biomes, terrain height, top block etc.
- groups of houses. Each group will have a list of individual house images (blueprints) and may contain an override for the road blocktype and perhaps other village generator parameters relevant to a single village (Density and MaxDepth come to mind)
I'm not specifying the exact format on purpose, we can discuss it later, this is just for the idea.
Then in world.ini you could specify, as generator parameters, the groups of trees and groups of houses enabled for this particular world.

This enables several things:
- download and install new groups when they become available, as a whole group, rather than having to edit a config file
- re-use the same group across multiple worlds
- predefined groups may be hard-coded into the server data-wise, but could be turned off (>>Don't want the Japanese village? so turn it off in world.ini, as simple as that<<)

However, there's one big thing to consider: Someone has to code all this. And that someone won't be coding other stuff at that moment. And we're really needing the other stuff right now. I think the generator is okay now, unlike the AI or the networking or the Lua API or the server stability.
Reply
Thanks given by:




Users browsing this thread: 7 Guest(s)