Next Level: Making Games That Make Themselves

A book about the science, art and magic of procedural generation.

Order links (UK)

Welcome!

This is a small companion site for my book, Next Level, which is all about procedural generation in games. Procedural generation is a term we use for a special mix of algorithms, randomness and human design in game-making. It appears in lots of different games, for lots of different purposes, like generating platforming levels, magical items, unexplored maps, dramatic stories or beautiful music. For example, when you start a new world in Minecraft, that world wasn't designed by hand - it was generated using a series of algorithms and random chance. But it's not completely random either, that would result in terribly boring worlds! The algorithms that make Minecraft's world have been carefully designed, sculpted and tweaked by people. This book is about the delicate balance of human design and random chance that results in these amazing games.

This site contains a few supplementary materials that I reference in the book, and a few corrections I've noticed since the book went to press. If you want to reach out to me directly, you can drop me an email or say hello on Bluesky. And if you want to get a copy of the book for yourself, you can check your local bookshop or find it on Amazon (here's some UK order links).

Illustrations & Figures

All the illustrations in the book, with the exception of the reproduction of the wonderful work by Gillian Smith, were made by me using something called p5.js, which is a really fun tool for making art, games and more with a very nice-to-use programming language. I've included links to all of the code for my illustrations below, which means you can load them up in your browser, edit them and play around with them.

Chapter 3

Chapter 5

Chapter 6

Chapter 7

Bonus Figures

Some figures I made but didn't make it into the book, either because they just didn't quite work, or because I had to cut sections out. I've included a few of the more interesting ones here - the code isn't commented for these, though.

  • Noise Octaves - this was supposed to show the difference between noise functions at different octave levels, but the coverage of octaves was cut from the book (there was just too much to talk about!)
  • Ore Caves - originally I wanted to expand the 2D Minecraft example to show more features being added, but it was taking up a lot of space and some of the features were kinda hard to show. I prefer the Perlin ore vein example linked above.
  • 3D Minecraft - I experimented with visualising Minecraft in 3D at first, but it's very hard to read even on a screen with full colour and good resolution. Converted to 2D, on a page, I felt no-one had a chance of parsing it! This one shows the caves cut out in red, with ghostly white blocks representing the mountains.
  • 3D Minecraft, Alt - I actually think this was an experiment with replicating the Infiniminer demo, I forget, but this is another experiment with rendering 3D worlds. This one isn't so bad, but still not super readable. The white layer is the 'surface' to draw a distinction for the reader. I like how it looks, but no good for the book sadly!

Strachey's Love Letters

In the book I discuss Strachey's love letter generator. Nick Montfort has a delightful reimplementation of this generator on his website here, although I believe it is an extended version with some twists from Nick himself. This is also available in the python programming language from Nick's site, if you know that.

I had originally planned to write a Tracery version of this, but the more I thought about the people who have already done this, the more I worried about simply rehashing this work or further diluting the presence of adaptations like Nick's. For a Tracery version, this lightweight one from Henry Cooke is quite nice. You can plug this into a Tracery-compatible tool, like the one on Kate Compton's website.

I saw some of the original writing by Strachey in Oxford just before starting to write the book, and the pages on display are quite different to the outputs of the program that are often quoted (or remade, as above). One page I saw had Strachey's handwritten grammar, which included more complex phrases and also gendered language (which is notable as the gender neutrality of the love letters is often highlighted when discussing its relevance to the history of sexuality and gender in computing). I've reimplemented a version of this in Tracery, based on his notes (with two minor omissions, one to avoid a mention of suicide(!)). You can find that here, and paste it into Kate's website, linked above.

Corrections and Notes

One of the most stressful things about writing a book is that no matter how many times you read it, no matter how many times other people read it (I had wonderful copyeditors and proofreaders) some small things still slip through. As soon as I got the final copy of the book, I opened it to a random page and almost immediately spotted something that annoyed me! I've decided to collect a few of these here. If I'm ever lucky enough to reissue the book, I'll try and make some of these corrections then.

Chapter 7 - Simulation

My explanation of the unstable rules on page 125 is a little unclear, as it's unambiguous how the rules are applied. One way to think about applying the rules would be like this:



The red line shows the cells we're looking at right now. Then we look at each of our rules to see if the left-hand side matches. It does, so we use the rule's right-hand side to decide what cells will be there next. Then we slide the red line across to look at the next set of cells.



But... there are other ways we could interpret applying these rules. Should the red line area shift over two spots? Do we overwrite new cells if the rules tell us to? The example should've been a little more precise in its explanation. Hopefully you still got the essential idea about grids that are always changing!

There's another small error in this chapter because I didn't give the right instructions to the typesetters, so the two-dimensional grids later in the chapter have big lines between each row. Hopefully you can still easily pick up the structure of the grids!

If you find anything else in the book unclear, or you think you've spotted an error, please do get in touch!

Contact Me

If you want to reach out to me directly, you can drop me an email or say hello on Bluesky.