Practical Procedural Generation for Everyone

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments

I enjoyed that quite a lot.

Kate posted the slide deck in a tweet.

There is indeed some overlap with her article "So you want to build a generator…"

👍︎︎ 4 👤︎︎ u/livingonthehedge 📅︎︎ Jun 13 2017 🗫︎ replies
Captions
[Music] all right so I'm he confident without further ado I'm going to talk a lot about procedural content generation I'm sorry this is going to be a total speedrun today we're just way more things I wanted to put in here about procedural content generation that I had time for and so there's beans floating around I printed out 80 of them which was clearly not enough so I'll put those up online too yeah so a little bit of today's schedule I'm going to give you I'm calling it the IKEA catalogue of PCG techniques what all of them are why you might want them how much they cost and whether they look good next year sofa and just a catalogue of that and then I'm also going to give you some PCG msg easy cheap additives to improve all your PCG whatever it is oh and the slides are up there so this talk is kind of for anybody who has heard or is thinking hey we should have some PSG's in our game I hear they're really cool we should definitely PCG our game so a little bit about me I've been doing procedural content for 15 years or so it's hard to tell at this point I did five years on spore I did the planets and some students insidee I've done five plus years of PhD and show no signs actually graduating in generative games and creativity tools and I also made tracery which I talked about last year which now has close to 4,000 active BOTS generating weird stuff online I make a lot of generative art bots games are tools more and I write and teach up I really like to write about and teach other people how to make PCG without losing their heads it can be a really difficult thing so I've done a ton of like procedural content generation work or my oh good luck but the gifts aren't running on my computer so I'm glad that they're running up there so yeah these are a couple of the things that I've made various procedural content flocks of butterflies in VR and then just recently I made a train jam game that's a generative train so about a year ago I made this interesting blog post so a lot of people tend to ask me especially people just starting off in games like how do i do procedural content what are some good like resources you would suggest for me just starting out like I know nothing about PC G where do I start so I started writing up a blog post and four hours later it was 4,000 words and I published that about a year ago and people have found it really useful so if you get lost in this talk you can go back to that blog post and it says everything I'm saying here but much slower so yeah okay I imagine people in this room want to generate something or have been told to generate something or are generating something for their game and you know there's games like Minecraft which generates their terrain famous games like no man's sky which generate all sorts of different things even to our fortress which generates you know drunken cats falling down in a pub and other such things but there's also so those are kind of some famous examples but there's also a lot of not famous in the examples that use PCG in all sorts of ways it's not just terrain so there's Pippen bars this is if you work plank chess which gives you different ways to stroke your beard while you think of chess moves featured screen confers mr. Darcy dance simulator where mr. Darcy insult you in generative ways Ultima ratio reg room which generates everything strange things works which are strange generated museums and whatnot even things like panoramas coal which you know these games often walk the line of is it a game isn't it again there are generative spaces that you can explore in different ways and even sometimes games generate game rules themselves so this is yahwah's and this is somebody services mmm camera and bronze project he made a system that could generate game rules and then he made a player that could play arbitrary games and he had those play like virtual players play thousands upon thousands of games until he found one that was pretty well balanced and then you shipped that and you can now apply dis and game stores the title is also generated but despite the fact that this is the this is the where are we now gay game developer conference yes in a day you can also generate all sorts of things that are not games yep so there's places that generate fabric and fashion art projects here's a bot generated skirt that I made I'm much better at BOTS than I am at sewing but this is still a pretty good skirt there are games from museums like the Victorian Albert made a wig generator things that are half Creator half game like Coco polkas hair salon and people are generating all sorts of stuff from poetry to poetry to music to cocktail generation a lot of that goes on at the International Conference on computational creativity to give a shout out to one of my other communities if you can generate darn near anything so and there's also all sorts of reasons to want to generate stuff big stuff small stuff little stuff complex stuff for all sorts of reasons it increases twitch ability it looks cool it's funny and so yeah there's no wrong way to do PCG and often like little tiny small stuff is best way to start there are lots of out so lots of generative content uses like extremely sophisticated in brilliant AI and you'll there's plenty of talks about that here a lot of that fails anyway so I'm the best generative content is really simple stuff and this is why kind of the goal of this talk is to say PCG for anything or for any for anybody for everybody don't caseinate before your talk so up on the right-hand side is one of the famous most famous examples that's been made with software that I made this is a tiny care bought by Johnny Sun which has 50,000 followers maybe 60,000 by this point and it just tweets out little generative things about how it loves you and you should drink more water so you don't have to get complex sometimes emotional design is the most important complex part of of generativity so anyway let's get started so yeah so you want to generate something these are kind of the rough steps you're going to go through you're going to understand the design space numerate your constraints understand the process take a generative method and iterate and be flexible this last one is actually kind of hard and where the biggest groups will fall down the most so on four we work really hard we spent years making these incredible generators and there was no time to iterate on them even in five years you get all your technology working it's doing well enough and that that's what you have to put in a box and ship but if you're going to be flexible and a lot of Indies are or if you're making a game jam game you can often kind of follow your generator where it leaves a lot of the silliest generators that were made with tracery my tool are things that people just try it out once because it seems like a stupid funny idea look up endless screaming which is about that just endlessly screams on Twitter so a lot of the things that are really great about this are the things where you try it out because it's a stupid idea and then you just follow the stupid idea when it seems to really be working if you have the flexibility to do that but so imagine you do want to design something so these are kind of the first three things we'll go into first this is a silly question but what are you making there's a lot of different things you can make with this so once you've figured out what it is you're making and be really specific with this the more specific a thing you're generating the better you can make a generator I cannot write a novel generator I can write a trashy urban romance fantasy generator because that's got more constraints and I can actually start describing what that is but I can't describe a novel then you're going to well so in sport we call this making an artist in a box because you're teaching an algorithm how to make art like an artist and then back in the day when we used to sell games on these shiny plastic discs you actually had to put your artist well your your virtual artist on a disc put it into a box and then mail it to Busboys and so on before we had this guy named John Simoneau who is a Disney animator and we hired him and the designers of sport of this poor creature creator sat down with him and over the course of many many many hours carefully talked to him about so if you're designing a creature what do you do and they you know they didn't take any answer at face value they asked them to dig further and further into it where he ended up talking about like how he draws of being the shape and that kind of sets the character of the the creature and then he hangs a mouth on it mats that's kind of the way that the creature is looking we ended up implementing all this in Spore and this poor creature creator was notoriously really really good and I think that was because they asked expert about how he does things so I'm going to talk to you a lot about additive and subtractive methods today so you're going to build up this piece of good stuff remove bad stuff there's going to be some possibility space which is how many things are in your space and expressive range which is how interesting the things are there'll be linked up throughout this talk here's some more information on constraints if you want them this is in your zine and my cook is giving a talk on this constraint stuff tomorrow at the tech toolbox so ask them about that so part one the IKEA catalog is generativity why you might choose each one so here are a number I think this is six I'm good at counting six different kind of categories of methods and the thing you'll notice about all of these when I go into them is PPG is often presented as like this magical thing we thought really super hard we have this algorithm with a capital A and we're going to show you a lot of really shiny screenshots of what that output it but you could never build it yourself a lot of these are really simple on especially in their base case you can build very simple things with them you can build it very simple you don't have to get complex so the first one is tiles many of you have probably played Diablo 2 I lost a lot of years to that things like Solanki even other child based generative games like sieve we'd forget often that tile based maps are are pretty common what tiles work well for so tiles are you have a chunk of like you have a number of chunks of things and you can then like socket them together to form a map so you can imagine kind of like the Settlers of Catan board they work well for things you can break up into equal sized regions and where the child to tile placement doesn't need to begin strained you can have anything next anything else and it's pretty much going to work so you don't have to write more complex code for them but they also work one well when you can get kind of some emergence from the placement of the tiles if I have mountains next to a good resource and civilization there's some interesting gameplay that emerges from that but this is actually one of the oldest forms of procedural content generation there's tarot cards on the right which are a tile like you can think of cards and tarot cards as tile based procedural content for games if you look if you shuffle your deck of solitaire and put it down you've now procedurally generated the game board that you're going to play a game of solitaire on and then on the left is one that I really like rich is also one of the first cases of IP infringement Mozart's publisher made this interesting piece it's called dice music and you have a number of bars of music and then you have a lookup table and you roll dice and you reassemble a nice little polka that's never been played before so this is polka this is PCG that goes all the way back to like 1740 so you know it's not just games so grammars grammars are one of my personal favorites because I have this language called tracery I have the ins for tracery if anybody wasn't in my talk last year self promo but these are for one you want to recursively make things with other things so there's there's some SVG artwork and some little story descriptions that I made recursively with tracery so tracery and other templating systems you have a recipe and you know maybe this is a sci-fi story generator I made where what are the different pieces of sci-fi story all the way down to okay now I need an alien name what are the different parts of an alien name there's a you know it's a syllable another syllable and another syllable so you are recursively defining something you end up usually getting a bunch of modular parts that you can reuse I use the alien planet named gen or like the alien name generator and a bunch of other segments in a lot of my work Theresa IO is written more information about that there's also things like L systems which you may have heard of the one on the bottom right isn't a procedural L system generator that I made but there's also things like context-free art this is a subsection of grammars where it's draw a line pick out an angle separate draw new lines for each of those pick out an angle and kind of recursed that way so grammars are all about through this top-down structure there's also some neat stuff that's been done with what are called replacement grammars so this is if you have a dungeon that's a straight line and you would like it to not be a straight line this is yours Dorman's work where he made Zelda dungeons by taking a straight line and then perturbing it in different ways so you know put a door and the key alright now if you've got a section that has a key you can hide that key behind another door and you can recursively apply these he recently just published his indie game which is called unexplored which she uses the technique you can definitely learn more about this from him he's really good at this he actually used to be in academia and then went India so he's got like both the the academic like heavy research focus but also a really great indie Sensibility so distribution distribution is put down a bunch of stuff this is maybe some PCG technique that we've all used you have a level and you dump a bunch of stuff on it until there's stuff in your level it's really complex you can do that just by having random numbers but the trouble with random distribution is it looks crappy actual random like very few things are actually random it's clumped strangely and so often real distributions are hierarchical and clustered and they maintain spacing even when we make steaks Gardens we often preserve this technique so here's a Japanese garden where you can see that there's hierarchy and clustering there's certain kinds of trees in the sand and other kinds of trees in the rocks and so when I found spore kind of we build up some Foulke knowledge about what makes that was good because we did a lot of procedural distribution on score and here's three terms that I like you can confuse the heck out of your art director one is called barnacle this is when you have a large object in your world there should be medium sized objects around that and very small objects around those and you can kind of go as fractal eep eep as you want and sometimes there's the same kind of object sometimes they're different objects you can see the the monument on the right has all sorts of like little rocks around it and this makes things look natural it makes them look like they're supposed to be there and no man's sky does this as well and supported it - there's putting where when two things intersect there should be an awareness of them intersecting if you stick a tree into the ground look the next time you see a tree it'll have dirt piled up around it it might have some twigs poking out even when you stick a wall into a floor there's like a little rubber gasket e thing even on this really minimalist architecture if you don't have that things don't look like they belong and then grieving is this is a Star Wars term on the reason that Star Wars looks different from Star Trek is because it has so much texture and so when George Lucas was were going to Tunisia to film one of the Star Wars he had a box full of things that he would glue on to others and customs made him label it and he labeled it greebles and so cooling things to other things is called greeting there are lots of like mathematical ways to do distribution properly you can look these up I usually just use a grid and offset it a bit because I'm lazy but there's an official's poor way to do it parametric this one is also really fun cuz you can do a lot with it so a lot so a lot of use can be combined into different hybrid methods but parametric is where you going to play yeah now it's playing okay so here's a little demo that I made a parametric generator where I have this flower and this is a nail system that I mentioned on the previous slide but the parameters the elf system like how much the flower is going to spread and how much the color changes are all defined by 32 different parameters so I have 32 different parameters and put those through an algorithm and out pops a little flower this is handy because there's you can actually model this as an N dimensional cube so if all of my sliders go from 0 to 1 I have this if I have like a two dimensional flower of like heightened with each point on that square would be a different flower if I have a 32 dimensional cube each point in that 32 dimensional cube is also a flower but you can do all sorts of fun things like actually do random walk through your content and animate things that way and this is something that I did with that wait oh yeah so often things that use this are like this for morph handles and I believe somebody who's in the know man spice this guy team can call me out on this I think no man's guy did this with their creatures as well where they were largely parametric that there were just a bunch of sliders and a space of creatures a space of space creatures oh yeah so here's the slide where I talk about that like yeah you can model this as an n-dimensional cube you can actually do procedural was it called genetic algorithms and there's a bunch of cool stuff that you can learn about that you can also do really bizarre things like you can take your possibility space you're in dimensional cube and actually run computer science algorithms to regionalize it in certain ways find particular items in that space that are interesting and then make those as collectibles and so there's a project petals from UCSF that doesn't really awesome things with that interpretive this is a really cool one it says you start with some input you run it algorithm to process data into some other data and you're basically complexify n'stuff spore did this that's are the official spork skeleton on the right which is what the creeks which is what the user was actually making and that we interpreted it into the thing on the left so there's a lot of information about the spore pipeline there so this is a pretty common issue to have and often like you know as a body is moving through space or as you're doing hand tracking you'll end up getting lines of motion what do you do with those lines of motion you can interpret them in different ways so here's the spore type line and how that interpreted things I think I hope okay there we go and yeah so we took the skeleton we made metabolic the meta balls we sliced that at the UV maps we did animation over the pool right and then we did painting on the left so this entire pipeline basically starts from this sick skeleton of points and edges and then eventually get a creature out of it there are all sorts of things that you might want to decorate in this way you know obviously hand tracking would be really cool body tracking there's nothing you can do to have like a human artist draw stuff for each body but maybe you can have a digital artist draw stuff for each position of a body and then of course things like maps in the real world like Pokemon go or maps of your living room in augmented reality how are you going to decorate these things well parametric are starting our parametric that interpretive stuff is there for you so there's a lot of examples of this and I'm kind of running already behind so I won't go really deep into them but there's things like Perlin noise and you can change Perlin noise in different ways so this is taking me absolute values to get that nice crease here's taking a cooler offset of Perlin noise you get the nice way Venus there's a lot of geometry algorithms so Voronoi and Delaunay are different ways to triangulate stuff and you can make cool regions out of just having a bunch of points and then triangulating them in different ways I've used this to do a couple of maps for space games that I was working on and never shipped and then there's also an island game that I made using these techniques as well so Dylan a and Voronoi they figure out the closest regions to each different point and then they figure out the connections between those regions so it's a really cheap fast way to make maps and there's good there's good algorithms for this there's things like constructive solid geometry extrusion revolution these are different ways of adding and subtracting stuff and you can use that to draw curves along things here's a pennant generator that I made for 3d printing but you can also use it in game so I need to make some geometry that fits this curve these are often very difficult these are mathematically heavy but even in things like Photoshop and tilt brush this is how they take a curve and they extrude interesting stuff along that curve whether it's texture or geometry yeah and then betta balls are making blobs out of stuff and then you can do stuff with that and I believe but I'm not sure that this is how oculus medium works there's also a whole weird category of like fractals and mathematic stuff this way these are low control hide weirdness and not the real form for most games but there's a group that does a couple of people who do things like neoguri and hyper nom that do interesting things with impossible spaces with generative methods one of my favorites just because I super love particles you're going to play there we go I really like particles and particle simulations so remember how I told you you can decorate a curve well you can use particles to generate those curves and then decorate them in interesting ways so here I'm drawing some flowers with just a particle simulation and they look pretty and they're kind of fun to watch this is also how spore worked score we did a lot of our texturing with particle simulations that would then drag textures or kind of dredge out rivers behind them as they move to the planet these also really go go great with wow that's such a slide they go really great with user input so you know I've got my hands and the one on the bottom left is I'm not sure where I was going with this game but you wave your hands and there's birds that walk around it in the birds leave behind watercolor trails you're kind of like painting with the giant form of birds I don't think anybody else has done that with the loop function yet but there's also things like cellular automata agent-based simulations physics simulations so things like Dwarf Fortress and the indie game Bad News have just massive simulations of little people living their lives and they use that to build to procedurally generate towns with massive history yeah and okay there's an emissions never mind yep so some animation for you alright subtractive methods on to the next thing so you've made a lot of stuff some of its good some of its not again we had this problem once for where some of our planets were good and some of them weren't because we didn't have time to iterate and so the way we hacked that was we well I went through a bunch of the planets we generated and saved the seeds of the ones that were good and if you have seeded random number generation you can then input the name of the algorithm the seed that you're going to do and get the same content so you can actually kind of whitelist a certain number of content it's often faster to do that than to make a proper algorithm never worry about doing it the right way just do whatever way works this kind of leads to something called generating test where if you can write an algorithm to judge quality you can then throw like generate stuff and throw it away you have to be careful with this because if your algorithm is too loose and your constraint is too high you can generate forever and never actually accept anything so you can hang so it's always better to do throwaway verses or like ranking prioritization versus throwaway and never use the fun equation ask me what that means you can also computationally explore the possibility space this is loosely called search you can briefer brute-force search like you know fine and find me the tallest creature that my stuff can make or find me a level that has these properties and you can just like grind through a bunch of levels and search for the one that's good but you can do it like in a slightly more sophisticated way with things called hill climbing genetic algorithms or a version of that those in particular work best with parametric with parametric models there's also a little thing called constraint solving so you probably know of this from Ikea solving if I have a limb here and here figure out like where the limb should be in the middle there are ways to describe other problems so the one on the right is a little murder mystery generate that I had whereas things like you know somebody is jealous if there's a love triangle if somebody's jealous they have the motive for murder give me a house full of 15 people five of which has a motive for murder one of which committed a murder and which was not my line of sight of anybody else and their solvers for this don't ever write your own solver if you find yourself writing a solver this is often the way that really cool indie projects never get shipped it's the Northwest Passage of Indies so be careful when you do that so yeah congratulations you made a generator it's a possibility space is really cool artifacts and good expressive range you win right No so making use of generativity so you have a really great generator maybe you can generate many things but they're all maps and they're all mathematically unique and you loudly argue to your players that they're all mathematically unique and no they're not actually all the same thing but they aren't perceived as being unique and is this a problem I call this the 10,000 bowls of oatmeal problem and Michael cooks got a really great article on on what that meant for no man's sky score but also for us as Indies but I think that sometimes its problem sometimes it's not so there's different kinds of generative content some of its in the background if you have a bunch of trees it's okay if they're not all unique sometimes you just want procedure like perceptual differentiation but I can tell that those aren't all the same identical tree they don't look like clone stamp from each other but they're not like super unique sometimes they mean things like that are a little more unique that there is perceptual uniqueness so I can tell that the trees in this region are different the trees in that region and then there's also characterful the test for that is would you write fanfic for this object if you would write fanfic for the generated object which I would for some of the stuff that's come out on my generators the best one I ever got was an angry nun in a wedding dress from one of my patron generators and I've written I have written fan pay for her in my mind I really like this you know there we go I really like the scene in the matrix because it's technically in Canon it's a procedurally generated scene that somebody is made in the matrix and the whole point of the scene is you're looking at the woman in the red and you don't the threat around you the funny thing that that wachowski did with this scene I don't know if you all know this is everyone in the scene aside from the one in the red dress is twins and triplets so they managed to get procedural perceptual differentiation without perceptual uniqueness so even even their their understanding that you have the character sole woman in the red dress but you can have some kind of repeated stuff in the infill so knowing kind of how how interesting your PCG has to be alright I'm coming almost to the end this is one my favorite ones ownership is so important oh my god ownership is a huge deal I call this the the Victorian explorers phenomena which is if you have a big wide-open expansive space allowing people to find interesting bits of this space bring it back to their friends label it with their name and then hold it up in front of their friends and say look how cool I am for finding like smartblast squirrel you see this a lot in European museums so wet players take credit for your generativity sported a really great job of this like we promoted the heck out of players who had made content that was technically in the possibilities space of our thing and we could have found it if we'd looked hard enough but instead we promoted the heck out of the players and gave them little awards and let them even make rewards for each other and there's games that are doing really great jobs with this so like to our fortress does a really great job of letting people find the interesting content so go digging for the interesting content and then half of Dwarf Fortress is played on these storytelling boards where people then present their content that they found tell the story curate other people's content so let your players become creators curators and retailers I should go without saying that this is amazing fort which let people self promote using your generated content and yeah finally data structures these make your life easier tracery is entirely like the tracery generators are a JSON format you wouldn't think that this matters except that Jason is a really safe format so when I released tracery somebody was George Buckingham was able to make cheap offline quick which takes arbitrary JSON that Yahoo's on the internet have posted I'm said on his node server somehow it doesn't break anything and then post that to Twitter you can't do this with arbitrary JavaScript although I invite you to try and invite me I'll have pipe I'll have popcorn but with JSON this is actually possible this also allows you to do things like maybe test generators release new generative content safely and then also visualize your generators a couple years I think last year maybe there is a talk at the narrative summit by a group of guys who had done a game called ice bound which is a big generative narrative project and during their project they had made a whole bunch of really fascinating visualization for have we written enough content to cover this particular situation what are the different places where we could get to from this content and so they made them so like visualizations of how troublesome certain things were and how much less they had to write so that's a really cool thing you can do there so yeah in review here's this allow users to claim ownership where that etc but this should be in your zine and if you're still interested in PCG there's a ton of PCG going on here I even forgot to put one up on this slide that's the tech toolbox tomorrow so here's the PCG sampler menu of various cheap like TVC talks on PCT in various areas and yeah that puts me at exactly almost exactly time so I'm going to leave this here and I think we have 19 seconds for questions [Applause] [Music] [Applause] we have time for one question if you have a question come up to a mic in one of the aisles I have more beans for a tray three and all the stuff I just throw them at you that I guess I get the one question how often do you create something that's awesome but not performant that doesn't run fast enough generally how do you deal with premature optimization is the root of all evil but the question was what do I do if I get something that's awesome but not performant I find another use for it so the thing that made that generated skirt it's actually pretty slow but how often do I have to run a thing that I'm going to then send out to print a generative skirt that can actually run quite slowly the performance stuff be aware of it yes it's a tough question I don't actually have a good answer for that honestly like the simplicity versus good design a lot of the stuff that really makes PCG pop like this ownership stuff that doesn't take framerate so do really clever design around simpler stuff and you will people don't notice the depth of the generator all often but they do do they do notice the design around it great and I'll be in the I'll be outside in the hallway and then go to the speaker box [Applause]
Info
Channel: GDC
Views: 368,062
Rating: undefined out of 5
Keywords: gdc, talk, panel, game, games, gaming, development, hd, design, video games, game design, tracery, practical procedural generation, procedural generation, roguelikes
Id: WumyfLEa6bU
Channel Id: undefined
Length: 31min 30sec (1890 seconds)
Published: Wed May 31 2017
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.