2 minute read

Have you ever truly marveled at the sheer scale of some video game worlds? Some video games have truly huge playable areas, as in tens or hundreds of square kilometers - the size of a real city. If you’ve ever played games like Call of Duty: Warzone or Ark: Survival Evolved, you know what I’m talking about. It’s crazy to think that those games have designed maps!

I’d like to learn the secrets to creating vast video game worlds. I am many things, but a designer I am not. I can tell you whether I think a world looks cool but if you ask me to design a great one (especially a huge one), I’d fail miserably. What I am, is a programmer - one with an aptitude and interest in mathematics. So instead of designing great worlds, I’d rather design the rule sets that generate great worlds. This feels more pleasant to me, something closer to the math and physics I loved in University, and less like the theater production class I found so boring.

This approach is called Procedural Generation and there are quite a few video games that do this. Minecraft is the most well-known of this type. Minecraft worlds aren’t technically infinite, but they’re practically infinite. Worlds in the Java Edition are an astounding ~30 million blocks in each horizontal axis, about 9 trillion square meters (76% bigger than the surface area of the entire Earth)! Games like No Man’s Sky take this to a whole other level. NMS has 256 explorable galaxies, each billions of planet-filled star systems. In total, the NMS universe has a staggering 18 quintillion unique and explorable planets (2^64)! Again, technically not infinite but so large it’s functionally the same.

That is what I’m after. I want to understand how to create these worlds and use that knowledge to build a unified framework that can work at any scale, a Principia Omnium if you will. It’s an ambitious goal, and I may not get it exactly I want, but I’ll learn a lot along the way. I’ll be documenting this mission through a series of blog posts, both to help solidify my understanding and to share it freely. Who knows, maybe someone will find this information useful or interesting. You can check the status of my journey in the roadmap below, and I’ll come back to update this post as I learn.

Updated: