Tags

, , ,

This post is part of a series that Leo and I are developing about teaching math through Minecraft. The topics of this post are (a) estimation, (b) giant numbers, (c) binary [as in computer representation, and powers of 2], and (d) thinking in scientific/exponential notation. You can see some of our other posts related to Minecraft math here, herehere, here, and here, and we’re working on two big ones that will be posted soon.

Leo has been playing a lot of D&D recently (somewhat instead of Minecraft, which is probably a good thing). He likes to play the role of DM, but he’s not great at creating concise, solvable challenges with good clues, so the players end up wandering around in an infinite space, wondering what to do next. 

I hypothesized that he prefers this of world because this is how Minecraft works; The size of the Minecraft world is indirectly constrained by the 64 bit arithmetic limits of the computer. The worlds are 60M blocks wide in each of the X and Z directions (the ground coordinate space in Minecraft is XZ; Y is up and down; it’s only 256 blocks in the up and down direction, Y). Actually the world only goes to 30 million blocks in each direction, not, as one might expect, 2^63, which would be 9,223,372,036,854,775,808. The reason they limit the world to only 30M in each direction (60M edge to edge) is that graphics and physics algorithms, which depend upon real value math start to break after that point, and weird stuff starts happening, like the hit boxes surrounding blocks are anomalously separated from one another letting you you fall through invisible cracks, and such like nonsense.

Regardless, a 60M block squared space is plenty big. Too big, in fact! Each world is so big, and there are so many possible worlds, that Minecraft should probably be called Wanderworld instead! 

So, how big should Minecraft be? How would we figure this out?

We started with the hypothesis that Minecraft would be more interesting if the density of “interesting” worlds was high enough that the community of ~100 million active players could effectively explore the entire universe, and share interesting findings with one another. One way of approaching this is to ask: If every active Minecrafter was in the same world, how much space would they each have?

Mojang claims that there about 100M active Minecrafters. We’re not going to worry about what “active” means, and just take Mojang’s word for it. That’s 1e8 players. And the world is 60M^2 square blocks (sqb), which is ~6e7*6e7 = ~3.6e15sqb. Divided by 1e8: 3.6e15/1e8=3.6e7sqb/player, and the square root of that is 6e3, or 6,000blocks. So if every active Minecrafter was spread across a single world, each one would have a 6k-by-6k space to explore and build in. The maximum flight speed in Minecraft is about 10 blocks/second, so it would take you ~6000/10=~600sec=~10 minutes just to fly across your space, much less do anything in all that space! Why would anyone need more?!

Unfortunately, the Minecraft universe is WAY bigger even than that, because the world generation algorithm is controlled by a 32 bit randomly generated random number seed. So there’s actually ~4.2e8 (precisely: 4,294,967,296) of those 3.6e15sqb worlds, so the total Minecraft space is ~1.5e24 square blocks! 

Since a Minecraft block is supposed to be about a cubic meter (sq. meter since we only care about surfaces here), it’s interesting to think about how to compare this with the REAL Observable Universe (ROU), but it’s not entirely clear what the right comparison is. The radius of the ROU is ~4.5e26 meters, so its 3D volume (using 3 here for pi in all cases) is (4/3)pi*(r^3) = ~3.6e80 cubic meters. But that’s not quite the right comparison because every Minecraft world is the same size, so it’s really more like you have a giant cylinder of the radial ROU circle. That radial circle is pi*(r^2)  = ~4e15 square (1 meter deep) blocks, and stacking 4.5e26 of those on top of one another is ~2e42 cubic blocks. This  cylindrical ROU is about 2e24/2e42 or about 18 orders of magnitude larger that the Minecraft universe, including the random seeds. Okay, so it’s not even close to the size of the Real universe, so it’s not THAT ridiculous, still….

(By the way, along the way to all this, we noticed a useful fact, which I’m sure is not novel, but is at least vaguely interesting. Turns out that because log(10,2) = almost exactly 0.3 (actually 0.3010…), by the trick for computing logs of random bases: log(b,x)=log(n,x)/log(n,b), if you use n=10, which is easy to estimate for any decimal number, turns out that the number of bits needed to represent any number is approximately the number of digits in that number number divided by 0.3 (or times 1/0.3 i.e., times 3.333…). So, let’s say that there are 80 million Minecraft players, being 1e8, or even better, using the first digit in the tenths place, and backing down one order of magnitude, that is: 8e7, and reversing those to 7.8 (because you care more about the order of magnitude than the first digit, which is actually just a correction), the number of bits you need to represent these uniquely is about 7.8 * 3.3 = ~25.75, or about 26, and in fact, 2^26=~67million, which is pretty prefect! Although in reality we’d want to err on the high side at 27 bits.)

Okay, so back to the question how to right-size Minecraft.

So, let’s say that the worlds are only going to be 6k square, and we’re going to make the topo generation algorithm always create interesting topographies and biomes in each of these worlds, and we want to allow, say, a reasonable number of players, say, 32, play each of those in order to explore it fully for it interesting properties. How big does the random seed need to be? Well, that’s 1e8 players / 32 (close enough to 33 that 1/3rding works well) = ~3.3e6 worlds, and by the above magical algorithm, that’s 1+(6.3*3.3) =21 bits, and just to check: 2^21 = 2e6 * 3.2e1 = 6.4e7 = 65 million, which is just about right!

Whew!