Proceed with caution, weird thoughts of a mathematician below...
Ok, so you ignored my warning, never mind.
I thought about the height limit in Terasology.
Basically: what is a chunk primarily?
As of now it's a TeraArray filled with blockIds and a TeraArray is a class with an Array which is indexed to serve as a fake 3d array.
This is, however, not capable of handeling giant or infinite height levels.
Big heights would lead into a massive array which basically is nearly "empty" - meaning filled with air (some big mountains but most of it is air).
So, I have 2 ideas to present:
so long,
Nym
Ok, so you ignored my warning, never mind.
I thought about the height limit in Terasology.
Basically: what is a chunk primarily?
As of now it's a TeraArray filled with blockIds and a TeraArray is a class with an Array which is indexed to serve as a fake 3d array.
This is, however, not capable of handeling giant or infinite height levels.
Big heights would lead into a massive array which basically is nearly "empty" - meaning filled with air (some big mountains but most of it is air).
So, I have 2 ideas to present:
First (not really concerning height problems)
What about breaking up the inner structure of chunks? Instead of making a 3d array, we make a 2d array filled with pillars! Each pillar holds the values of the blocks in it and some special values like temperature, humidity and so on. This way, we'd have some more values per x-z coordinate but would save looking up the initial noise when we need the values.
Second (now it's getting seriously freaky)
I thought about the very high heights.
Basically, I would suggest a hardlimit for Terrain generated by the game itself. We could also make some exponential falling of the expected height but I think this would lead to some serious artefacts.
For the infinite height we have to use lists in some way.
Using a list for the complete pillar would expectably be very slow...
So, we have to somehow combine arrays and lists. Here is very much potential for discussions, I thought of the following possibilities:
- have an array until some heigth, maybe oceanlevel + 30 or sth similar and proceed with the list
- have an array until the highest point of this pillar and save everything beyond in a list
- make basically the same as one above but on unloading the chunk rewrite the array if necessary to the new maxheight (also possibly smaller array)
Ok, I'm ready and geared up, waiting for the criticism so long,
Nym