Procedural Generation

As a team of (currently) just two developers, people often ask us how we can possibly create a game as expansive as Spycursion. If you ask someone who doesn’t make games for a living about their idea of what an MMO is, the first game to pop into their head is likely to be World of Warcraft — a 16-year-old behemoth created by a company with over 4,000 employees and billions of dollars in revenue.

Fortunately for us, Spycursion is not World of Warcraft, nor is World of Warcraft synonymous with the MMO genre!

In order to “catch up” with the big players, indie studios making big games need to be creative about where to focus their efforts and where they can “cheat.” This is where procedural generation comes in. To illustrate procedural generation, I’d like you to walk through a short exercise with me: Grab a pencil and paper and draw a house. Your house should have four walls, at least one door, at least one window, and a roof. The other details are up to you.

Go ahead and draw that house now. I’ll wait.

… You don’t seem convinced that this has anything to do with procedural generation. That’s okay, do it anyway. 😉 When you’re done, send this blog post to a friend and have them draw a house as well, with the same specs. (Yes, it’s relevant, I promise.)

Now compare the two houses you and your friend have drawn. Unless you and your friend are part of the same hive mind, your two houses should look at least somewhat different. And it’s easy to understand why; the key lies in that phrase, “the other details are up to you.” Your house could be in 2D, or if you’re good, maybe it’s 3D. Maybe your house has a chimney, maybe it has landscaping. Maybe the front door has a door handle, or maybe you forgot that rather important feature. Maybe you went on an interior decorating binge and drew stuff inside the house. Maybe your house has a balcony, or an attached garage, or a rooftop garden. Maybe your house looks like it was drawn by a chimpanzee. Maybe you are a chimpanzee.

Point is, if you were to assign this task to 100 chimpanzees, you would get 100 different houses. Add in some roads, and you have a neighborhood. Have the chimps draw 100 different neighborhoods (with different specifications like density, age, residential vs. commercial zoning, etc.) and you have a city. Now replace the chimps with a computer, and there you have it — procedural generation!

With the right algorithms, a small studio can use procedural generation to create game worlds that look like this…

Attribution: By Source, Fair use, https://en.wikipedia.org/w/index.php?curid=39980945
.kkrieger (2004)

Or this…

Attribution: https://www.flickr.com/photos/playstationblog/14052569021
Spelunky (2008)

Or even this…

Attribution: By Source (WP:NFCC#4), Fair use, https://en.wikipedia.org/w/index.php?curid=47438165
No Man’s Sky (2016)

Spycursion uses procedural generation, in various places, to help generate its “real” world as well as its virtual one. In the last trailer, by contrast, neither the demonstrated city nor the internet were procedural. The city in our Kickstarter trailer was a big hand-crafted grid, and there was only one of it. The “internet” was just a couple of devices. Nowadays, our test version of the in-game internet is a graph of 10,000 devices, and that will be expanded later (and expanded by players, of course). The world can contain up to 300 cities spread across every continent, with the ability to quickly add more, should the need arise.

With the help of chimpanzees algorithms, the two of us are working hard to bring Spycursion’s immersive twin worlds to life. Eat that, World of Warcraft.