CivClassic / RealisticBiomes

Minecraft plugin that limits plant growth and animal reproduction to their naturally occuring biomes, or reasonable ones for plants that do not occur naturally. Built for Paper 1.16.5
MIT License
1 stars 12 forks source link

Random tree generation algorithm #7

Open Maxopoly opened 4 years ago

Maxopoly commented 4 years ago

For generating random trees, integration into the existing code could be done by me if needed.

Xavter commented 4 years ago

There are many ways to generate random trees, and it seems there are many attempts fleshed out in open source code across the internet.

L-System trees have been cool in non-voxel tree generation, and it seems Minetest has used them to surprisingly good effect: https://dev.minetest.net/L-system_tree_examples https://dev.minetest.net/minetest.spawn_tree

Minetest also had a mod which implemented a different but well thought out approach to tree generation in Lua, with wisdom about tree placement as well: https://www.reddit.com/r/proceduralgeneration/comments/2t2dyy/trees_in_minecraft_like_worlds_help/co2kv1k/ https://github.com/minetest-australopithecus/minetest-australopithecus-utils https://github.com/minetest-australopithecus/minetest-australopithecus-terragenitor

The same guy also spoke to Veloren devs recently about tree generation (which currently places premade models) meaning we could probably get him in the Civtest server at least: https://www.reddit.com/r/Veloren/comments/9qnsty/improving_mountains_surface_gradients_and_tree/e8b6el3/

A simpler procedural tree generation showcased here seemed interesting, though I am less happy compared to the Minetest trees: https://github.com/mgerhardy/engine image image

Another procedural algorithm based around trunks, branches but which also didn't create desirable trees: https://github.com/tyronx/vintagecraft/blob/master/src/main/java/at/tyron/vintagecraft/WorldGen/Helper/DynTreeGen.java http://vcraftwiki.striver.net/wiki/List_of_Trees

CubeWorld does trees by randomly generating features at certain heights of the tree, and I like the results: image

I'm inclined to seek input from Bobby_Bonsaimind and Rube of Minetest about tree generation and report back afterwards.