Skip to main content
added 2927 characters in body
Source Link
Theraot
  • 27.5k
  • 4
  • 52
  • 79

Disclaimer: If true random exists in our reality, and what is the nature of free will are topics beyond this answer. The random I speak about in this answer is pseudo-random (when I say "random" take "pseudo-random" as implied). Also, for the purposes of this answer parameter vectors are also considered seeds.

I could not find an authoritative taxonomy of content generation. Thus this answer is the taxonomy of content generation as I - personally - make sense of it. I found an often quoted in literature "taxonomy of procedural content generation" in the paper "Procedural Content Generation in Games" by Shaker et al. published in 2016. I want to mention they use the terms deterministic and stochastic. However this answer remains my own take on it.

  • Authored (designed) content: This is content generated by the authors of the game. Which might be bundled with the game, or be downloadable content.

    Authored (designed) content: This is content generated by the authors of the game.

    Authored content could use procedural generation tools which provides a result which is later refined by the author. This is known as offline procedural content generation.

    Authored content might be bundled with the game, or be downloadable content.

  • Procedural content: This is content generated by algorithms designed or selected by the authors of the game (there is a procedure that generates the content). The tools include pseudo-random number generators, generative grammars, noise functions, cellular automata, fractals, artificial neural networks and so on.

    Procedural content: This is content generated by algorithms designed or selected by the authors of the game (there is a procedure that generates the content) during game play, also known as online procedural content generation.

    The tools include pseudo-random number generators, generative grammars, noise functions, cellular automata, fractals, artificial neural networks and so on.

    Procedural content generation can take different approaches:

    • Constructive content generation: The algorithm produces content that is added directly to the output.
    • Generate-and-test content generation: The algorithm has a loop where they produce content until it satisfies some fitness function. If it produces unsatisfactory content, it loops, until it produces satisfactory content.
    • Search-based content generation: The algorithm searches a latent space of possible content that can be generated, using an heuristic, util it finds content that satisfies a fitness function. This is can be considered an special case of generate-and-test content generation.

    The mentioned fitness functions could take the actions of the player into account.

  • User-generated content: This is content provided by the players of the game.

    User-generated content: This is content provided by the players of the game. This can also be classified as online and offline except this time we are talking about networking. The user-generated content confined to the game or the machine of the player is offline, and if it is shared over the network it is online. And then we can distinguish if the player receives user-generated content as part of normal gameplay, or they must request it.

  • Predetermined: It is always the same for everybody everywhere.
  • Random (a.k.a pseudo-random or stochastic): It can be different every time. Using pseudo-random number generators, noise functions and similar tools.

※: What I call here Predetermined is often called Deterministic, however "predetermined" seems to be a better term because pseudo-random is deterministic (given the same input it produces the same output).

We will call content generation that takes the actions of the player into account as adaptive (and thus dynamic), otherwise we would say it is generic.

We could also classify the content generation based on whether or not the content generated is necessary to complete the game, or otherwise it is optional.

 

The designers could offer control over the seed values to the player explicitly (there is an UI where they input the seed) or implicitly (where the game derives the seeds from actions that the player performs, but the player is not told these action seed the content generation).

We can also collect fingerprinting data (e.g. user id, network id, hardware id, and so on), and hash it (we can also use HMAC or key derivation functions) to produce a seed value. In this case the content generation will be quasi-unique for the player (baring collisions). This allows us to provide content generation that is always the same for the same player, but different depending on the player.


Disclaimer: If true random exists in our reality, and what is the nature of free will are topics beyond this answer. The random I speak about in this answer is pseudo-random (when I say "random" take "pseudo-random" as implied).

I could not find an authoritative taxonomy of content generation. Thus this answer is the taxonomy of content generation as I - personally - make sense of it.

  • Authored (designed) content: This is content generated by the authors of the game. Which might be bundled with the game, or be downloadable content.
  • Procedural content: This is content generated by algorithms designed or selected by the authors of the game (there is a procedure that generates the content). The tools include pseudo-random number generators, generative grammars, noise functions, cellular automata, fractals, artificial neural networks and so on.
  • User-generated content: This is content provided by the players of the game.
  • Predetermined: It is always the same.
  • Random (a.k.a pseudo-random or stochastic): It can be different every time. Using pseudo-random number generators, noise functions and similar tools.

Disclaimer: If true random exists in our reality, and what is the nature of free will are topics beyond this answer. The random I speak about in this answer is pseudo-random (when I say "random" take "pseudo-random" as implied). Also, for the purposes of this answer parameter vectors are also considered seeds.

I found an often quoted in literature "taxonomy of procedural content generation" in the paper "Procedural Content Generation in Games" by Shaker et al. published in 2016. I want to mention they use the terms deterministic and stochastic. However this answer remains my own take on it.

  • Authored (designed) content: This is content generated by the authors of the game.

    Authored content could use procedural generation tools which provides a result which is later refined by the author. This is known as offline procedural content generation.

    Authored content might be bundled with the game, or be downloadable content.

  • Procedural content: This is content generated by algorithms designed or selected by the authors of the game (there is a procedure that generates the content) during game play, also known as online procedural content generation.

    The tools include pseudo-random number generators, generative grammars, noise functions, cellular automata, fractals, artificial neural networks and so on.

    Procedural content generation can take different approaches:

    • Constructive content generation: The algorithm produces content that is added directly to the output.
    • Generate-and-test content generation: The algorithm has a loop where they produce content until it satisfies some fitness function. If it produces unsatisfactory content, it loops, until it produces satisfactory content.
    • Search-based content generation: The algorithm searches a latent space of possible content that can be generated, using an heuristic, util it finds content that satisfies a fitness function. This is can be considered an special case of generate-and-test content generation.

    The mentioned fitness functions could take the actions of the player into account.

  • User-generated content: This is content provided by the players of the game. This can also be classified as online and offline except this time we are talking about networking. The user-generated content confined to the game or the machine of the player is offline, and if it is shared over the network it is online. And then we can distinguish if the player receives user-generated content as part of normal gameplay, or they must request it.

  • Predetermined: It is always the same for everybody everywhere.
  • Random (a.k.a pseudo-random or stochastic): It can be different every time. Using pseudo-random number generators, noise functions and similar tools.

※: What I call here Predetermined is often called Deterministic, however "predetermined" seems to be a better term because pseudo-random is deterministic (given the same input it produces the same output).

We will call content generation that takes the actions of the player into account as adaptive (and thus dynamic), otherwise we would say it is generic.

We could also classify the content generation based on whether or not the content generated is necessary to complete the game, or otherwise it is optional.

 

The designers could offer control over the seed values to the player explicitly (there is an UI where they input the seed) or implicitly (where the game derives the seeds from actions that the player performs, but the player is not told these action seed the content generation).

We can also collect fingerprinting data (e.g. user id, network id, hardware id, and so on), and hash it (we can also use HMAC or key derivation functions) to produce a seed value. In this case the content generation will be quasi-unique for the player (baring collisions). This allows us to provide content generation that is always the same for the same player, but different depending on the player.


Updated to address feedback.
Source Link
Theraot
  • 27.5k
  • 4
  • 52
  • 79

Disclaimer: If true random exists in our reality, and what is the nature of free will are topics beyond this answer. The random I speak about in this answer is pseudo-random (when I say "random" take "pseudo-random" as implied).


I could not find an authoritative taxonomy of content generation. Thus this answer is the taxonomy of content generation as I - personally - make sense of it.

 

User generated content is usually dynamic, because it is content that the players input during game play. The exception would berequire modifications to the contents of the game while the game is not running (e.g. mods).

  • DeterministicPredetermined: It is always the same.
  • Random (a.k.a pseudo-random or stochastic): It iscan be different every time. Using pseudo-random number generators, noise functions and similar tools.

Note that random content generation means we use pseudo-random to generate, not that we use random to decide everything. Some aspect of the generation can be deterministic and others not, and we will still call it random. Similarly, we can manipulate the randomness distribution towards generating content that we deem interesting. Thus random here does not mean purely randomSee On the nature of pseudo-random below..

Authored content is deterministicpredetermined. Adding a system that makes it different every time would make it procedural content. However, procedural content could be deterministicpredetermined (e.g. the designers hard-coded the seeds for content generation, so it is always the game).

User-generated content could also be either random or deterministicpredetermined. However, deterministicpredetermined user-generated content is more common (e.g. the user creates a custom scenario using an editor, and thus every time that custom scenario is the same).

In regard to dynamic content, we can also talk about content being persistent or not persistent. Saying that the content is persistent, means that the game will store/remember the changes that happened during game play. Otherwise the changes are lost when the content is unloaded… Which could mean to return to the authored state, or to generate it again (implying on demand content generation). Furthermore, the case of on demand content generation could result in something different being generated (which might be the intention of the designers or not). Notice that persistence is not an issue if the game does not allow you to go back.


On the nature of pseudo-random

First of all, random generation does not mean uniformly random. We can manipulate the randomness distribution towards generating content that we deem interesting, or even decide leave some aspects fully deterministic.

Note that by random content generation depends on seed values that generator takes as input. Given the same seed values, the result would also be the same. Thus, to have an unpredictable results we need seed values that are unknown beforehand and hard to control. Common sources for such values include the current time, CPU performance counters, and microphone noise… Which also have in common that they are always changing. However, if the seed values are controlled (by design or by manipulation) the content generation becomes predictible. This means that pseudo-random is repeatable/reproducible (which is a good thing for testing).

Be aware that common random number generators and noise functions will eventually loop (avoiding this would make the cost of generating steadily increase, which is not desirable)※. As mitigation we can re-seed the generator, and depending on the generator this could be noticeable by the user.

※: This might not be a problem for small games. Be aware that games that generate huge worlds might also need to deal problems caused by floating point errors and overflows. And, of course, other optimizations relevant to huge worlds beyond this question.

Furthermore, random number generators are sequential, and thus the order in which the generated numbers are used will affect the outcome. This have some notable consequences:

  • Different versions of a software that use the generated numbers in different ways will yield different outputs from the same seeds.
  • If there are actions that the user can do that use random numbers, then the actions of the user change the generation going forth.
  • This opens a common vector to manipulate the generation by the players: exhaust the generated numbers (by repeating an action that use them) until the generator is in a desirable state.

On the other hand generation based on noise functions would not be vulnerable to this kind of manipulation because unlike pseudo-random number generators, noise functions are not sequential.

I could not find an authoritative taxonomy of content generation. Thus this answer is the taxonomy of content generation as I - personally - make sense of it.

User generated content is usually dynamic, because it is content that the players input during game play. The exception would be modifications to the contents of the game while the game is not running (e.g. mods).

  • Deterministic: It is always the same.
  • Random (a.k.a pseudo-random or stochastic): It is different every time. Using pseudo-random number generators, noise functions and similar tools.

Note that random content generation means we use pseudo-random to generate, not that we use random to decide everything. Some aspect of the generation can be deterministic and others not, and we will still call it random. Similarly, we can manipulate the randomness distribution towards generating content that we deem interesting. Thus random here does not mean purely random.

Authored content is deterministic. Adding a system that makes it different every time would make it procedural content. However, procedural content could be deterministic (e.g. the designers hard-coded the seeds for content generation, so it is always the game).

User-generated content could also be either random or deterministic. However, deterministic user-generated content is more common (e.g. the user creates a custom scenario using an editor, and thus every time that custom scenario is the same).

In regard to dynamic content, we can also talk about content being persistent or not persistent. Saying that the content is persistent, means that the game will store/remember the changes that happened during game play. Otherwise the changes are lost when the content is unloaded… Which could mean to return to the authored state, or to generate it again (implying on demand content generation). Furthermore, the case of on demand content generation could result in something different being generated (which might be the intention of the designers or not). Notice that persistence is not an issue if the game does not allow you to go back.

Disclaimer: If true random exists in our reality, and what is the nature of free will are topics beyond this answer. The random I speak about in this answer is pseudo-random (when I say "random" take "pseudo-random" as implied).


I could not find an authoritative taxonomy of content generation. Thus this answer is the taxonomy of content generation as I - personally - make sense of it.

 

User generated content is usually dynamic, because it is content that the players input during game play. The exception would require modifications to the contents of the game while the game is not running (e.g. mods).

  • Predetermined: It is always the same.
  • Random (a.k.a pseudo-random or stochastic): It can be different every time. Using pseudo-random number generators, noise functions and similar tools.

See On the nature of pseudo-random below.

Authored content is predetermined. Adding a system that makes it different every time would make it procedural content. However, procedural content could be predetermined (e.g. the designers hard-coded the seeds for content generation, so it is always the game).

User-generated content could also be either random or predetermined. However, predetermined user-generated content is more common (e.g. the user creates a custom scenario using an editor, and thus every time that custom scenario is the same).

In regard to dynamic content, we can also talk about content being persistent or not persistent. Saying that the content is persistent, means that the game will store/remember the changes that happened during game play. Otherwise the changes are lost when the content is unloaded… Which could mean to return to the authored state, or to generate it again (implying on demand content generation). Furthermore, the case of on demand content generation could result in something different being generated (which might be the intention of the designers or not). Notice that persistence is not an issue if the game does not allow you to go back.


On the nature of pseudo-random

First of all, random generation does not mean uniformly random. We can manipulate the randomness distribution towards generating content that we deem interesting, or even decide leave some aspects fully deterministic.

Note that by random content generation depends on seed values that generator takes as input. Given the same seed values, the result would also be the same. Thus, to have an unpredictable results we need seed values that are unknown beforehand and hard to control. Common sources for such values include the current time, CPU performance counters, and microphone noise… Which also have in common that they are always changing. However, if the seed values are controlled (by design or by manipulation) the content generation becomes predictible. This means that pseudo-random is repeatable/reproducible (which is a good thing for testing).

Be aware that common random number generators and noise functions will eventually loop (avoiding this would make the cost of generating steadily increase, which is not desirable)※. As mitigation we can re-seed the generator, and depending on the generator this could be noticeable by the user.

※: This might not be a problem for small games. Be aware that games that generate huge worlds might also need to deal problems caused by floating point errors and overflows. And, of course, other optimizations relevant to huge worlds beyond this question.

Furthermore, random number generators are sequential, and thus the order in which the generated numbers are used will affect the outcome. This have some notable consequences:

  • Different versions of a software that use the generated numbers in different ways will yield different outputs from the same seeds.
  • If there are actions that the user can do that use random numbers, then the actions of the user change the generation going forth.
  • This opens a common vector to manipulate the generation by the players: exhaust the generated numbers (by repeating an action that use them) until the generator is in a desirable state.

On the other hand generation based on noise functions would not be vulnerable to this kind of manipulation because unlike pseudo-random number generators, noise functions are not sequential.

added 106 characters in body
Source Link
Theraot
  • 27.5k
  • 4
  • 52
  • 79

An example of "constantly changing" dynamic content could be if the trees spread (new trees spawn and grow near where other trees exist). See also city builders where the simulation would constantly build, change or destroy buildings.

An example of "constantly changing" dynamic content could be if the trees spread (new trees spawn and grow near where other trees exist).

An example of "constantly changing" dynamic content could be if the trees spread (new trees spawn and grow near where other trees exist). See also city builders where the simulation would constantly build, change or destroy buildings.

Source Link
Theraot
  • 27.5k
  • 4
  • 52
  • 79
Loading