Mastodon Icon RSS Icon GitHub Icon LinkedIn Icon RSS Icon

Towards the ProcJam 2014

Procedural Contents Generation (PCG) is a family of techniques, algorithms and procedures used for generating contents in an automatic way rather than manually. In other words, using PCG, game contents can be created by the host computer instead of pre-design everything at development time.

In recent years, PCG is having an increasing popularity among the academic and game development communities. There are two big reasons behind this success: first, it allow the designer to generate an near-infinite amount of contents without the effort of manually design each element by hand (and that’s why the indie scene love PCG), second it increase the game longevity and replayability value of the game (because, for instance, the game it is always different after each run and so it can be replayed more). This two things combined are The Dream for every game designer: huge longevity with low effort at design time.

A bit of history

Even if PCG are discussed a lot in recent years, its application in games (even commercial games) is quite old. One of the first complete example of PCG-based game is for sure Rogue, a game that was so influential to represent a new genre by its own (known as roguelike) and to be inspirational for an huge amount of games (up to Diablo). The games was developed back in the 1980 and it was characterized by a randomly generated dungeon in which the player have to explore, fight monsters and get treasures. The PCG generation of the dungeon is the main strength of the game and, not least, the main feature of a genre that goes from near successors (like Angband (1990)) to modern contemporary games such as Crypt of the Necrodancer (2014) or Binding of Isaac (2011).

[caption id=“attachment_143” align=“alignleft” width=“300”]Minecraft is the most popular example of procedural 3D world generation. Minecraft is the most popular example of procedural 3D world generation.[/caption]

Other than roguelike games, PCG has been used in many other games generes. One great example is Elite (1984), a space trading and simulation game in which literally everything (planet positions, names, politics and descriptions) is generated procedurally. The code for the PCG algorithm used in Elite can be found here with the name Text Elite.

In recent years, there are several notable examples of PCG in commercial (and non) games: Minecraft, with its fully infinite procedurally generated 3D world full of items and different biomes, Dwarf Fortress, maybe the most impressive use of PCG in an actual game with a full world with history, erosion, events and populations randomly generated, the Borderland and Diablo series, and so on.

I’m definitely leaving out important titles. Please game-god, forgive me.

The present of PCG

[caption id="attachment_146" align="alignright" width="300"]Weapons in Borderland are completely made in PCG-land. Weapons in Borderland are completely made in PCG-land. A nice example of "Instancing Of In-Game Entities".[/caption]

In modern games there are several application of PCG (an interesting article on that can be found in [2])

  • Runtime Random Level Generation. This is the generation of game levels while the game is being played, using PCG techniques. In this category fall all the map generation techniques. It is probably the most famous type of PCG techniques in games.
  • Design Of Level Content. This family represent the use of PCG techniques at design or build time. In other world, the goal of PCG is to help the designer into creating contents. This type of PCG application is usually hidden to the final player. A common example of these techniques is the use of fractal height map to create landscapes and terrains which will than populated with other objects by hand.
  • Instancing Of In-Game Entities. These techniques are, in some sense, orthogonal to the previous category. Instead of generating the world, they instantiate the game objects (such as, trees, monsters, characters, item, treasures and so on). In Left for Dead, for instance, this techniques is used to instantiate dynamically the enemies into a static environment in order to provide variety and some adaptation capability to the game.
  • User Mediated Content. This is a borderline technique. In fact, it uses the users themselves as a source of new and "PCG" contents. This can be also be mixed with other PCG techniques (hence the word "mediated" in the name).
  • Dynamic Systems. This is PCG applied to agent behaviors. For instance, dynamic systems such as weather, and group and crowd behaviour, can be modelled using PCG techniques.
  • Procedural Puzzles And Plot Generation. PCG can be also applied to plot, story, quests and puzzle generation. This is a more difficult field because it often requires some Natural Language Processing ability. However, many games are starting to integrate automated quests into their code and gameplay.

The future of PCG

[caption id="attachment_149" align="alignleft" width="300"]The tgame NERO. You cannot see that... but soldiers ARE EVOLVING WITH NEUROEVOLUTION. The tgame NERO. You cannot see that... but soldiers ARE EVOLVING WITH NEUROEVOLUTION.[/caption]

As it is possible to see before, PCG applications are only limited by the human imagination. But if the past look great, the future is totally amazing for PCG. The main evolution in PCG will be represented by the introduction of AI in it with the emerging field of the Experience-Driven Procedural Content Generation [3]. In fact, all the “old” approaches have something in common: the randomness. However, what if the game use the actual player experience in order to create new contents? What if a a random level generator can avoid to create some type of obstacle if it “perceives” that the player get frustrated with them?

All this question are currently open and there are a large number of techniques that can be explored (and are still not explored in any commercial game!). Search-based procedural content generation [1] and the neuroevolution [4] are just a couple of promising techniques and experiment that I found very exciting for the future. Obviously, it is possible that the amount of expertise required by these approaches will be a hard obstacle for their commercial application (as often happens to many AI techniques born in the academia), but, well… they are exciting though!

The Jam

So, what all this boring talk is for? To announce to you the ProcJam 2014, what else! This is an interesting jam (which is held from 8th to 11th November) to experiment with all the techniques I briefly introduced to you and with other I don't even know! Moreover, on November 8th there will be on Twitch a kickoff day of talks about Procedural Generation! There are a lot of interesting people talking (way more skilled than me on the topic) so I really encourage you to participate the talks (and, if it possible, the jam).

By myself I really think to join the “competition”. I have a lot of ideas (although many are probably too difficult for the jam). Let’s see what I can do. In the worst case I’ll expand my dungeon generator. :P

Have a nice day!

References