Handmade Hero»Forums»Game
101 posts
Procedural Generation Discussion
Edited by pragmatic_hero on
At what point does shuffling around content like a deck of cards and throwing dice becomes "procedural generation"?

"My contention is the Diablo's got this so right that you are arguing that it isn't procedural. "
In other words, there's so little procedural generation in diablo that you don't even notice how little of it is there.

The best kind of procedural generation? No procedural generation!

The algorithms in Diablo 2 do not "generate content" or "create data" themselves, they merely pick data from multiple giant hand-crafted tables and shake it up a bit.

The data the algorithm puts out has to deviate a certain amount from the input data for me to say that something
has been "procedurally generated". Something "new", "surprising", "distinctive" or "unique" has to emerge.

In case of diablo no actual "procedural generation of content" takes place. There's not a single thing in diablo you can point to and say "oh look, this is procedurally generated content", except randomized dungeon layouts I guess (the weakest part of the game). I rest my case.







Jesse
64 posts
Programmer at NASA GSFC
Procedural Generation Discussion
Edited by Jesse on
Procedural generation is generally meaningful to games when it can communicate an idea about how the game's universe works. That's a neurolinguistic problem, a new frontier for computer scientists. This is why games that rest on PG feel shallow when the nature of PG produces too much chaos to be recognized as pattern or is too highly constrained to produce anything of interest.

Diablo 2's PG was not part of what made the experience compelling to me. The important aspects of that game were hand picked by designers to communicate something specific. The tiny irrelevant details were filled in by PG.
Jesse
64 posts
Programmer at NASA GSFC
Procedural Generation Discussion
Edited by Jesse on
Please delete. Somehow this double posted and I can't seem to figure out how to delete it myself!
Gianluca Alloisio
33 posts
Procedural Generation Discussion
As someone said: procedural generation is not random generation.
Saying that using procedural generation is lazy means a fundamental misunderstanding of the thing. Probably the real meant thing is that a lot of the procedural generations we see are lazy ones, with a lot of randomness and little procedurality.
If you try to code a procedural generation algorithm you'll find that is hard to get nice results. At the end you'll probably lower your standards, accept all the smoke&mirrors thing and make do with you manage to get. The more depth you try to achieve the more it's difficult. I think it's similar to the difficulty of creating a single non-generative thing -- lacking a better term, sorry -- but with the augmentation of having to create a process that creates that same thing. I said "augmentation" because it's not a plus, it's an added dimension. To an extent it's like saying you are creating, bit by bit, a universe, versus creating a process that can generate all possible universes adhering with your constraints. The last part it's important: "adhering with your constraints".
The creative process, in general, starts from a goal, being it exploratory, expressive, something else or a combination of many. It's really important to understand your goal when you are creating a procedural generation algorithm. Given that it's a very difficult process you have to simplify your life until your goal becomes feasible. To achieve feasibility you have to state the tech max level and given that define your constraints, removing possibilities. In non-generative creation you adopt some of the non-constraint possibilities in your final work. In generative creation you leave all the possibilities in their constraining fence, so all of them can be experienced. In fact a generative algorithm can be used in non-generative creation, fixing a slice of the possibility space.

You can be sloppy and leave things to chance, in both non-generative and generative creation.
Jeremiah Goerdt
208 posts / 1 project
Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.
Procedural Generation Discussion
tienery

Just recently, a Co-optional Podcast episode by TotalBiscuit, Jesse Cox and Dodger involved the discussion of procedural generation, and that such an idea is starting to lose traction because of a major flaw in the design of such a concept: the fact that nothing is deliberate.


Something that is important to note is that these people are not game designers and they are taking something very complex and boiling it down into a simple concept that is easy to criticize (he is the 'cynical' brit after all). "Nothing is deliberate" is the opposite of what procedural content generation (PCG) is about. One of the most important ingredients in a PCG recipe is intention. Otherwise, you would just have random content generation.

tienery

For instance, you can't place an object in a specific room that's specifically designed to do something that allows the player to progress because of the fact that the entire world is procedurally-generated.


Having a procedurally generated world does not prevent the placing of objects in a world for a particular design reason. A game is an extremely complex system which is sometimes comprised of many complex systems. We can't just assume that a game using PCG will be 100% generated without any thought of narrative or cohesiveness. Imagine two systems, both completely procedurally generated, connected by a moment in the game that is hand crafted.

tienery

Procedurally-generated games, in my opinion, only works for sandbox games where you can do whatever the game offers you, which in itself is flawed by design and limited by the mechanics you offer.


Well, this sentence is a doozy. I'm starting to see a pattern of assumptions that aren't really reflective of reality. Many media (movies, music, animation, games, writing, etc.) are using PCG to great effect already and most of them can't be considered procedurally generated. They merely use PCG as a tool to make the art better.

As for this only being for sandbox games, that's proven wrong by the games that have already used PCG successfully (I will address this later).

Then there is the point that sandbox games are flawed by design and limited by the mechanics you offer. The latter point is true of every game. You're limited by what was created for you to interact with and I would argue that sandbox games use simulations better than any other type of game. They give you something to explore that is interesting and more complex than what a human could conceivably create in a lifetime. The former point is also shown to be false based on how many amazing simulation/sandbox games exist. Factorio is a particular obsession of mine, and many other people's. Minecraft would not be as successful as it is if 'sandbox games... are flawed by design.'

tienery

...now that the topic has been criticized and brought up by perhaps the most cynical critic I know, that being TotalBiscuit.


If you ask me, being cynical is shameful, not something that can give anyone credibility. Skepticism is crucial to us as humans, but cynicism holds us back. In this case, I think his cynicism is holding him back from his own predetermined opinions on the topic.

tienery

His words on the topic was (not the words exactly): "I would rather play a game that was specifically designed by the developer because that's how the developer envisioned it, not a game that is procedurally-generated that has objects that make no sense or has no real value to it."


Again, there are many flawed assumptions here. The fact that a game *that uses PCG* "...has objects that make no sense of has no real value to it." is just ridiculous. No one wants to play a game that fits that statement, and no one does play games that do so. We play games that we connect with, regardless of how items were organized or how worlds were generated.

tienery

...creating a procedurally-generated game and advising on creating one may not necessarily be the best advice from a design perspective.


There are many kinds of games and ways to make them. This is just one way, and choosing the "best" way would be impossible for anyone showing the world how it's done. This series is more about the development of a game from scratch rather than how to design a great experience. Using PCG here seems like the perfect fit because it means that we get to learn more about how to craft complex systems. (Caveat: this paragraph is pure opinion on my part. I just wanted to add my two cents.)

tienery

...but I would personally advise that people handcraft their worlds and design it specifically how you intend the world to appear because that way you can make the final product feel polished. It's a lot harder to polish a procedurally-generated game due to the nature of such games by design. No Man's Sky is a perfect example of this.


Your advice may make sense for a very specific type of game, but for many other kinds of games, this just doesn't fit. The way the world appears is not always an important aspect of making the game great. It may not be worth the time to hand craft things in a game when they are not the major focus. Some types of PCG can actually create things that a human would not, and it would make many of them very quickly... I could go on and on.

As for polish, I don't really understand what you mean because my definition of polish has nothing to do with how content was created. It's just how you present that content.

No Man's Sky (NMS) is very polished and looks gorgeous. It also has many interesting aspects that make it worth playing. The problem with NMS was the hype and misleading comments by the developers. The major criticism I hear about the PCG in NMS is that it feels empty and becomes 'samey' after a while. That's perfectly valid, and I think it's because the developers decided to focus more on a vast world and how to create it rather than giving us a world where we can find purpose and enjoyment.

tienery

...As far as I know, there is no procedurally-generated commercially available game that is considered complete.


OK, final thoughts here. I've already alluded to the fact that I think there are many flawed assumptions here, and one major one is that *games* are procedurally generated rather than games *using* procedural generation. As someone already said, PCG is a tool. It can be used well and it can be used poorly. Also, I truly believe that we have barely scratched the surface of what is possible with PCG. Just like we've barely scratched the surface of what games can be, the PCG systems we create are getting better over time. There are already exceptionally simple examples of PCG used very well in "commercially available" games.

In closing, here are just a few games that I think have used PCG well and that have barely begun to exercise what is currently possible in the world of procedural generation (not to mention what will be possible in the coming years):

Spelunky, Faster Than Light, Minecraft, The Binding of Isaac (and sequels), Factorio, Dwarf Fortress, Don't Starve, Darkest Dungeon, Crypt of the Necrodancer, Downwell, and (I couldn't leave this one out, of course) Rogue.

P.S. Please don't take anything TotalBiscuit says seriously :-P
Gianluca Alloisio
33 posts
Procedural Generation Discussion
Relevant article by @inconvergent
https://twitter.com/inconvergent/status/823883305078530051
http://inconvergent.net/thoughts-on-generative-art/
Casey Muratori
801 posts / 1 project
Casey Muratori is a programmer at Molly Rocket on the game 1935 and is the host of the educational programming series Handmade Hero.
Procedural Generation Discussion
I don't want to disrupt the discussion here so please carry on, but I did want to mention just as a side point because of this comment:

tienery

But it got me thinking that, even though Handmade Hero is a tutorial series and not a game that is going to end up on Steam once it's finished (correct me if I'm wrong), creating a procedurally-generated game and advising on creating one may not necessarily be the best advice from a design perspective.


I just want to state again for the record that Handmade Hero is absolutely not in any way meant to be a stream about game design. I am not a game designer and have no interest in teaching - nor am I qualified to teach - a stream on game design.

Handmade Hero is strictly about game programming. So the reason that the game is procedural is because it involves more intricate programming than a game that simply loads it's levels from some external source. I've said this on the stream multiple times, and it will be repeated again quite strenuously when we get to the part of the code that is directly related to the game design, because I would like people to be very clear that nothing in the stream is meant to instruct or inform game designers, only game programmers.

OK, that's all I wanted to say... carry on :)

- Casey
2 posts
Procedural Generation Discussion
The developer of Cogmind is doing alot of interesting work in regards to embedding a large story in a procedurally generated rougelike world and has put up a number of in-depth articles on the approach he is taking, this post is probably a good place to start http://www.gridsagegames.com/blog...procedural-worlds-part-3-methods/
Oswald Hurlem
59 posts / 1 project
Working on Swedish Cubes for Unity. You could say I'm a real blockhead!!
Procedural Generation Discussion
I've had hour-long debates on this topic multiple times in the IRC, and I hope to do a monster presentation about this some time, because frankly I think I have better thoughts about it than anyone.
Short version is that randomization makes something unpredictable and unique, but that unpredictability and uniqueness needs to be affixed to something meaningful or else its not worth a damn.
For example, the item drops in Spelunky turn the game into a this cool poker-like experience. Players who have a grasp of the fundamentals must evaluate the spectrum of risks and payoffs for several decisions in each stage. Because there's so much interaction between all of the different game elements (a basic item like the rope has like ten different uses), doing this risk-reward evaluation (on a time limit!) is fun and challenging.
Conversely, No Man's Sky randomizes the height maps for its planets, but it doesn't matter at all. You have a spaceship and a jetpack.
15 posts / 1 project
Developer of Rituals and other, smaller, projects.
Procedural Generation Discussion
I thought I'd point out that we haven't mentioned "improvisation" yet, which to me is the raison d'etre of procgen from a gameplay perspective. If you're "procedurally generating" something, there's gotta be a reason to do so. In Handmade Hero, it's perhaps a cool way to spend the complexity budget, but you'll generally see it doing one or more of a few things:

  • Saving space. A full Minecraft world would take at least 5tb to store.
  • Saving time. Level designers can't make 1,000 levels for a RTS, so a lot of them implement "random map." Too, you could argue that using a noise pattern to make a texture more interesting is procedural generation.
  • Making the player improvise: because they don't know the absolute layout, they have to make predictions and work with them to navigate/survive/etc levels.

Oswald Hurlem is absolutely correct in mentioning that "unpredictability and uniqueness needs to be affixed to something meaningful." If the procedural generation doesn't affect the gameplay in a meaningful way, it won't make the player improvise; they'll just follow the same patterns of play they always have. Implemented well, procedural generation lets a game explore many more of the interactions between its components than would have been possible otherwise. Implemented or used lazily, procedural generation becomes a cheap and empty alternative to real level design.

Another thing to mention: almost all games that use procedural generation well are resource management games, a genre that spans roguelikes, survival games, and a subset of strategy games (it turns out that managing resources is a fundamentally strategic thing to do, but some games put the weight of that on skill-based execution rather than more contemplative management). I think every game CaptainKraft listed fits into that scheme, even if the resource you're managing is often just HP. If I could add a few more: Age of Empires, Magic: The Gathering, and Settlers of Catan.

Magic might seem like a bit of an outlier there; "shuffling a deck" may not seem like the most grand form of procedural generation (random generation?), but, if you consider that, at most points in a game of Magic, there's an optimal or best thing to do based on your current knowledge, and the other player has a similar perspective, both players and the order of cards drawn is also "generating" the scenario you're playing. In effect, even games that have fixed and unchanging maps feature something like procedural generation when they put players against each other, because, from an individual player's point of view, the hard-to-predict-but-still-strategic actions of other players can form the unique, unpredictable, and meaningful scenarios Oswald was talking about. Games like Team Fortress 2, Call of Duty, and Overwatch do this; in a way, their level design and player ability design "program" players into making interesting procgen scenarios for other players. While this falls apart quite often depending on the skill and teamwork of the players in a match, I think it involves similar thinking to building procedurally generated games. Too, this is certainly possible with AI opponents, but, in my experience, AIs tend to be predictable enough for the play to be the same almost every time.
Oswald Hurlem
59 posts / 1 project
Working on Swedish Cubes for Unity. You could say I'm a real blockhead!!
Procedural Generation Discussion
I hadn't realized the "resource management" angle... I like the way you think. I had half a mind to bring up Magic as well. The most fun MtG formats involve lots of resource management.