DEV Community

Breno Viana
Breno Viana

Posted on • Updated on

What do you need to learn to develop robust PCG techniques?

Introduction

The game industry has become the most popular and profitable entertainment industry globally [1]. Since then, more and more games provide massive maps, a high number of game features, and, thus, different ways of gameplay. However, there is a high cost of production to develop such game features. Therefore, to help decrease the cost and increase the speed of the game development is wise to use Procedural Content Generation (PCG) techniques. For instance, PCG techniques may create 3D maps to work as sketches for human designers that can fine-tune the places that require careful designs. We can apply this process to any game level. Besides, we can also use PCG as a game feature by creating content during the game session, thus, providing different playthroughs.

To help beginners, I made this list of things that I think are essential to learning to create robust PCG techniques: programming, data structures, software architecture, and randomness.

1. Programming

PCG techniques are software, so there is no way to develop them without learning to program them. The specific programming language does not matter; we can develop PCG methods with any language. The most important is knowing the programming logic to create the sequence of steps required to build content. However, since you want to develop games, it is wise to learn a language used for a game engine, for instance, learn C# and create games with Unity.

2. Data Structures

We need to know data structures well and how to create new ones to define good representations (encodings) for the content we want to generate. The way we represent the content is crucial for any PCG technique. For instance, it may be better to represent levels with grids instead of graphs (a more advanced data representation) since we easily control the level space in grids.

3. Software Architecture

It is important to maintain our projects well designed when developing software. To do so, we need to learn software architecture and design patterns. Thus, we can fix errors and extend the PCG method more easily. For instance, if we want to add locked doors and keys to our levels, we will need to redesign the data structure that represents our levels. Therefore, it will be easier if we maintain our project well designed.

4. Randomness

Finally, we need to understand how the randomness method we use works. Yes, we can develop PCG techniques without randomness; however, we could not generate a wide variety of content, which is the most interesting thing about PCG. Therefore, randomness is crucial when developing PCG techniques. We need to save the seed we use to feed the random number generator. Thus, we can reproduce the sequence of random numbers and, hence, possible errors in our PCG methods.

References

[1] Gaming: The Most Lucrative Entertainment Industry By Far (https://www.statista.com/chart/22392/global-revenue-of-selected-entertainment-industry-sectors/).

Discussion (2)

Collapse
dukemagus profile image
Duke

Tá aí um assunto que é difícil até de entrar sem ter todas as disciplinas anteriores dominadas.

Collapse
brenomfviana profile image
Breno Viana Author

É verdade kkkk. Dá pra começar a explorar sabendo dos 2 primeiros itens, mas pra trabalhar bem com PCG tem que saber de todos.