Hang tight while we fetch the video data and transcripts. This only takes a moment.
Connecting to YouTube player…
Fetching transcript data…
We’ll display the transcript, summary, and all view options as soon as everything loads.
Next steps
Loading transcript tools…
Mike Cook on PCG - invited talk - AIBU | AI for Experience Design | YouTubeToText
YouTube Transcript: Mike Cook on PCG - invited talk - AIBU
Skip watching entire videos - get the full transcript, search for keywords, and copy with one click.
Share:
Video Transcript
Video Summary
Summary
Core Theme
Procedural generation (PCG) is presented as a creative craft akin to gardening, emphasizing the iterative process of controlling and introducing "wilderness" to create unique and engaging content, rather than solely focusing on algorithms or final output.
uh please let me introduce you uh to the
audience we have
uh this is a hybrid meeting so we have
uh both students here uh in the lecture hall
hall
uh and we also have students
participating on resume
so when it's time for questions which
we'll do after your talk
we will take questions from the audience
but i would like to welcome you mike to
stockholm uh are you in london right now
or i am yeah yeah so mike is a
researcher at queen mary institute in
london uh where he works on ai for games
and in particular pct he's also the
founder of proc jam
and the author of one of the coolest programs
programs
that exists which is angelina who can
actually make her own games as being an ai
ai
so it's a real honor to have you here
mike i'm so happy to to see you too um
um so
so
yes please uh take it away
thank you so much mario um it's really
wonderful to be here as well and i'm
very jealous to all of you that you get to
to
be in a class taught by miriam because
she's one of my favorite people in games
research um and that was why it was
impossible to say no to this opportunity
to talk to you all today
um so thank you for that intro miriam
and hello everyone
my name's mike um and miriam's given you
a little bit of background on me already
um but today i want to talk to you about
procedural generation of course and i
understand that you've learned a little
bit already
and i wanted to do something a little
bit different with this talk i hope you
enjoy it and we're going to come to it
from a slightly different angle and
think about um why we use procedural
generation and what it can do for us and
what it's like to actually use it in the
wild so
i'm going to start my stopwatch so that
i know when we're 15 minutes over time
um i'm only joking miriam don't worry
so a little bit of background miriam's
already said a little bit um but i i'm
an ai and games researcher and also a
game designer and i work in a field
called automated game design
where we're interested in using um pcg
techniques to build ai that can design
games so we tackle really all kinds of
different generative tasks
and i also work in a field called
computational creativity um
and in there we're really interested in
how ai is perceived by people so we're
not just interested in whether ai can
make a game that's good but we're
interested in how people feel about that
game and how they feel about the ai do
they believe that it's independent and
do they believe that it's creative so
there's a lot of really interesting like
philosophy in that too
i also make games as part of my research
and in my spare time like uh condition
unknown and rogue process that we're
going to see a little bit of later
and if you want to talk to me but you
don't get a chance to answer you know
ask a question today or maybe you're a
bit shy or anything please feel free to
contact me later i'll have all of my
details at the end of the talk
so i am here today to talk to you about
procedural generation um and when we
think about procedural generation maybe
it's completely new um for some of you
or maybe you've played some games like
minecraft which which this screenshot is from
from
um we think about certain kinds of
things some of us might even kind of be
negatively biased towards procedural
generation it's been used in very
specific ways in the past so far
i uh founded a game jam all about
procedural generation it's actually kind
of a community we all get together every
year and it's very laid back and relaxed
we share lots of resources and help
um and it's all about procedural
generation and the slogan of the
procedural generation jam
is make something that makes something
and i really like this slogan um i think
uh very proud of it and i think it's a
great invitation to sort of join the
community and start making things
and when i sat down to make this talk
this was the first slide i wrote um
but then i realized that although it's a
good invitation it doesn't really
help people kind of get into it and a
lot of the questions that we get are
things like well where do i start what
techniques do i use it doesn't tell you
what it's like to really make
a procedural generator
and so today i'm going to cover it from
a different angle with a different meta
message and a bit of a
stretched metaphor
but today i want to talk to you about
procedural generation as a form of gardening
gardening
and i want to think about what that
means with you and think about hopefully
how that can give you a perspective on
what i think procedural generation is
for and how to
go about
thinking about it yourself so i hope
this is fresh and interesting to you and
i hope that you you enjoy coming on this
uh weird metaphorical journey with me
so the inspiration for the gardening
metaphor actually comes from a couple of
places the first is max kraminsky's
amazing talk at the roguelike
celebration in 2018. all of these talks
are up on youtube and i really recommend
looking at them if you're interested in
this topic but max's is maybe one of the
best talks i've seen given at uh the event
event
and in it they talk about gardening from
the perspective of the player so they
talk about games in which you have a
sort of gardening like approach a
relationship with the game world so this
is a screenshot from animal crossing and
you're really encouraged to sort of
engage with these randomly generated worlds
worlds
but as i rewatched max's talk i began to
think about how gardening kind of
relates to how we build procedural
generators as well
and it made me think of another example
which is um emily shorts uh
emily shaw's annals of the paris
um and this is maybe one of the best
pieces of generated text in existence i
would say you can get it online at in thewalls.itch.io
thewalls.itch.io
and it is a 50 000 word travel guide and
there's lots of segments like this so
this is describing a place called
hasselchester and you have like these
poetic descriptions of the place
sunlight filtered through rustling
leaves and it tells you things like the
mythology of the area where you can stay
where you can get a hot meal
who is the lord of the area all sorts of
things and it's all generated by emily
and in fact it was written for something
called the national novel generating
month where the challenge is to generate
a 50 000 word document um in one month
using generative techniques and
and
the thing that's really interesting
about it is um is that emily um includes
an appendix at the end um where she
describes the process of writing the
annals um and i think it's one of the best
best
segments uh about procedural generation
that's ever been written like it's one
of the best pieces of writing about
procedural generation um and if you only
look at one thing as a result of this
talk i really recommend you pick that
out and have a look at it
and there's a few sections in there that
really stand out to me and i've quoted
one of them here emily writes i spent
considerable time working on the machine
meaning the the procedural text
generator and its various features
before i produced anything that i
considered worth recording here
i would generate a few provinces worth
of content so that's descriptions of
like little towns
and then i would add that content to
this file and then i would read through
it and then i added to the engine new
content elements based on the
inspirations of the text generated so far
far
so emily had this really interesting
loop of working with her procedural
generator she would
write and edit things look at the text
that it generated add things to the
final output go back to the generator
and it reminds me a lot of the way
people nurture and tend to their gardens
um emily would
add some and some things to the
generator plant some new flowers prune
some dead foliage off that she didn't like
like
and then wait and see what grew what bloomed
bloomed
and then come back to the generator make
some changes and go through this sort of cycle
cycle
and i began to think about how
how
sort of satisfying this metaphor was not
just because of this cycle of growing
things but also
the sort of two extreme types of garden
really relate uh very well to um
types of content that we put in our
games and where procedural generators
start from so i want to tell you about
what i think that the two extreme types
of garden are and how that relates to
procedural generation
so in some gardens we have complete
control over absolutely everything in
the garden so this is an ornamental sort
of garden from iran where almost
everything you can see here has been
precisely and perfectly placed every
flower every tree the pathways the water
you know the hedges have been trimmed to
be a particular shape
and we can think of these sorts of
gardens as similar to when we make
content for our games by hand so when
we're designing a game um we place every
single uh individual bit of content in
the world in the soundtrack in the
storyline exactly where we want it to be
it is perfectly designed as we wish it
to be there's nothing uncontrollable
about it or unpredictable
and this is actually where a lot of
procedural generators start from so
if we are really good at level design
maybe some of you have made platforming
games before um
that might be where we want to start off
with our procedural generator we already
know how to make really good platforming levels
levels
and so what we often do is we start from
this point of
something that we know very well and
then we begin to think how can we give
up control over little parts of this how
can we begin to let some wilderness kind
of creep in and not have everything so
perfectly designed
and this is a very common path for for
many types of game designers so derek
you for example um whose name you you
may or may not recognize but um back in
the sort of early 2000s derek was
working on a number of indie projects on
his own
and he got a lot of experience designing
levels and all of these games are
completely perfectly controlled they are
tended to and ornamental gardens where
every single part of the level is
exactly where derek wanted it to be
but later on closer to the 2010s derek
was starting to make a game called
spelunky and in spelunky derek wanted
there to be some variation he didn't
want players to be able to memorize what
the levels were going to do he wanted
there to be unpredictability
in other words he wanted to take this
perfectly ornamental garden that he
would normally design
and then allow it to sort of grow
outside of the templates a little bit
and do things that he wasn't expecting
and so if you've not played spelunky
before this is what the game looks like
when you're sort of playing it you're
quite zoomed in but if we zoom out we
can see um the full scale of a level here
here
and if i add in some lines and what
you'll see is that this level is made up
of a 4x4 grid of smaller rooms and each
one of these rooms is based on a
template that derek designed himself
so derek's brought his knowledge about
designing levels the skills he already has
has
and then he's found a way to allow this
a very simple algorithm to take those
levels and
mix them up um to give up some control
that he would normally have over this
process of level design
and he actually layers on a little bit
more than that so each of these
templates he designs they actually kind
of look like this um and these these
tiles that i've labeled as 50
when they get loaded into a level like
this the game rolls some dice and either
that's going to be a solid block if 50
rolls high and it's going to be empty if
it rolls low and there's loads of little
rules like this for adding in traps and
enemies and treasure
and what it means is that the heart of
spelunky is designed by derek but the
game that people play is a bit like a
garden that's been slightly overgrown
there's some wild flowers poking out
through the stone walls and there's a
bit of moss on the side of the shed it's
not exactly as he as he designed it
there's a little bit of variation in there
so
one end of the spectrum is that we start
from total order and we allow a little
bit of wilderness to grow in the other
end of the spectrum is what i would call
total chaos so if you've ever kind of
come to a house that's not been tended
to for a while or you've wandered around
like an abandoned building site or
something like that you'll find spaces
which are completely overgrown there is
no control here whatsoever this is not
a manicured garden in any way there's
weeds and long grasses and odd
flowers that you've never seen before
and some procedural generators start
from these points as well
and so a common example is
the use of something called noise
functions so i don't know whether you've
come across these before but a noise
function is a way of essentially getting some
some
random looking numbers um that have
maybe some kind of regularity to them
but but not in a predictable way so what
we're actually looking at here is
two-dimensional noise there's actually
something called purlin noise and you
don't need to know exactly what that
means but
essentially if we give this function two
numbers um it will give us a number
between one and zero as the output
so every pixel on this image that you're
seeing here the x and y coordinates of
the pixel have been fed to this function
and it's given us a number between zero
and one
and then we've mapped that to a color on
the gray scale between white and black
where like zero is white
one is black and then point 0.5 is gray
and what you get with this noise
function is you get a very kind of
cloudy image you you get a sort of
unpredictable but very textured um output
output
and what people use do is they use these
noise functions to create organic
looking things so they were used a lot
in textures back in the 90s to make like
fire or clouds but a really common
application of them is to make worlds so
if we map
these numbers to kind of height
we can create maps so this colored image
here the white is sort of the tips of a
mountain and then there's like the brown
hills the green grass yellow beaches
down into a shallow water and then ocean
and all we've done here is mapped the
noise function to colors and it's
created a kind of world map for us sort of
of
and this is also can also be done in 3d
and in fact it's actually how minecraft
uh creates its worlds now
now
there are often you know a noise
function on its own won't do it for us
so what often happens is like this is
not an interesting world to play in and
so when people build these build games
using this uh sort of approach what they
often do is they often like combine
different noise functions and by the way
this was an oversight by me if you're
blue green colorblind i apologize this
basically just looks like the background
image it's just recolored um but what
they'll do is they'll get multiple noise
functions and then they might kind of
stretch them or rotate them and lay them
over one another and then what we could
say is um this extra noise function that
we've got could decide where we're going
to put trees in our world
um but maybe it's a special kind of tree
that only grows up a mountain and so we
have this sort of rule that says
if the height map is above a certain
height and the tree noise function is
above a certain value then you can place
a tree there or something so
so
this is obviously i'm obviously waving
my hands a lot here but um these are the
kind of approaches that are used in
games like minecraft so minecraft uses
lots and lots of noise functions and
randomness and but then it has ways of
shaping them and lots of rules that sort
of prune and control exactly how they
come out
but the difference between the approach
we looked at before with spelunky is
that this is starting out with something
which is very unpredictable and then
we're sort of refining it over time so
minecraft's world generator is the
result of a lot of small tweaks and
changes by people until they get
something that they feel looks okay
and there's a lot of disadvantages and
advantages to using this approach over a
handcrafted approach um one disadvantage
is that this is very unpredictable but
it's also very organic it's very uh
interesting to walk around in which is
one of the reasons why it's so pleasant
so these are what i think of as sort of
the two starting points for most
procedural generators some of us start
out from something that we feel
confident making something that we have
a lot of control over and then we give
up some of that control
others start out with something
completely random that may be kind of
messy and doesn't what isn't what we
want and then they find ways of
filtering and shaping until they get to
something which which they can use
and to me procedural generation is about
everything in between those two extremes
it's about figuring out exactly which
parts of your garden you want to become
overgrown and which parts you want to be
tightly controlled
and that's where the joy of
experimenting in the same way that emily
short did with her travel guide comes
from i think
so i wanted to take a little detour here
to talk about
that first type of generator that we
talked about with spelunky and making
something from something that we're
already confident making so
i don't completely know uh all of your
backgrounds watching this talk but
one thing that i found a lot with
procedural generation is that a lot of
people are maybe a little bit hesitant
or they don't know how to start and a
lot of people think that they should
focus on the right algorithm they should
look for the right technique or technology
technology
and i wanted to talk about a very
different approach today that all of you
can go home today and do without
touching any code at all
and start thinking about what it means
to generate something start thinking
about those processes and
and
i've decided to stretch the gardening
metaphor even further by talking about
rewilding so
rewilding is a word from ecology and biology
biology
and it's essentially the process of
letting somewhere revert back to its
natural state so if you have somewhere
like farmland that's been very
controlled over many years um rewilding
is sort of allowing that farmland to
become run over with things that would
have grown there before lots of animals
return that kind of thing
and it's quite a big thing at the moment
in the uk funnily enough
so what i want to show you today is sort
of how you can go about the process of
rewilding something which maybe you're
confident in making so what i'm
imagining for this section is maybe you
are someone who hasn't used procedural
generation before maybe even as a bit skeptical
skeptical
but you are really good at writing or
level design or music composition or
something so how can you begin to think
about what what this technique means and
how it could be useful for you
so what you can do is you can get some
pen and paper um and uh in this case i
already had some cards so i kind of
cheated a bit but
what i did was i built um i drew some
buildings that um i thought were cute
um and
however you do this um you might decide
that you want to write some text or
compose some music or draw something
else like some people um at some point
you're going to need to find some places
to kind of cut them up into pieces um
it's great if they're kind of all
roughly the same size like i have here
with my convenient cards um
um
and then we're going to essentially
build a generator out of this process
so once you've done this
you can sort of flip over all of your
cards and shuffle them together and the
reason we flip them over is because we
want to think about how our code views
this content so our procedural generator
doesn't know anything about level design
it doesn't know anything about drama or
story writing it it just knows whatever
information we give it so we start out
with no information at all
shuffle the cards out and then think
about what structure we want to lay
these cards in so if you saw before i
had them kind of like a roof and then a building
building
and so i'm imagining this is kind of my
imagined rule for for generating some so
i'm going to place two cards on top of
each other from the shuffle pile and
then flip them over and see what i get
and of course one of the problems is
that because i haven't given any
information to my generator um we can
produce things that don't make sense so
you can have a roof on top of another
roof so this is clearly not what we want
you might get similar results if you're
generating something else like a head on
top of another head or a body without
any feet or whatever that may not fit
the thing that you're looking for
so that's fine so at this point you're
going to get a pen
and we're going to flip those cards back
over and we're going to give ourselves a
little bit of information so
you could limit yourself just to sort of
doodling on the back with a particular
color some kind of tag or like a single
word but you can't write like a full
description of what it is it has to be
like one word something very simple
something just to give you a bit of
guidance um
and actually for this stage it's even
better if um once you've done this
instead of you dealing out the cards um
you actually give it to like a friend or
someone else someone who really doesn't
know what's on the other side of them
and once we've added this bit of data
this is kind of like giving information
to our our generative algorithm right
so we can now have a slightly different
um set of rules for when we're
generating this so instead of just
putting two cards we can now say okay
well we want the top card to say roof on
the back and the bottom card to say building
building
and this is an additional bit of
information we're using some of this uh
data that we've given our system
and now we get a nice building out of it
because we've we've created some
constraints and our generator sort of
knows a bit more about what to do and
we've actually got a cool output we've
got a bakery that has an observatory on
the top um which is like interesting you
know it's a bit different
and of course you might not want this
you might want this this might be kind
of inappropriate for what you need your
buildings for so you might need to add
more uh labels or more information or
change the way you generate
but once we've got this down we can
actually think about
well now that i've got this basic system
i could create two-story buildings i
could create a building with a roof and
then two buildings underneath
and you begin to think about how you
could extend your generator
and then as you do this and this is
again going back to the cycle of like
extending and then looking at it and
thinking you can see here that oh the
second story actually has a door on it
which means if someone walked out of
this door they would fall one story down
and then hit their head on the floor so
this is no good so you know we go back
and we add some more labels maybe we add
a label to the bottom that says okay
this is a ground floor building this has
a door on it
and then we add some second story
buildings that don't have doors
so we have this cycle of going back and
forth and extending our generator adding
little bits of information and we don't
need to write any code we can think about
about
how are we changing the space of
possibilities with what we do
so every time we change our process for
dealing the cards out every time we
change the cards in our deck every time
we add a different label to the back of
one of these cards
we're changing the possible things that
this set of cards can represent
and that's really at the heart of
procedural generation is
thinking about all of these
possibilities and thinking about how you can
can
shape the ones that you want to make
them more likely and get rid of the ones
that you don't want to make them less
likely and think about how much surprise
and unpredictability you want in there and
and
really these paper-based approaches are
very effective often we want to do
something very complicated we want to do
something very fancy that uses the
state-of-the-art cutting edge stuff but
that doesn't always make us better at
using procedural generation and actually
derek use spelunky generator is still
probably the best example
of a procedural generator in any game
ever because it was exactly what that
game needed it was perfect for that game design
design
and so even though this approach seems
very simple it really is something that
you can play around with yourself and
because you will be experts in different
things to me um you know i don't know
exactly where the best place is to cut
up a piece of music or what the best
labels are for pieces of text
you might think that instead of chopping
a piece of music after the fourth bar it
might be better to chop it horizontally
along each instrument and connect
instruments together instead of bars and
you might have different ideas about
what labels to use to describe
descriptions of items or characters
but this basic thing of chopping
something up labeling it and
reassembling it like a jigsaw is the
foundation of a lot of really impressive
uh procedural generators and it's it's
not complicated it's it's something that
you can really get started with very
easily and start thinking about many of
so
i talked a little bit about why i think
gardening is a good matter for
procedural generation and how you can
think about this process of
sort of iteratively changing the
generator thinking about what it does
going back to it and changing it again
and i wanted to sort of back that up by
showing you some of the things i've used
procedural generation 4. some of them
complicated some of them simple and
and
i'm going to try and squeeze in some
demos if i can as well
so the first thing i wanted to talk to
you about was a game i was developing
called rogue process
rogue process was an action
platformer kind of in the vein of
spelunky where you broke into
skyscrapers and hacked security systems
to steal things from corporations um so
so
i wanted the skyscrapers that you broke
into to be procedurally generated i
wanted them to be different every time
um but i also wanted to be able to quite
tightly control the kinds of experiences
that you had in them and so
i ended up using an approach very
similar to spelunky's so what you're
seeing here is a catalog of loads of
different rooms that i designed by hand
and the the game would assemble kind of
like spelunky's levels by gluing them
together and making a whole level out of them
them
and just like the example we just saw
with the buildings and cards and writing
on the back of them
each one of these rooms is labeled and
the labels don't tell it sort of whether
it's a building or a roof or anything
but in this case they tell it where you
can exit each room from um so if i show
you a zoomed in example
you can see the room in the
sort of center of the screen you can
exit it from the bottom left and you can
exit it from the bottom right and those
are the labels that this room has
in case the level generator needs to
know kind of where can i place this room
what should be placed next to it
so this would never try and have you
exit from the top left because there's a
wall there you can't get there so the
labels here help the procedural
generator know where exactly it can
place it physically in the um in the building
building
and the nice thing about this is it
means i have complete control over
everything inside the room and the
algorithm just needs to know about how
to connect them up so it really is just
like a jigsaw
and much like spelunky we also took an
approach where there's sort of random
variation inside so the traps that you
can see in the bottom right and the
boxes that you can see in the bottom
left they're all randomly added to this
room so they're not always here and they
will be here sometimes and they won't be
here other times or there might be
something different there
and this is also great because it means
that i can easily play the game see how
a room feels go back to the editor
change it and then come back again
so this was a very simple approach it
was because the game did not need
anything more complicated um ultimately
this was an action platforming game um
it it just needed a little bit of
procedural generation just a little bit
of wilderness and unpredictability
um i did have uh just a little uh this
is from like an early trailer for the
game um just in case you wanted to see
although this was actually when the game
had a very different um procedural
generator ironically i couldn't find any
footage of um the game like after that point
point um
um
so procedural generation here is not the
focus as you can see the focus is you
know hacking things and moving around
and so
the game's procedural generator is
simpler and it kind of sits in the
background and that's often all the game needs
needs
now if we want to look at slightly more
interesting uses of procedural
generation i guess um i wanted to talk
to you about some games i'm working on
now so this is a series of games
nothing besides remains which i made a
few years ago condition unknown which i
made in 2019
and stargrave which i started last year
and i'm still working on so these were
all game jam entries but stargrave i
couldn't finish so um i'm i'm sort of
working on it every now and again
uh when i have time
so these three games are
they all have a similar core approach
and it's what my
incoming phd student florence calls
generative archaeology games so florence
is an archaeologist
themselves and is bringing all of this
knowledge to their phd when they start
next month and we'll actually be looking
at these games from a perspective of
archaeology and kind of combining that
with procedural generation
so what do we mean by generative
archaeology games
so the way these games work is we
generate um a kind of a very small world
so it could be like a village or a
spaceship or a research station
somewhere but it's quite it's quite
small and contained
and then we run a simulation of this
world and record what happens
and the important thing about the
simulation is that it always ends so
you'll see what i mean by this in a
second but basically it's not possible
for it to go on forever there is
definitely going to be a reason why this
simulation finishes
and then once it's done we put the
player at the in the world that results
and we let them kind of wander around
and uh explore and kind of understand
what happened
so if you've played information games
like return of the obra din or
the outer wilds
it's a little bit like those but with
some procedural generation behind them
so we're using procedural generation to
create this uh big messy world but it's
a big messy world that has
a real history like everything is
simulated so the player can go and see
and learn about what happened
and i've been trying to experiment with
how exactly we can have that kind of
make fun gameplay
so in nothing beside remains nothing
beside remains looks pretty ugly i made
this in 48 hours so there was there is
no art um but
basically i simulated like a very simple
farming village
and i simulated things like the health
of the ecosystem how good their farms
were um the
the
kind of
whether they were getting attacked by
wild animals things like that
and eventually the population of the
village kind of dwindles down to zero
people leave or there's sort of a famine
or something like that and then hundreds
of years later you turn up and can
explore the village
and as you explore um the village sort
of tells a story of what happened so if
you can find a church for example
um the people that lived in the village
will have engraved things that represent
kind of the struggles that their village
was facing so in this example um there's
an engraving of fields of of crops
growing and that means that this village
probably had problems with their farming
so they were sort of praying for for
better and harvests
so this is a very basic idea it was
really just how would people kind of
respond to um
sort of exploring the aftermath of a
simulation um
and people were quite interested and
they even wrote some reports sort of
hypothesizing what they think happened
to the villages that they explored
so the next year i wanted to take this a
little bit further um and what i did was
i built something called condition
unknown so if you know about the movie
the thing um which is a great movie it's
uh based on this essentially there's a
research station in the arctic there are
six crew members researching there and
one day a monster gets unleashed and
they the crew either sort of perish
fighting it or some of them might escape
and you turn up after all of this is
finished um and in the style of return
of the obradin you have to identify all
six crew members and figure out what
happened to them
um and the way that we did this is i
built a much more detailed simulation so
if everyone in the research station has
like um a routine that they go through
and this routine can be interrupted by
things so if they spot something like a
fire or they spot the monster or
something like that their routine will
change but crucially it's not just that
they'll react it's not just that we're
stimulating their behaviors
but they will do certain things that
leave traces behind for the player to
find later intentionally so in condition
unknown then the crew members radio each
other and we record every radio
conversation they have basically it's
all templated text it's very simple but
because it represents real events um it
allows the player to do kind of
detective work later on
so i think what i'm going to do here is um
um
i'm going to
experiment by attempting to show you this
this
let's see
hopefully you can see this let me know
if you can't um
um and
and
this has some kind of interesting
consequences that i didn't realize so
you you start out i have no idea what
this is by the way because um every
single one of these is procedurally
generated and one of the problems is
[Music]
sort of unsolvable
problems there we go okay here's our weigh-in
weigh-in
so we can see here for example that this
this section of wall has been destroyed
um and this barrel here there are
there's descriptions in the bottom left
but it doesn't work very well at this
resolution but it says that this uh
barrel has been destroyed which means
that there was probably a fire here that
exploded and we can see that like
this person is wearing a lab coat they
have burns on them that suggests they
perish in a fire so
if we look at sort of the list of the
crew we might guess that this is
probably one of the researchers and that
can be part of our final report but the
important thing about the simulation is
that um if we find a terminal here and
we read a message um
we can see here that like this crew
member victor hansen sent a message at
10 49 that they had seen something
invading the station that they said it
was outside the corridor in lab one and
none of this is
you know fake this was real so we can
know that when they sent this message
they were probably standing somewhere
where they could see lab one and the
players can do like quite sophisticated
kind of um
uh they can ensure quite sophisticated
things just by
the knowledge that this is a sort of a
real um simulation
simulation so
so
i really you know i got even more
encouraged by the response to that
people really um liked this even though
it was it was a jam game i mean it
didn't really it didn't function
properly um there was a lot of things
wrong with it um but the year after i
began to work on a game called stargrave
and the way that stargrave works is we
simulate a spaceship with all of its crew
crew
and something bad happens that leads to
the spaceship being abandoned so it
could just be that they kind of crash
into an asteroid and they have to
abandon ship or it could be that there
was a mutiny or something like that
um and you turn up and your only
objective is to fix the ship and then
sort of fly at home to sell it
so what we're trying to do here is um in
nothing beside remains the procedural
generation was
kind of the focus but the player didn't
really have to do anything i just said
you know explore and have fun and see
what you think
in condition unknown there was an
objective tied to the procedural
generation so you had to identify the
six crew members you had to figure out
what happened to them and the problem
with that was that that wasn't always
possible because these are simulations i
don't have any kind of drama management
there's no ai deciding you know what is
appropriate or what's solvable
and it meant that some players just
couldn't solve their particular mystery
so in stargrave i'm trying to find a
balance here where the ship is always
fixable there's always a way to kind of
get get the solution to fixing the ship
and the crew are sort of an optional
mystery you don't need to find out what
happened to the crew but you can if you
want you can find logs from them they
are obviously usually responsible for
the ship crashing and it might help you
fix the ship but it's not it's not a
compulsory part of the system
so it's interesting in that sense
because i'm trying to balance how much
involvement the player has to have with
this procedural generator
and to go back to our idea of kind of
wilderness um these games are
unconstrained simulations there's no
there's no filters on them or anything
like that so it's a lot closer to our
wilderness example than our ornamental
garden example
and that's why i'm having to be very
careful with how i designed the players
relationship with this content because
we don't want to force them to sort of
we don't want to test them on how good
this this content is because we don't
know it's very chaotic it's very wild in
the same way that minecraft doesn't like
challenge you to get from a to b because
it doesn't always know if that's
possible instead it just leaves you in
this generated world and it trusts you
to sort of explore and find your own
kind of fun
so i'm looking forward to working more
on this um but it's uh it's a it's much
harder than the previous two
and the last thing i want to talk to you about
about
is puck so um i
i
you are the first group of people i've
talked to about this um miriam at the
beginning said that uh i
i
have built a software called angelina
which is true um and the next version of
the software angelina's getting a name
change so
um angelino will be known as puck and um
my my version of park will be called
angelina probably um but i'm hoping that
puck will be something that you can
download and have your own version of
that designs games and that you can have
your own kind of
connection to and customization of
now puck is still
in sort of testing i would say there's
still quite a lot of work to do
but um
i'm taking a very different approach
with it this time and i'm really trying
to focus more on
um an ai that
you as game developers could maybe
relate to as like a co-worker or a
colleague so something that works much
slower something that is more talkative
more communicative
and in general it it works in a way that
we don't always think ai of as kind of
working it's much more focused on how it
relates to other people in its in its
creative community people like you hopefully
hopefully
so um i don't have time to tell you a
lot in depth about park but i did just
want to talk a little bit about the
background of automated game design so
these are some games that my previous
systems angelina have made so
there's arcade games in the top left
hand corner then we tried to make games
about news like platformers based around
news articles in the bottom left
angelina entered a game jam um it made
some 3d games in the top right
and then in the bottom right i began to
work on
like a version of it where you could
watch it design games and this is sort
of a screenshot of what that looked like
so it could actually stream on twitch
and you could watch it sort of build
games test rule sets uh invent levels
and then kind of ask it questions in the chat
chat
and this is something which i never
fully finished with angelina and so i've
started with puck and this is sort of
like the main focus so the idea is that
puck is something that you watch work
it's not something that kind of lives on
my laptop like it used to hopefully it
will be something which you will be able
to interact with yourself fingers crossed
so the reason why i wanted to talk about
this is because i wanted to encourage
you to
kind of get a bit silly with the
procedural generation if you want to um
so we think about procedural generation
we think about generating like levels we
think about generating maybe music um
stor a bit of text
but procedural generation can be applied
to anything and you don't need to invent
a complicated technique often to make
that happen so let me tell you a little
bit currently about how puck designs
rules for games
so this is a description of naughts and
crosses um so the players take turns
placing pieces on a 3x3 grid the first
player to get three in a row wins
and just like we did before with the
level designs in spelunky or the
buildings written on pieces of card
we can just find places to cut
in this description we can just find
things that can be replaced by other
things so if i pull out these three
segments of text and i put in something
else instead
now it says players take turns dropping
pieces onto a 7x6 grid the first player
to get four in a row wins and now we've
suddenly transformed this into connect
four with very little change really um
and i'm sure that most of you could
think of you know loads of things that
we could spot into all of these
different slots to make up um completely
different rules we could pull ideas from
board games from video games and we can
just have the system kind of randomly
mix stuff up
and in fact just by looking at sort of
very very common folk games or board
games and that one at the bottom is kind
of a joke it's from go
but lots of rules are kind of simple um
and even a simple rule space is very
interesting to explore with an ai
now the problem with um designing uh in
spaces like this is that if you look at
spelunky's level generator basically any
combination of level segments is fun um
and it takes like a fraction of a second
to generate it's one of the best things
about the generator is that it can't
really fail
um however when you come to designing
something like game rule sets what you
find very quickly is that even a few
different rule variations result in a
possibility space that is just full of
bad designs
rules are very very delicate and again
this is something which you you develop
a feel for the more generation that you
do um and so what we end up with is
something which is actually full of a
lot of wilderness and it's very hard to
sort of filter for now
now
this is sort of a problem if you work in
sort of the big games industry because
you want reliability and that's one of
the reasons why you don't hear much
about automated game design from the
games industry because it's just it's
just not there yet it's not something
that they're super interested in
but wilderness can be kind of fun um it
can throw out a lot of things that you
don't expect
it can help you explore places that
people wouldn't explore normally
a lot of bad designs can become really
interesting designs if you make a few
small tweaks and
and
i think it's also worth pointing out
that building puck and building angelina
has made me a better game designer because
because
thinking about spaces of possibilities
and spaces of outputs
helps you think about what it means to
design a game it helps you think about
what a rule set is
why is knots and crosses or tic-tac-toe
designed the way it is
why are certain rules good in almost any
game and other rules um not what does it
mean for a game to be strategically
exciting or interesting
one of the fun things about working on
this version of puck is realizing that
lots of very famous games that we play
as kids just aren't very good on paper
like they shouldn't be very good but
they are fun to play like there's
nothing really exciting about connect
four if you were to compare it you know
if you were to ask a chess grand master
to look at it they wouldn't they
wouldn't understand why you thought it
was interesting but it's really fun to
play connect four
and so by thinking about these small
tiny problems um it helps you think more
about the bigger picture it helps you
focus on things that you that you might
ignore when you're stuck in traditional
game design mindsets
so one of the ways that that we used to
sort of
filter out that wilderness um with puck
is that we get puck to play these games
this is sort of a it was the only video
i could get
because puck makes a lot of bad games so
you're seeing kind of an animation here
of a very bad game being played but you
can see the the squares are changing
color as it plays the game and you can
see its score is going up on the right
and what puck does is puck records every
single game it plays and it keeps all
the data even the games that are really
bad even the games that are obviously
bad that that you can't even place
anything on the board and that's because
understanding what makes a bad game is
as important so this wilderness is
important for puck to go through i think
and i think in the long run it makes it
a better game designer or at least
that's what i'm hoping
um and i thought i'd show you just just
one more um uh quick demo i think i've
got time um
very briefly
uh which was something which puck came
out of um very recently
and this is a two-player game but puck
mixed in some of its rules from games
like bejeweled match three games so you
take turns placing um
uh icons on a board and your objective
is to have more pieces on the board than
your opponent
and obviously if we were just going to
play back and forth with no other rules
i would win because i went first but if
you make four in a row all of your
pieces disappear um
and so you play this very delicate game
of cat and mouse with the ai where
you're both trying not to make four in a
row and you're trying to force the other
person to make four in a row and it
turns out this is a really good game but
it's so counter-intuitive that when i
first saw it i thought puck had made a
mistake because it just doesn't seem
interesting it doesn't seem good um i'll
try and uh make a um
i'll try and get like a link to this
particular game for you so you can play
it later
because just looking at it doesn't
really get it across but play a game of
it see if you can beat the ai and see
what you think um
so park isn't at the point where it's like
like
making amazing games yet but it's coming
up with things which are interesting
things that i hadn't thought of um and i
put that down to kind of going through
the wilderness i put that down to that because
because
most people avoid that they don't want
to go through these weird ideas um but
ai are able to explore those spaces for
us and come up with interesting alternatives
alternatives
so i think i'm at a point where i should
begin my wrap-up so i've just got a few
slides that i want to leave you with
if you go online and you read things
about procedural generation you're going
to see a lot of like gdc talks about
consistency and player experience and
how people feel about the content and
things like that
and that is important if you're
designing games it is but the one thing
that i want you to take away from today
is that building a procedural generator
is a craft it's a practice
and it can be something that you enjoy
doing even if you don't use what comes
out the other end i've built a lot of
generators that weren't used for
anything i just wanted to to have that
feeling of making something that makes
something um and i i liken it to
something like
painting or stitching or something like
that a creative art form that's just
sort of fun for the sake of it
and to stretch the gardening metaphor a
little bit further you know you don't
make you don't have a garden so that you
can grow flowers to pick and sell or
give to people
part of it is just the joy of engaging
with nature and learning about all the
different insects and flowers that are
in your garden and having that
experience about sort of just being
there while something grows you know and
then appreciating your hard work afterwards
afterwards
there's this thing in procedural
generation called the thousand bowls of
oatmeal problem
and it's used to criticize uh procedural
generators that aren't very uh good
good
so the idea is that you know
if you make a thousand bowls of oatmeal
they're all unique they're all different
but they all kind of look the same
they're very boring you know people
don't want that they want a procedural
generator that makes lots of different
types of content
but the thing i want to just leave you
with is the idea of what it would
actually take to build a machine that
made bowls of oatmeal like people spend
a lot of time perfecting their oatmeal
recipe and finding the exact balance of
ingredients that they like and i imagine
that if you built a machine to make the
perfect bowl of oatmeal you would learn
a lot about not just oatmeal but cooking
in general your own tastes
and it would be a kind of a large
project probably
and so when we think about things like
this when we think about procedural
generators it's easy to get tied up in
just thinking about the output but it's
also about the process of making and
that's kind of the thing i wanted to
give to you today it's
it's
so you know we talked about how
procedural generation is like tending to
a garden we talked about the two types
of garden total control total chaos um
this is uh someone's garden where
they've ended up getting rid of a bit of wilderness
wilderness um
um and
and
we also talked about thinking about
processes and thinking about
what you want to achieve with a
generator right so it's not about the
algorithms you use or anything like that
it's about your understanding of what
you're making and how you want to cut it
up and reshape it
and that's really the most important
thing is just playing around and practicing
practicing
and above all else i hope that you sort
of enjoy the process of making things
that make things so it's you know that
slogan for prop jam is not just about
getting in there and having the finished
result it's all about having the fun of
experimenting with generative systems
and learning something about the thing
that you're making um as you do so
okay that wasn't so bad for time um
thank you so much for listening to me um
there's more things from me on my
website possibilityspace.org including a
couple of tutorials about procedural
generation and i have little interactive
javascript like level generators that
you can click and change so you might
like that if you've liked some of the
stuff i've talked about today
and as i said at the beginning if you
want to talk to me about anything you
can tweet at me you can email me and i
also wanted to shout out both of my
amazing phd students eunice and florence
you should follow both of them on
twitter as well because they're doing
very exciting work in these sorts of
areas so if you like this talk you'll
like what they're doing as well um and
yeah that's all i've got to say i hope
it was uh i hope it was interesting and
i hope you enjoyed it and thank you so
much for having me
wow mike what an amazing talk thank you
i don't know should i should i keep that
slide up or do you want to see my face
this is recorded uh
anyway so
like i don't know how to watch look into
this camera but
uh this is recorded anyway so it's going
to be there ah the slide um
um how
how uh
uh
do you have any questions like right off
the bat yes
is that something we should as artists
like looking through or
so i've i've not used houdini myself if
houdini is what i'm thinking of it's a
tool um there are a lot of kind of
visual effects tools and things like
that which
um allow you to sort of
make generative materials or shaders or
effects and things like that i think
they're really they're really cool tools
um and especially if you want to go into
the games industry i think you might
find it like a useful tool to pick up in
the same way that you might learn you
know photoshop or something like that um
um
there are if you do want to get into
this kind of thing though there are kind
of i don't know how expensive houdini is
um but there are kind of free ways that
you you can get started by looking at
sort of old-school attempts to generate
shaders for things um looking at those
noise function stuff looking at the demo
scene um i don't know if you're familiar
with this but there are a lot of people
it was it was more a thing i guess in
the 90s and the early 90s um of writing
the smallest programs you could that
made these beautiful 3d animations and
you might like that as well for the same
sort of thing um but if you can get a
copy of houdini i think it would be an
interesting thing for you to pick up
especially if you're a visual artist for sure
cool
the demo scene was huge at least in the
90s in stockholm i'm not sure like how
it is now
um well still there's still some people
going on with it yeah
yeah
more more questions i'm also going to
check if oh kate says something uh
bizarre barber
is a game that uses houdini to create
characters for a vr game um
um
yeah she's also posting uh a twitch
those of you who are attending through zoo
zoo
do you have questions
so i have to say that it's super
interesting to hear about puck
uh and
it's really i really look forward to to seeing
seeing
uh what's uh what's gonna happen with
that and if you want to it would be
really if you could send that link uh
that you said for the game that you
showed last that would be really nice
now i'm kind of i'm trying to look at
you at the screen that's why i'm looking
i'll send you a big list of uh sort of
things that i've mentioned in the talk
um in case people just want to sort of
you know it's easier to send around via
email then maybe um so links to things
like analysis of the parigs as well and
some of my other work that people might
be interested in um yeah
yeah
and if you're interested in automated
game design i made a
much longer talk about that which is um
it's edited more like a youtube essay so
it's very light there's you know there's
uh it covers a lot of ground it covers
the history of the field so if you're
interested in puck specifically any of
you um i'll link you to that video as
well you might be interested in that thanks
thanks
that would be fun uh
uh
there was something i was kind of making
notes while you were talking um about
things i wanted to uh remember that is
hardly possible to read
something like i mean you talked about
this uh oatmeal uh problem and we have
uh talked about it um during the course
as well kind of in relation to
some very well-known games
and and that's something
so when we have been talking about pcg
and machine learning we have been
discussing the fact that
uh well the oatmeal problem obviously um
in pcg
uh and when we have been talking about
machine learning we have been uh
also talking about what kind of data do you
you
uh feed into into your um
into the learning uh algorithms we
looked at the you know you remember tay
from from 2016 that this microsoft bot that
that
kind of ended up in this catastrophe and
i was curious like
mike if you
like do you use any machine learning at
all and if you would uh how would you
like go about it
yeah that's a good question i i actually
i've it's been funny to watch machine
learning expand over the last decade
because um
over the last few years i now get street
questions from students asking
asking about the machine learning i use
in angelina they just assume i do they
don't even ask if i do so at the moment
i don't use
any machine learning at all in any of
these systems and
part of the reason is because of
computational creativity which is that
field i mentioned at the beginning where
i really want i want puck to be able to
explain itself
and i also want people to be able to
feel they really understand what puck is
doing they can see each sort of step of
the process
and machine learning systems can explain
themselves but to some degree it's
there's a lot of research going into
that but it's not quite there yet and i
think people
there's still a big gap in public
understanding as well so i really like
keeping that that away however that said
um i think puck might be the first
system i use a bit of machine learning
in and what i'm hoping to do is
have it learn from its own in its own
kind of experiences so
it plays a lot of games and it records
everything it plays about them and so
hopefully i'm hoping it can kind of learn
learn
only on what it has seen um rather than
uh what other people have seen and part
of the reason for that is that
i'm hoping that like your puck um might
have different experiences to mine and
in the future i don't know if you
remember but when we were at the shonan
institute um we had a work group where
we talked about sort of ai systems that
that learned from the history of games
or that could share their experiences
with each other and that was was very
influential that that's made me kind of
think about that stuff so
i'd love to um
include include a bit of that in the
future but right right now i don't but
there's some fanta there's some like
terrific work out there um i would look
at the work of matthew gosdale for
example um ahmed khalifa
um i'm blanking on some names anarag
sarkar as well maybe i'll add some of
those to the to the list of links i send
you as well um for some of the students
who are interested in pcg and ml yeah
that would be great
um and because i kind of thought about
that when you talked about puck and
mentioned that you also had
talking and you know telling about
their process uh so that you could chat
chat with them
um that was like yeah i can't wait to to
see more of that work
thank you very much
and hopefully i can maybe maybe i can
still come to stockholm sunday and see
um all of you and uh and give another
lecture in person yeah
we let's find a way i mean it's
it's europe you should that doesn't that
would be great
uh let's see we have we are running out
of time it's two minutes to five uh
uh so
so
let's keep in touch i'm going to post
all the links and everything uh that
makes sense on our course website
so that you can get access to it and
also i'll cut this talk and and put it
up so
mike thank you so much again for uh for
joining us it was very much appreciated
thank you all for having me it was great
it was really great yeah and hope to see
you soon post pandemic definitely yeah
take care everyone and uh yeah get in
touch whenever i'm always here to chat okay
okay
bye bye cheers
cheers [Music]
Click on any text or timestamp to jump to that moment in the video
Share:
Most transcripts ready in under 5 seconds
One-Click Copy125+ LanguagesSearch ContentJump to Timestamps
Paste YouTube URL
Enter any YouTube video link to get the full transcript
Transcript Extraction Form
Most transcripts ready in under 5 seconds
Get Our Chrome Extension
Get transcripts instantly without leaving YouTube. Install our Chrome extension for one-click access to any video's transcript directly on the watch page.