Procedural Level Generation – Introduction

Procedural Level Generation is a big deal for Wizards’ Duel and I would like to spend a few posts describing why is that and how we are making it.

BlueRidgePastures

Computer-generated 3D landscape (Gary R. Huber, 3D Nature, LLC)

Procedural Level Generation is the act of creating randomized game level, or worlds, during runtime instead of having static levels created as part of the development process.

Procedural Generation has been long part of gaming (Rogue’s levels in 1980, Elite’s worlds in 1984…). Besides the technical merits of the system, that in the eighties meant saving a lot of memory on 8-bit computers and on floppy discs, Procedural Generation has an inherent appeal to us because it resonates with our own curiosity and desire for exploration.

Historically, exploration was the child of both entrepreneurship and desire for adventure. Reading on a map the famous expression “Hic sunt Dracones” (Here be Dragons) sparkled the imagination of the young ones and the desire for riches of investors.

To this day exploration is still a big part of our drives, and Videogames offer an interactive way to sate this thirst for discovery and adventure in a way that can be more intense and personal than other mediums, without the need to leave the comfort of our homes. One of the big appeal of games like Skyrim is not a solid gameplay or a strong narrative, but instead the drive to discover the vast game world and its intricacies.

Procedural Level Generation can help the large teams creating huge worlds by providing them a base over which the artists can work to realize their vision without having to micromanage every rock and crevice.

Procedural Level Generation can also help small developers to cut down the cost of creating new assets and levels.

Finally, and this is especially true with games featuring permadeath and short play sessions, Procedural Level Generation done well adds an almost infinite replayability to a game, capitalizing on that craving to discover new things.

In the following posts I will describe how Procedural Level Generation works for Wizards’ Duel. I will not touch other subject of Procedural Generation, but of course the same basic concepts can apply to a lot of different aspects of a game. Procedural Generation can be used to create loot in adventure games, or custom enemies tailored to your game experience etc.

Terminology

Here some definitions for terms that I will use on the following articles:

  1. Blueprint: a term to define a “static prototype” of something, a copy of this prototype will be used if necessary or the main Blueprint referenced to read its properties.

  2. Floor. A cell where the player can walk on.

  3. Level. For this article I will consider a level as a two dimensional square grid, or mathematically a square Lattice, where each cell is filled with a Tile (like floors and walls). Procedural Generation does not need to be limited to 2D or a regular grid.

  4. Occurrences: differently from Probability these represents the number of times something “appears” in the sampled set. For example we may have a set of colors: {red, red, red, green, green, blue}. In this case the color Red has 3 Occurrences over a total of 6 colors, while Blue has only one. When randomly picking a color from that set Red has 3/6 probability to be selected (50%) while Blue has 1/6 probability (17%).

  5. Valid. An object or step of an algorithm is Valid, or Validated if the results conform to the intent. It is possible that some outcomes are in fact acceptable from a purely technical point of view while leading to an unusable level.

  6. Wall. A cell that is impassable from the player.

 

Next Time

Next time I will describe the basic blocks of Wizards’ Duel level generation algorithm.

Thanks for reading

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s