Many faces of Procedural Generation: Determinism (classification system, part 3)

Welcome to the third part of this Procedural Generation (aka ProcGen) classification series called “Many faces of Procedural Generation”. To see the previous part click here.

In this post we’ll talk about determinism in ProcGen, which makes sense especially for run-time generation (load and real-time). Procedural does not mean random. Even if you use some kind of (pseudo) random function, if you use the same seed, you’ll get the same results. Here is how you can classify it:

  • Deterministic generation: When, given the same inputs, you can get the same output. If you are dealing with a large amount of generations, you may need to do some testing to ensure that you do not get any unexpected results or get an outcome that doesn’t interfere with the game’s objectives.  A good example of deterministic generation is the Universe of the much expected No Man’s Sky, where it’s always the same Universe being generated for everyone (with 18,446,744,073,709,551,616 (18 quintillion) planets, that’s a lot of testing). Another is the 96kb 3D game .kkrieger in the generation of all its content.

    No Man's Sky 1
    From No Man’s Sky
  • Deterministic at load-time generation: When you get a deterministic generation only after you’ve loaded the game level. Basically, once you get the initial random inputs the generation becomes deterministic. A few examples of this are the worlds in Minecraft and the level layouts for Rogue-like games such as The Binding of Isaac.

    From Binding of Isaac
  • Non-Deterministic generation: When you cannot determine the outcome of the generation. Even if you can vaguely predict the outcome generation (because of probability functions), with Non-deterministics you never know for sure. Stateless. An example of this are the obstacles of infinite-runners such as Temple Run.


Hope you guys enjoyed this part of the classification system and check out the previous parts if interested. Let me know if you have any comments or other considerations that I missed 🙂

ANNOUNCEMENT: The project Sceelix – 3D ProcGen Engine – that I’ve been working on with some friends for the last year has finally come out! Woohoo! Check it out at Trial version available 🙂


Subscribe to this blog here:

Join and Invite others to the slack on ProcGen! sign up:

Join and invite others to the facebook group on ProcGen!

My twitter account: