So No Man’s Sky is out, and everyone is talking about how “big” it is in terms of playable gamespace. Way back in 2010 I did a video talking about how FUEL was the “Biggest Game Ever” according to the Guinness Book of World Records. (With a qualifying asterisk that it was merely the biggest on any console.) so I guess now is a good time to revisit the topic.
Having said that, talking about the “biggest” or “best” or “smartest” game ever is a ridiculously troublesome and unrewarding task, because you’re just opening yourself up to death by a thousand quibbles.
I made that video because I love talking about procedural worlds. I love talking about how they’re built, how we explore them, how to fill them with interesting content, and the unique rendering challenges they introduce. Which means that for me, that video has officially the Most Annoying Comment Thread on YouTube. Because none of those people want to talk about any of that.
To this day the video is still getting idiotic objections from people who are literally arguing with the title while ignoring the content, timing, and premise of the thing. Usually they do so by typing a one-word comment, which is the name of some game they think will “gotcha” my video. Often, they do this in ALL CAPS. If they’re a really special snowflake, maybe they’ll follow-up with the words “(((mic drop)))”, indicating they believe theirs to be the full and final end of the comment thread, ignoring the several hundred other people who already gave the exact same idiotically wrong answer.
This video was made in January 2010. Minecraft as we know it wasn’t really a thing yet and it wouldn’t have “infinite” terrain for several more months.
DAGGERFALL. nuff said.
It’s called the “largest on any CONSOLE” for a reason, which is that this qualifier rules out stuff like Daggerfall. While interesting in its day, an endless flat plain of copy-paste towns isn’t really addressing the central problem of creating terrain detail. If Daggerfall is our standard of “largest”, then we can easily beat it by creating a gameworld with a single object for scale (say, a post box) and then extendending a flat plane of repeating grass texture all the way out to the maximum values allowed by floating-point numbers.
EVE! ((mic drop))
(Or some other space game.) The most annoying answer. It’s like pointing out that Stig Severinsen held his breath for 22 minutes and then some idiot rolls his eyes, saying that’s not a big deal because sperm whales can do it for 90. Or they claim Olympic sprinter Usain Bolt isn’t very fast because he’s slower than NASCAR legend Dale Earnhardt. You can’t tell if the person is trying to be annoying or if they’re genuinely so stupid they can’t tell that the comparison makes no sense.
I realize “stupidity and ignorance as performance art” is nothing new to YouTube, but this particular thread always annoyed me so much more than the typical, “LOL CONSOLEFAG” stuff, because it exists in place of a discussion I care about. I don’t mind that they insult me (which is just YouTube’s way of saying “hi!”) but I do mind that I have this stupidity instead of an analysis on what games are big and what goals or criteria we might use to decide which games “count” and which ones don’t.
I think this frustration has kept me away from the topic for too long. Since this is a post and not a YouTube video, we should be goodAside from the smart-asses who won’t be able to resist posting YouTube-style nonsense ironically. I know you were already working on your comment in your head while reading this. This ain’t my first rodeo.. So let’s talk about how big NMS is really is.
My original video began with this image, showing how large Oblivion (the game, not the realm) is:
Just to avoid confusion, the game is called Oblivion but the place depicted on the map is called Cyrodiil. At any rate, I remember that world feeling pretty big when I played it way back in 2006. But then we compare that to World of Warcraft:
Obviously this map doesn’t include the expansion realms. Then again, it’s also mostly ocean. Still, the point stands that “big” Cyrodiil would fit many times within the landmass of pre-expansion World of Warcraft. And now we compare that to FUEL:
While the Warcraft map was mostly water, the FUEL map is nearly all content.
At this point it would be natural to show a map of No Man’s Sky and depict how much larger it is than FUEL. We can’t do this for two reasons:
- The landmass of No Man’s Sky is broken into many planets and so there is no single map that can show the whole thing.
- The two game worlds are so far apart in terms of scale that it would be literally impossible to depict the difference the way we did with the previous maps.
So that’s why we can’t compare the two. But we’re going to do it anyway. In the process, we’re going to need millions of smartphones. I’ll explain that bit later. But first…
Interesting-ness is more important than square kilometers.
We need to establish our ground rules or we’ll end up in a bunch of pedantic arguments arising from different assumptions. Our goal here isn’t just to make the “biggest” world in terms of cubic volume. As the smart-asses pointed out when they bought up EVE, it’s pretty easy to make a big gameworld set in outer space. Just make a skybox of fixed stars and stick the user’s camera in the center. There! You made a game AS BIG AS THE WHOLE UNIVERSE! Or better yet, make a text adventure where the player has a machine that will whisk them away to alternate dimensions. They can’t explore any of them, but there’s a little readout on the machine that says which numbered dimension they’re in. Now you’ve made a game that’s BILLIONS OF TIMES LARGER THAN THE UNIVERSE!
Our goal isn’t mindlessly marking out vast stretches of empty cubic volume, our goal is to make space that the user will find inherently interesting to explore. That’s obviously a nebulous definition and leaves way too much room for smart-asses to derail the exercise, but there’s no getting around that. “Interesting” is not a fixed threshold. Back in 1996 lots of people found the world of Daggerfall “interesting”, but it doesn’t hold up at all today.
My own measure isn’t in parsecs or square kilometers, but in time. As in, “How long can the average player explore before they feel like they’ve seen enough?” It’s a bit like looking into a kaleidoscope. It’s technically capable of an infinite variety of images, but in practice it’s entertaining for about two minutes. You could make the device more interesting with more colors or shapes, or mess with the mirrors, but ultimately there just aren’t that many minutes of entertainment in viewing random symmetrical patterns of color.
It’s true that time is a really subjective way to measure explorable gamespace, but I think it’s also a much more meaningful measure. It’s the reason we’re making these worlds in the first place. But not only is time subjective, it’s also hopelessly muddled. The lands of Diablo II are randomly generated, but it wouldn’t make any sense to just take the average number of hours played and claim that’s the value of Diablo II’s gamespace. People don’t dump thousands of hours into that game because they can’t wait to see the next randomized version of the Inner Cloister. They’re playing because they’re engaged with the mechanics.
We can’t agree (in absolute terms) what makes a space interesting, we can’t agree on how long a particular game is worth playing, and we can’t agree on where you draw the line between playing a game for the purposes of exploration and playing a game to engage with the other mechanics.
So while I think time is a better measure of what we’re trying to accomplish when we make procedurally generated gameworlds, I can see why everyone insists on measuring worlds in terms of square footage. We can’t agree on any of those other things, but at the end of the day we can at least look at two different numbers and agree that one of them is much larger than the other.
So fine. For the sake of appeasing the bean-counters, let’s compare No Man’s Sky to FUEL.
First, we half-ass some estimates
No Man’s Sky doesn’t actually say how big its planets are. Indeed, the game seems to be afraid of numbers in general. You know this weapon upgrade does “more” damage, but not how much more. You know this ship upgrade makes your ship “faster” but not how much faster. Your shields get “stronger”. Your fuel tank is “bigger”. Your scan range is “increased”. Your jetpack boost is “longer”. How much? Eh. I guess just spend resources on the upgrade and see if you can feel the difference?
This obfuscated approach to numbers extends to distances. You can’t tell how far away something is, only how long it will take you to get there at your current speed. This makes it really hard to work out the size of these worlds. If you’ve ever opened up Google Earth and zoomed from the planetary level to the street-level view, you know how difficult it is to keep track of distances during those intermediate steps. Without reference objects, the view from 1,000 meters is a lot like the view from 3,000 meters. You can’t really get a sense of distance until familiar man-made objects pop into view.
So I can’t say how big the worlds are. They vary quite a bit in size, and it’s not even clear what the size range is. Does the largest planet have four times the diameter than the smallest? Eight times? Ten times? Again, without numbers it becomes very difficult to judge. When you warp into a system and see a planet fill your view, you can’t even tell if it’s a huge planet very far away, or a small planet that’s very close. You can sort of take a rough guess based on how long it will take you to get there, but this is muddled by the fact that your top speed goes up by an unknown amount as you progress through the game.
But having visited about 50 planets so far, I have gotten enough of a sense of things that I can say that the smallest planetThat I’ve seen so far. is still larger than all of FUEL. Let’s be extremely conservative and say the smallest planet is FUEL×1 in terms of area and that the largest is FUEL×3. And let’s further assume that these sizes are evenly distributed, so that the average planet size is FUEL×2.
Get on with it already! How big IS it?
As people have been breathlessly saying for months, No Man’s Sky has 18,446,744,073,709,551,616 worlds. That’s a lot of number. That figure might seem sort of pointlessly gargantuan and arbitrary, but it’s actually an important number from a computer science standpoint. That’s 264, which is the highest number you can store in just eight bytes of memoryActually, the highest value PLUS ONE, because computers begin counting at zero..
If you’ve ever played Minecraft you know that worlds have “seed numbers”. That’s a starting value used to feed the random number generator. Each seed gives you a unique world. Note that the values aren’t really related. Seed #5 isn’t similar to seed #6 but radically different from seed #10,000. It’s like asking someone to pick a card from a shuffled deck. The first card isn’t going to be just one off from the secondWell, it COULD be. You get how this works..
So that’s basically how it works in No Man’s Sky. The seed for a planet is an eight-byte value. Give the planet-making code the same seed number and you’ll get the same planet every time. Give it a different seed number and you’ll get something totally different. This is how you get so much output from so little input. NMS takes up 2,806,296,266 bytes on your hard driveAbout 2.6 Gigabytes.. Which means the game can generate 6,573,341,630 distinct planets for every byte of hard drive space the game takes up. It can get away with this because it’s not trying to store all the planets at once. You go somewhere and it just plugs in the appropriate number and gives you the resulting planet.
“But Shamus! How can the game store so many seed numbers? Wouldn’t just the list of planet seeds be larger than most hard drives?”
You’re a clever one. Yes, doing it brute-force like that would indeed be too big. But see, the seeds themselves can be procedurally generated. You can think of it as a nested problem: You feed the galaxy generator a seed number based on which galaxy the player is in. Then you use that galaxy to give you a seed for the star system they’re in. Then you use the star system generator to give you the seed for the planet they’re on. Then you use the planet generator to create the scenery around them. So your save only needs to store that you’re at (plantary coordinates) on (planet number) in (star system number) in (galaxy number). This might not be 100% how No Man’s Sky handles it. It’s just an example of one of many solutions to the problem.
So getting back to our comparison with FUEL…
If we were trying to show the map of FUEL in front of the map of No Man’s Sky to give a sense of their diverging scale, then we could create a map where every pixel represented a single planet. That would call for an image 4,294,967,296 pixels on a side. Obviously you can’t fit an image like that on a standard 1080p monitor or television. If you wanted to show a 4,294,967,2962 image and you wanted to be able to display every pixel at once, then you’d need a bank of screens that’s 2,236,962 displays across.
According to this site my LG G2 phone is about 139mm wide. So imagine we went out into the desert and put out a carpet of these phonesBut not mine, because I’m busy using this one and you can’t have it. and set each one to display a small section of our NMS map. You’d have to drive about 310 kilometers to get from one edge of this phone field to the otherThis field won’t actually show the whole image, because phone screens 16:9. So the bottom of the map will be cut off. Don’t worry, those pixels represent all the dumb boring planets nobody cares about.. But you shouldn’t, because these phones are fragile and your car will crush them.
Anyway, so now you have a carpet of phones about ten times the size of Rhode island. All those screens are being used to display a single image. Every pixel represents just a single possible world in No Man’s Sky. But if you go to the very middle of the Smartphone Plains and find the middle-most phone, you can see our comparison map of FUEL.
It’s half a pixel.
Again, this is assuming that the average world size is double the size of FUEL, which was a very conservative estimate.
So yes, No Man’s Sky is ridiculously big in terms of area. But to me that’s not nearly as impressive as the actually impossible-to-measure interesting-ness of these worlds. Like I said on the podcast this week, this game is a technological marvel. Not because of its size, but because of the way it merges these coarse numeric inputs and turns them into varied, aesthetically pleasing worlds.
 Aside from the smart-asses who won’t be able to resist posting YouTube-style nonsense ironically. I know you were already working on your comment in your head while reading this. This ain’t my first rodeo.
 That I’ve seen so far.
 Actually, the highest value PLUS ONE, because computers begin counting at zero.
 Well, it COULD be. You get how this works.
 About 2.6 Gigabytes.
 But not mine, because I’m busy using this one and you can’t have it.
 This field won’t actually show the whole image, because phone screens 16:9. So the bottom of the map will be cut off. Don’t worry, those pixels represent all the dumb boring planets nobody cares about.
Pixel City Dev Blog
An attempt to make a good looking cityscape with nothing but simple tricks and a few rectangles of light.
The Strange Evolution of OpenGL
Sometimes software is engineered. Sometimes it grows organically. And sometimes it's thrown together seemingly at random over two decades.
Good Robot Dev Blog
An ongoing series where I work on making a 2D action game from scratch.
DM of the Rings
Both a celebration and an evisceration of tabletop roleplaying games, by twisting the Lord of the Rings films into a D&D game.
A stream-of-gameplay review of Dead Island. This game is a cavalcade of bugs and bad design choices.