Jump to content

  • Curse Sites
Become a Premium Member! Help
Latest News Article

Cubic Chunks: Reduced lag, infinite height, and more [Over three thousand supporters!][Updated March 20]

increased height

  • Please log in to reply
4325 replies to this topic

#1

Calacbolg
  • Minecraft: Terashock

Posted 26 February 2013 - 10:49 PM

*
POPULAR


Tommo, a dev for MCPE has replied here.



This system will not increase lag! The entire point of this system is to avoid the lag caused by higher height limits.



Table of Contents:

Overview

The benefits
The features
The disadvantages
The problems

Changes in how things work

Data storage
Changes to world features
Coping with sunlight
Changes to servers
Render/Load distance alterations

Frequently Asked Questions
Proof of Concept
Gallery
Supporting this suggestion
Special thanks

Spoiler: Tl:dr



Overview:

In Minecraft, the sky is the limit - literally. It doesn't matter how many thousands of blocks a player has traveled, or what dimension they're in, or even if they're playing in creative or survival, the highest they can ever build is up to a height of 256. Why is that? If Minecraft can have a world that's infinite in the north, in the south, in the east, and in the west, why can't that world be infinite up and down too?

In Minecraft's earliest days, in Classic and Indev, the world was not infinite in any direction. This was because the entire world needed to be generated at the same time, and the entire world needed to be simulated at the same time as well. This led to a conundrum - the bigger the world, the more it lagged.
Notch didn't like this. He knew his players liked to explore and build large creations, so he found a way to make the world truly infinite. When the Minecraft Infdev came out, it brought with it truly infinite worlds. Suddenly, players could travel hundreds of thousands of blocks in any direction, and never encounter a barrier, or become too laggy.
The Infdev update brought about a very large change to Minecraft worlds to accomplish this feat. For the first time, instead every world being just a single huge piece, they were broken up into a two-dimensional grid of pieces, called chunks. Through breaking the world up into pieces, this 'chunk system' enabled infinite worlds by letting Minecraft create new pieces and simulate them only when it needs to.

Why does that not apply to the vertical axis? Because the type of 'chunk system' Minecraft uses right now is a linear one, which, by using only a two-dimensional grid to map out chunks, means that it is impossible for chunks to stack on top of one another, and by extension, meaning that a single chunk must cover the entire vertical space. This brings back the problem that the Infdev update was supposed to eradicate, now only with chunks, instead of an entire world; the bigger a chunk is, the more laggy it is. You can't just increase the height limit and make chunks taller, because it will become laggier, and laggier, and laggier to do it.
That's why, to fix this, Minecraft must change over to a cubic chunk system. Under this system, 163 block chunks are aligned on a three-dimensional grid, completely eliminating maximum height as an aspect of lag.

The immediate benefits:
•Minecraft worlds become as virtually infinite vertically as they are horizontally: The absolute limit being Y = ±30,000,000.
A large FPS increase: Alpha testers report an FPS increase of 100~200%.
Increase in running capability: Computers running Minecraft on Tiny render distance will handle only 30% the blocks they do now.

The possible features:
Spherical render/load distance: Reduce handled blocks by up to 30% by cutting corners made of unneeded chunks.
Server chunk occlusion/exclusion: Reduce bandwidth usage and defeat hackers by only sending data for visible chunks.
•Three-dimensional biomes: Save biome data per chunk rather than per block column, create volcanoes with magma chambers, underground rivers, tropical skylands floating over icy taigas, and more.

The disadvantages:
•Unloaded gravity-pause: Falling non-player entities and fluids will be forced to pause their fall if they reach unloaded chunks, but will resume falling when those chunks are loaded.
•Slow falling-pause: Players with slower computers and smaller render distances will have falling occasionally paused as they fall into unloaded chunks, until new chunks can be loaded.

The problems:
•Current sunlight and rain calculation methods cannot work with infinite vertical space: The solution to this is described here.
•Current BiomeDecorator cannot work with multiple vertical chunks simultaneously: The BiomeDecorator code must be altered to function correctly with this, or removed.
•Current cave generation method is executed an extra time for each vertical chunk created simultaneously, leading to lag spikes on world generation: Cave generation's method must be altered to suit this system more.
•Current grass/dirt generation algorithm forces additional chunk requests when chunks are loaded, causing chunks to load slower than they should: This algorithm must be replaced with something else.



Changes in how things work:

Obviously, the implementation of this new chunk system will change quite a few things. These changes are mostly either necessary or in the interest of increased efficiency. Such changes are categorized and explained below.

How worlds will be stored:
Spoiler:

Changes to terrain, ores, etcetera:
Spoiler:

Coping with sunlight:
Spoiler:

Changes to servers:
Spoiler:

Render/Load distance alterations:
Spoiler:



Frequently Asked Questions:

Spoiler: FAQ



Proof of Concept:





Gallery:

Spoiler: Some REAL mountains with the Cubic Chunks mod
Spoiler: A 400 block tall scale model of the Eiffel Tower with the Cubic Chunks mod
Spoiler: A mountainside with an experimental engine using Cubic Chunks designed by Nocte. 960 block view radius, and 30 FPS.
Spoiler: A different view of the mountainside with the same engine by Nocte. This time, with 1600 block view radius and 15 FPS.
Spoiler: A video demonstrating Nocte's engine.



Support & Submission to Mojang:

If you support this, hit the rep button in the bottom-right corner of this post. It is the only good way of accurately measuring support here.

If you wish, you can put the following banner, courtesy of laz2727, into your signature. It helps to attract support from all parts of the forum!
[url="http://www.minecraftforum.net/topic/1707097-cubic-chunks-infinite-height-elimination-of-x-ray-and-more-60-supporters/page__st__0"][img]http://img833.imageshack.us/img833/443/hov.png[/img][/url]
Note: This signature will break unless you toggle the edit mode when pasting the above code over, by clicking the button in the very top-left of the signature editing box.

Posted Image


Please help us get word out of this suggestion! Share this with your friends, with Minecraft celebrities if you're familiar with them, or even with Mojangsters like Jeb or Dinnerbone! (Do not share this with Notch. Notch doesn't work with Minecraft anymore.)

The purpose of this suggestion is to have Cubic Chunks implemented in Vanilla. Being available as a modification does not fulfill that purpose. The modification featured in this suggestion is to act as a proof-of-concept only.



Special thanks:
Barteks2x, for updating the Cubic Chunks mod to 1.6.2.
Azraile, for posting the original suggestion and allowing me to take ownership of it.
Nocte, for helping resolve flaws and designing Hexahedra.
aaronfranke, for helping resolve flaws.
PanJouda, for creating the original banner.
Flexico, for creating the predecessor to the current banner.
laz2727, for creating the current banner.
Robinton, for creating the original Cubic Chunks mod.
The_Watchman13, for answering all those stupid questions so I don't have to.



Note: Many calculations and information can be found among the many posts of this topic. There are too many for me to cite here, but if you wish, you can search for them yourself.

Register or log in to remove.

#2

Azraile
    Azraile

    Redstone Miner

  • Members
  • 670 posts

Posted 27 February 2013 - 06:23 AM

*
POPULAR

16x16x16 is a little to small to say the least.....

32x32x32 is the same number of blocks as the 16x16x127 limit they use to use before they they increased the hight limit

And I've not read over it but thank you for putting the idea into better words than I did.   Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
I aim to please ... and occasionally mentally scar.  
"Because it's your right as an American to butcher the English language."
This is my baby, please support her and get her into vanilla:

Posted Image

#3

bebe33
    bebe33

    Lapis Lazuli Collector

  • Members
  • 1034 posts

Posted 27 February 2013 - 06:25 AM

Nicely explained, but poster above posted it first.
Im a master of ideas. And puns.

#4

dillyman2

Posted 27 February 2013 - 06:27 AM

No offence Azraile, but this topic makes a lot more sence than yours. Support.

Posted Image


#5

Azraile
    Azraile

    Redstone Miner

  • Members
  • 670 posts

Posted 27 February 2013 - 06:33 AM

Also don't forget deep ocian biomes.

And for the lighting the idea I had was to simply store the lighting data for the bottom layer of blocks of the chunk above saved onto every chunk... when ever a new chunk is created they create (but not necessary load) new chunks up until they get one where a layer is 100% skylight some where in the chunk.  (ie, creating new land up till open sky)    Any thing that loads say flying islands or ships or the like in the sky won't matter at that point as they would be to high up to cast much a shadow (or could always have been considered to have "moved" into view)

View Postbebe33, on 27 February 2013 - 06:25 AM, said:

Nicely explained, but poster above posted it first.

View Postdillyman2, on 27 February 2013 - 06:27 AM, said:

No offence Azraile, but this topic makes a lot more sence than yours. Support.

I don't mind, and no office.

I would rather it be put better by some one else and get attention than me try and get people to understand and fail a lot (wich is what i've been doing..... most people just don't get it when I explain it x.x)
I aim to please ... and occasionally mentally scar.  
"Because it's your right as an American to butcher the English language."
This is my baby, please support her and get her into vanilla:

Posted Image

#6

Azraile
    Azraile

    Redstone Miner

  • Members
  • 670 posts

Posted 27 February 2013 - 06:42 AM

Oh another idea to cut down on loading new chunks....

After a certen point underground light can't reach down that far so you wouldn't have to create new chunks all the way to the serface. Although you would have to load up a chunk or two for lava/water flows no matter what
I aim to please ... and occasionally mentally scar.  
"Because it's your right as an American to butcher the English language."
This is my baby, please support her and get her into vanilla:

Posted Image

#7

Nocte
    Nocte

    Diamond Miner

  • Members
  • 770 posts

Posted 27 February 2013 - 11:39 AM

View PostAzraile, on 27 February 2013 - 06:23 AM, said:

16x16x16 is a little to small to say the least.....
Bigger isn't always better. Larger chunks cut down on the number of draw calls, but also increase the overhead in all other areas.

While most engines use 163, some do use 323 (the only one I know of is Ephenation). Profiling my own engine showed that the difference in speed wasn't that big, and I felt 16 gave a better balance between speed, memory, and network load.

#8

Calacbolg
  • Minecraft: Terashock

Posted 27 February 2013 - 12:16 PM

View PostAzraile, on 27 February 2013 - 06:23 AM, said:

16x16x16 is a little to small to say the least.....

32x32x32 is the same number of blocks as the 16x16x127 limit they use to use before they they increased the hight limit

And I've not read over it but thank you for putting the idea into better words than I did.
16x16x16 is for simplicity reasons. When converting old worlds. it'll be much easier to cut each existing chunk into 16 pieces than it is to cut each one into 8 pieces and combine the pieces with 3 surrounding chunks.
Additionally, smaller chunks make for more realistic representation of the view radius.

View PostAzraile, on 27 February 2013 - 06:42 AM, said:

Oh another idea to cut down on loading new chunks....

After a certen point underground light can't reach down that far so you wouldn't have to create new chunks all the way to the serface. Although you would have to load up a chunk or two for lava/water flows no matter what

I've already derived a solution to the sunlight issue.
Posted Image

#9

Azraile
    Azraile

    Redstone Miner

  • Members
  • 670 posts

Posted 27 February 2013 - 06:50 PM

didn't think of converting worlds .... that dose make it easier ^.^

As far as infinite height and depth goes I don't think it should be truly infinite.

Going up yes.... though eventually you should hit space...  (no air)

And going down you should hit a point where there is almost nothing but lava  (maybe some large crystal chunks floating around in the lava... or geodes  or the like... but you would have to find a way through all the laval sorce blocks
I aim to please ... and occasionally mentally scar.  
"Because it's your right as an American to butcher the English language."
This is my baby, please support her and get her into vanilla:

Posted Image

#10

Unilegger
    Unilegger

    Creeper Destroyer

  • Members
  • 5809 posts

Posted 27 February 2013 - 07:04 PM

Say bye bye to your computer's RAM and processor.

Posted Image

#11

Azraile
    Azraile

    Redstone Miner

  • Members
  • 670 posts

Posted 27 February 2013 - 07:12 PM

x.x   This idea will decress lag... not incress it
I aim to please ... and occasionally mentally scar.  
"Because it's your right as an American to butcher the English language."
This is my baby, please support her and get her into vanilla:

Posted Image

#12

Waterpicker
  • Minecraft: Waterpicker

Posted 27 February 2013 - 07:27 PM

I'll be very direct. Cubic Chunks is implemented in a Voxel Game Engine Server/Client called Spout (not spoutcraft or its companion bukkit plugin). Its minecraft emulation Vanilla (ie act like minecraft server or client) an shift the sent chunks on the y-axis to Vanilla Clients allow the extra height and depth to be used. Anyone who want to find out more. Here is a link
Posted Image

#13

Terrorizer231

Posted 27 February 2013 - 07:46 PM

The only problem:  extreme distances will still cause lag, as it is just the addition of a new plane.  The same distance is used (save for that on a coordinate plane, it would be a ray instead of a line) for this new plane--around 9,000,000 times the size of Earth.

And in Xbox 360, Pocket, and Pi editions, it would be worse sence the game engines aren't as strong as on your average computer.
Slenderman is watching you!!! :(

#14

Tobbvald

Posted 27 February 2013 - 07:52 PM

I fully support this idea. And unlike this guy a bit higher up I actually read through it before spewing out comments blatantly screaming of how little he read the post. I am also seeing how this could really improve the lag caused by rendering chunks and could change a lot of opportunities to the better for various heights and depth-values.

+1 support.
Hį͢͟s͏͘͘͢͜H͠͡ơ̵͢͞r̴̷҉̶n͏c̛̀҉̛͘r҉̵o̵͜w̡̡҉͞ņ̶͝e̷̸͘d̷̨͘͟͠m͟͠a̵̢̛͞j̢ȩ̵̛͠s̶̸͘͢͝t̷̢̛͜y̶̢̨͟h̸̴a҉̶͡s̸̢̢͜҉à̴̶̛r҉̷҉̶r̸̛í̵̛͜v̢͏̵e̵͝d̡̀͏̡

#15

Azraile
    Azraile

    Redstone Miner

  • Members
  • 670 posts

Posted 27 February 2013 - 08:22 PM

View PostTerrorizer231, on 27 February 2013 - 07:46 PM, said:

The only problem:  extreme distances will still cause lag, as it is just the addition of a new plane.  The same distance is used (save for that on a coordinate plane, it would be a ray instead of a line) for this new plane--around 9,000,000 times the size of Earth.

And in Xbox 360, Pocket, and Pi editions, it would be worse sence the game engines aren't as strong as on your average computer.

that would be an interesting sight..... downward far lands....   lol

But exstream distances are a problem, but this may actualy let you travel ferther above ground with out bad affects, as the underground won't be loaded/created where ever you go....

no matter how far you go or what you do, with 3d chunks you load less blocks than with the curent 2d block set up because you not loading the intire 256 hight chunk at once..... instead your loading a few 16 high chunks above and bellow you.


Visual exsample:

Loaded chunk: Posted Image

Curent system

Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image

perposed system:



Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image
Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image Posted Image

not a 100% acurate exsample.... but a good way to get the point across
I aim to please ... and occasionally mentally scar.  
"Because it's your right as an American to butcher the English language."
This is my baby, please support her and get her into vanilla:

Posted Image

#16

Nocte
    Nocte

    Diamond Miner

  • Members
  • 770 posts

Posted 27 February 2013 - 08:57 PM

View PostWaterpicker, on 27 February 2013 - 07:27 PM, said:

I'll be very direct. Cubic Chunks is implemented in a Voxel Game Engine Server/Client called Spout (not spoutcraft or its companion bukkit plugin).
Last time I looked at Spout, this was only for the internal representation. The entire system around it (server, network protocol, and client) was still being developed. A vanilla client would always see a horizontal slice of the world. You'd be interrupted with a "Downloading world" screen every time you transition between slices. A bit jarring, but a very clever way to bring infinite height to a client that doesn't support it. :)

Just checked the website, but I can't seem to find any up-to-date info about this. Do you happen to know how far along they are?


(And the opening post needs something all the way at the top to avoid more "hurrrr lag" replies.)

#17

Nocte
    Nocte

    Diamond Miner

  • Members
  • 770 posts

Posted 27 February 2013 - 09:16 PM

View PostAzraile, on 27 February 2013 - 08:22 PM, said:

no matter how far you go or what you do, with 3d chunks you load less blocks than with the curent 2d block set up because you not loading the intire 256 hight chunk at once..... instead your loading a few 16 high chunks above and bellow you.
I posted this illustration some time ago that shows how you can reduce the amount of loaded chunks even further.

#18

Calacbolg
  • Minecraft: Terashock

Posted 27 February 2013 - 11:04 PM

View PostTerrorizer231, on 27 February 2013 - 07:46 PM, said:

The only problem:  extreme distances will still cause lag, as it is just the addition of a new plane.  The same distance is used (save for that on a coordinate plane, it would be a ray instead of a line) for this new plane--around 9,000,000 times the size of Earth.

And in Xbox 360, Pocket, and Pi editions, it would be worse sence the game engines aren't as strong as on your average computer.

The key word is, extreme distances 'still' cause lag. Teleport to X coordinate 32 million in a world in single player, and that world essentially becomes unplayable, it is by no means something unique to the Y axis. I did say 'virtually' infinite. If you manage to climb or dig 250000 blocks, which is the absolute MINIMUM to experience any sort of coordinate-related lag, I APPLAUD you.
Posted Image

#19

jak0theshadows

Posted 27 February 2013 - 11:22 PM

I don't think I agree with the idea of infinite vertical space because 1. the neather is supposed to be under the overworld, hence bedrock at the top and bottom of the neather and overworld respectively.  And 2. there should be a hight limit because as pointed out before you would eventualy reach space.  Othere than that I very much agree with the 3D chunks and inreasing the hight limit just not infinitely.

3/4 support.

Posted Image


#20

Azraile
    Azraile

    Redstone Miner

  • Members
  • 670 posts

Posted 28 February 2013 - 12:14 AM

View PostNocte, on 27 February 2013 - 09:16 PM, said:

I posted this illustration some time ago that shows how you can reduce the amount of loaded chunks even further.

I was thinking about posting something similar too but thats a way better one repost it here! maybe they can move it to the main thread.....  please fill free to post the stuff here as people as some people are to lazy to follow links.

And thank you Calacbolg and Nocte, I've gotten so little support with this idea over the past few years... mainly because so few understand it..... I'm so happy to see people not only understanding it, but taking it further and applying actual codding knowledge to it while putting it in ways other people can understand!!!  

LOL when I have minecraft working on a computer that can run it well I'll have to have statues/pictures dedicated to you two in my base =p   lol
I aim to please ... and occasionally mentally scar.  
"Because it's your right as an American to butcher the English language."
This is my baby, please support her and get her into vanilla:

Posted Image