go ahead and get started just warning you there probably will not be time left over for questions so if you have them I mean feel free to keep them in case I end a little bit early I do tend to talk very quickly when I'm nervous but in the worst case scenario keep your questions and you can email me or tweet at me with your questions and I'd be happy to discuss them with you let's go ahead and get started on writing modular characters for system driven games you might know me as the captain of Kitfox games which I started 5 years ago our biggest releases we're moon hunters a couple of years ago last year we released the shrouded Isle both of those featured what we would call lightly at least procedural characters and we are soon releasing boyfriend dungeon very exciting not system driven characters by the way extremely hand authored so
please don't interpret this talk as saying you must create system during characters or all games should have system different characters that's ridiculous because boyfriends sometimes need authoring but last year I also helped Tarn Adams of Dwarf Fortress co-edit procedural generation in game design and if that's a text book that sounds interesting to you please know I didn't write any of it but I did co-edit lovely 25 different authors on lots of different subjects I am extremely proud of it and I actually have a discount voucher for 20% off up here on the stage so if that's interesting you should grab it just in case and next year we're actually going to be working together again this time writing chapters both of us and also editing other people's procedural storytelling in game design so I've been thinking a lot about the kinds of things that make interesting generators the kinds of things that make terrible generators I've made some of some things that are terrible and some that aren't and for this particular talk
I wanted to say a huge thank you to Emily Short and Jason Greenblatt whose work I am building on extremely transparently in this talk so you're going to hear their names a lot and if you're interested in this topic you absolutely must follow both of their work ideally on Twitter but if not I guess in real life ish but let's get started so I'm going to assume that the goal of creating a system driven game is to create something emergent and uniquely interesting something that's more than the sum of its parts if all you really wanted was a and then B and then C obviously you would author it yourself but writers are often frustrated by systems based writing because it we want to write towards an experience and instead it often feels like we're asked to create a pile of unrelated words phrases and scenes and after a while of creating these word piles it's easy to feel like our efforts are actually less than the sum of our parts and it's especially easy to combine these and feet make it feel predictable or repetitive which Kate Compton has coined the oatmeal problem in her blog post so
you want to make a generator quote I can generate 10,000 bowls of oatmeal each oat in a different position and orientation and mathematically speaking they will be completely unique but the user will just see a lot of oatmeal so she points out that what we're really looking for is perceptual uniqueness not true uniqueness just perceptual and throughout this talk I'm going to refer to that as meaning which is kind of a fluffy hippie word but if you're a more math or even side it makes you feel better feel free to think of it as perceptual uniqueness because that that is kind of what I mean I'm just a little bit lazy and colloquial I guess and at this point you might be wondering why even talk about characters at all why not places or objects or worlds there is a whole universe of stuff out there to generate a civilization for example can be every bit as complex as a person but after contributing to a civilization Twitter bot GP lackeys unknown people's is a delight I realize the same
principles can be applied fundamentally across types of generators whether you're generating civilizations or furniture or people so if you're curious about text generation in particular I do recommend checking out tracery or cheap BOTS done quick which is what made this lovely Twitter bot but for this talk I will generally be assuming that you're generating actual characters full characters as game objects not just text generation so that if any time I refer to generating text I'm probably using it as a symbol for a greater data space that make sense but I'm focusing on characters in this talk because they are a common fantasy for procedural designers and a common nightmare for writers and they're a fantasy / nightmare for the exact same reasons which is that humans are excellent pattern finders and patterns and generated people feel more artificial and alienating than patterns that we see in generated places or objects there is no such thing as an uncanny valley for furniture right so if we can generate
people we can generate anything so ideally we want characters diverse information bits to funnel down into a singular perfect moment of understanding and so we need to change the way that we write and the way that our writing is used so that a bunch of words can become meaningful memorable moments for our players so I'm gonna break this down into four things overall the the base fundamentals are building orthogonal E and then we're gonna talk a little bit about creating higher-order meaning and then we're going to talk about surfacing that meaning to the player and then why iteration with your co-authors is actually extra important in this particular field so orthogonal T I'm going to use a lot I didn't have a lazy colloquialism for this one and I'm gonna use it because well to clarify what I mean by system driven I don't mean linear and I also don't mean branching that's kind of barely a system what I'm talking about is system driven games that provide a possibility space for the player to explore so rather than talking telling a particular story or a
particular set of stories we're instead only saying these are the kinds of things the kinds of stories that might be told in my game and those boundaries are here marked on this helpful diagram as X 1 X 2 and X 3 and that was coined as a story volume at Project Horseshoe a couple years ago and in Jason Grimm lots words a story volume quote encloses a family of emergent stories created by a set of carefully curated system parameters and these parameters are often fluffy things like themes and your setting and and so on maybe your story volume includes societal collapse or love ballads or moon festivals it's kind of up to you what your story volume is about but you are defining what is allowed and what isn't rather than what should be and the key for me though was to wrap my head around the orthogonality that in order for this beautiful space to exist x1 must be a completely different axis than x2 or x3 a value on x1 needs to be easily separated from a value on x2 so
that they can be combined to create meaningfully different results we're used to thinking of this physically we're used to seeing different character traits physically such as height or weight be combined freely to use an example from Emily shorts chapter 21 in my book height and weight can be considered orthogonal and usually are you can combine them freely you could have tall and thin or tall and wide whatever and you know usually we don't get the impulse to correlate these with each other we don't suddenly think Oh hair length should probably predict a skin color but we do tend to do that with personalities and it becomes very fuzzy very quickly so this might seem upfront like an example of for orthogonal personality traits combining these let's say you could have you know low or high of any of these four traits oh wow I can create 60 different personality types incredible unfortunately as Emily short points out this difference might not be observable or meaningful to the player these trap
these traits flirtiness and extraversion in particular do overlap in the kinds of behaviors they can create because both traits govern whether or not a character might want to talk to you and if so for how often how intimately so players won't always see the difference between a very flirty character versus a very extroverted characters there's also a problem in real life but that's a different question so she recommends for example thinking of what if romantic interest replaced flirtiness and that's interesting because it is observed under different circumstances a shy person can still express high or low romantic interest in the player and a highly extroverted can express both of these feelings and so they are much more modular and after you've picked your orthogonal trait this is where it starts getting very tempting to correlate them especially in a straightforward logical seeming way and you should resist this tation I mean you might be tempted to make someone imaginative but much more likely to fall in love with the player because that makes sense right or maybe it's more interesting or it's more
realistic or you're afraid of your characters being too random but it's bad and you should think about orthogonality very deeply because even if you're talking about orcs you want orthogonal traits not only for story volume reasons but also it allows for the possibility of interesting transformations part of the success of the Nemesis system is that depending on the input different traits can be applied and combined Atwell son here could be burned or scarred or strengthened in any number of system driven ways depending on what happens he could change completely depending on the player in a roll of the dice if archers or marksman here we're more likely to get I don't know a hand injury I mean it would make more sense but it would also be much less interesting and rich for the player to explore our Fagin all traits also allow you to hide some of those traits and reveal them over time letting the player get to know the character in an interesting way if being an acetic like Zana they're number four if being an acetic implied something
about what kind of Vice she had it wouldn't be interesting to learn what it actually was because you'd have a feeling of what it was already getting to know her would feel less like meeting someone and more like just filling out the rest of the cookie cutter in moon hunters we made the player myth a bit orthogonal such that different components such as events that you encountered or cause of death or your constellation could be combined at will which did reduce redundancy but the individual pieces remained maybe maybe two orthogonal I would say I mean system designers and writers should absolutely work together to keep your story volume free of arbitrary or logical limitations lateral meaningful connections between systems can make your story volume absolutely richer which we'll talk about in just a moment but direct constraints within a single system such as your character traits usually make your story volume poorer so let's think with our writer brain so how many people here identify primarily as writers writers Oh
interesting interesting how many identify primarily as system designers and what about narrative designers okay okay interesting interesting well I think it is important for system designers to put on their writer brains also but let's let's all do that and think beyond piles of words and descriptors to figure out what our meaning actually is I mean without a writer a person is a meaningful meaningless jumble of descriptors and making them feel powerful and coherent is more than just pruning their vocabulary if you do carefully make a pool of possible words you do get occasionally interesting outputs if you only generate words and actions related to spaceships and aliens it will feel sci-fi and it will occasionally be kind of sensible and interesting but it'll also start feeling like oatmeal eventually no matter how well you tune it because there will be occasional blips of meaning and the rest won't really fit together they'll just be bit and it's because you use the same
structure for all of them you've only generated the bottom most layer of meaning the the corpus of information so even if you have an enormous variety of options in that bottom layer players will still be able to sense deeply that they're all just buckets filled with different flavors of water artists and writers often create coherence in our creations kind of subconsciously we attach meaning and texture to the things we create and in this slide you can kind of see one character that feels aloof and one that feels a bit rebellious and one that might be a bit wistful this was conveyed consistently in the design of their posture or their costume and body and yet they are not cookie cutters so you have to help your algorithm do the same thing helping make connections between seemingly unconnected systems and content I'm going to talk about how to do that in a moment but if you can figure out a way to create higher-order patterns of meaning even a little bit you'll have more satisfying results because you're varying the shape of the bucket not just the water inside so what
are the themes of your world what is your story volume reveal about humanity in the universe is it a utopian world of curiosity and hope is it a pulp adventure of good battling and overcoming evil is it a female power struggle in isolation whatever your themes are these archetypes can become the highest layer of your systems shaping your bucket that your systems fill in with content so when you start thinking about what your highest level of meaning are this should be reflected in the very essence of your systems ideally not only in characters but also in places and objects and so on one of the best examples of this so far are Emily shorts and Niles of the perixx which is a generated novel it's a guide to fictional places in an England ish setting she defined these five suits in her corpus salt beeswax venom mushroom and egg yes she's wonderful and what she
did was she went through her corpus of information and tagged them all according to which suits suit or suits they could identify with so for example something that was tagged venom it could be something colorful or something deceitful something serpentine something ornate brightly colored yeah beautiful and these are things that normally a machine wouldn't think to associate normally it would just think to associate bright colored things with I don't know like even if you had a machine-learning thing going on it would say oh it's childlike or something but in the meaning of her universe venom became this underlying current where you get kind of sense Oh a venom place feels different from an egg place so if this is at all interesting to you I do highly recommend her talk going much more deeply into this for proc GIM 2016 entitled 5 strategies for collaborating with a machine but there's lots of different classification systems close at hand you can probably think of suits off the top of your head really quickly
if you don't to create your own I mean Tarot offer something I mean cards I mean at the very basic level you can think of elements even since what I'm gonna use my for my example now since we're all probably familiar with it card suits are so familiar what is a character or even a storyline a plot arc that feels more water like or feels more fire like even these very basic concepts that are familiar to us draw connections between things that seem on the surface unconnected such as excitability and the color read it's a very basic thing in us but it is not a basic thing for a machine so it's also important to remember orthogonal T it's tempting to script let's pretend we're we're procedurally generate effects I'm not working for Bioware I have nothing to announce for you unfortunately but I think it's a good example of something it might be tempting if we were to make that game to script certain races or factions or massive locations to be purely of one theme or another but that undermines the ability of the population to be varied and write early instead think of a
character's archetype or bucket shape as just another axis of modularity allow it to combine with your characters other aspects and I recognize to some extent that orthogonal 'ti and higher-order meaning are somewhat at odds with each other it is a fine line to walk like everything else in art and writing but for example if the asari were allowed to have water type and fire type and air type individuals it would make that race feel more believable and feel more meaningful your to your players I would hope that every race would have this flexibility moon hunters did use an extremely basic rigid form of this higher order meaning concept a somewhat by accident and it would have been much more effective if we had been able to apply the generation of different suits to the world and its encounters in a more coherent way for sure so now we generated maybe too much information about a character not only does it have all of its word piles but also it's in this suit right so there's a whole universe of potential background which
could show the player and we need to figure out a coherent way of figuring out what to emphasize assuming it can't all be given at the same instant we have to help the player understand it all as quickly and easily as possible perceptual uniqueness though can come in multiple forms I wanted to take a second to highlight caves of kud as having an interesting approach to meaning caves a cloud blurs the line between mechanical meaning and intrinsic writerly meaning here you can see Mehmet is an individual that I'm talking with here and somewhat down the page you'll see disliked by urgence for ruining the festival of Yarra Oaks now that first part disliked by urgence has mechanical meaning if the urchins are affection and if I'm nice to Mehmet if I share water with him for example the urchins might not like that because he's their enemy it's kind of standard faction mechanics however ruining the festival of neurotics is more uncertain it's possible that the that Jason and
Brian could patch in something about festivals of gods that is relevant here that can be ruined somehow or it's possible that is a random text generated and festival is just a cool word and he ruining is also kind of cool so that's what he claims happened and it never actually happened and there is no way to ever ruin a festival it doesn't matter for the player they have the mechanical meaning and they also have this this broadening of their horizon through fluffy writerly meaning and either way this character is perceptually unique so regardless of what kind of meaning you're going for you have to surface it to the player because the faster a player can internalize multiple important aspects of the character or at least be clued into what those might be the faster a player can also synthesize those into a single unique identity and remember them as a person rather than a file entry but each character of course gonna have so much data points that they could be conveying at once that choosing between them can be difficult and create waste a common way to write lines for a dynamic character in a system driven
game is to try and apply all the variables into one channel of expression such as the way they greet you you might have the the character check all kinds of variables about themselves and then choose what to say to the player this is very common and not recommended it's intuitive and potentially meaningful or you could end up writing a thousand of these the player sees one and it happened to be the same one as the last NPC that talked to them right so stacking too much this is what I learned from this is the stacking too much information and and systems into one channel of the character's expression is setting up for redundancy it's even worse actually when you're reacting to something about the players context which is also tempting because the player is the number one constant that all NPCs have in common so another approach might be that we look at our set of system parameters you know we write a bunch of things and we shuffle them together and we think well maybe we should surface the ones that
are best written let's service the interesting ones let's make those more common the problem there is that of course I mean yes things are generally interesting looking at first but D and E now just feel more repetitive and more common and instead a B C and F which were your less interesting lines are more rare and more remarkable for the player which is a little bit of a shame so one possible solution is to have your character express themselves in as many ways as possible orthogonal e broadcasting their information simultaneously the Civilization series does a little bit of this and that the leader characters simultaneously convey something through their posture about how they feel about you and then what they actually say reflects the most important current issues now of course beyond that they do kind of just throw all the information up there and you could theoretically see each of these fields as a different channel at least you don't have to ask cleopatra ten different questions I guess but it is a lot to take in at once the middle-earth series does more carefully separate out the procedural
information here like it's not like Zog is trying to express his class his race his level and his history with you all in one line you can get kind of what you need from the UI and then the writer elite bit from what he says but the problem is there's so much information and so much of it is abstract or needs to be observed over time that the gold standard has become to just throw it all on the screen at once and you can't physically show the player everything I know that you think it happens in Dwarf Fortress but it doesn't Tarn and Zac actually put in a ton of effort to figure out what information to actually include and highlight for example you'll notice in Dwarf Fortress it doesn't actually try to simulate dialogue between characters because it would seem too repetitive so instead even Dwarf Fortress has to think about what is the meaning of this conversation what are they trying to say and why so here is a strategy for deciding what is appropriate to highlight about your characters ok actually I have one more false start here don't take a naturalist approach
quite either because if you try to mimic the real world we often see someone's physical attributes first let's pretend this guy Choi Youngjae is a generated character we can see his physical attributes maybe he introduces himself we see his name and then you know we get to know him and over the years of getting to know him we find out his childhood in secrets um the problem is that in those first minutes he's just a name in a face and who here is terrible at remembering names yes so it's like basically you have no information about this character it's just a model but so you might as well not have generated anything else right so thinking again about perceptual uniqueness we shouldn't hide any of that perceptual uniqueness that we might have access to one of the best solutions I've seen to this is actually to have a human purse it for you bad news is a wonderful piece of procedural performance art Ben Samuel is a co-creator there on the right it's his job to pick out from a procedural character sheet which parts of his
character are interesting to act in dialogue with players in real time and he's amazing at it it's incredible but I assume you don't have the budget to send an actor home with your characters to interpret their data put your players so ok we have a crowd of characters what does the player need to know there is a pattern that I've seen across a few different games and that we've we've started to employ the first most important thing is if this character has been encountered before within the first second of seeing them they should know what has changed because if the K if the player has already created a mental bookmark for this character this is Tom or Choi or whatever young guy then I should know what has changed now he's social media famous wow that's interesting he has changed over time like people do the second most important thing is to remember what hit get a reminder of what their unique trait is um maybe this guy is a bodyguard he has really high
discipline and maybe nobody else has those in at least the nearby vicinity so in this area of the game these are the things we need to know he's a bodyguard with hide flin and also now he's social media famous but we still don't remember his name that's fine we don't need his name most of our bookmarks of other people don't actually have names attached that's why we forget them well you remember ism what is important and meaningful and perceptually unique about them you know if the players sticks around to actually observe what's going on maybe now we see his name and we're reminded and we get to see his current status we spend a little bit of time with him to see you know what's going on this is information that might change at any moment so I mean the player just kind of naturally will assume that it's not worth paying too much attention to but it might be relevant depending on your gameplay situation and finally if the player opts in then they can interact with the character for more detail which are the finer details that make him feel like a real character that the player can choose interact with or not now this does handily indicate the
amount of words we can generally afford to spend per message going from fewest on the left to most on the right hmm it also lets us prioritize where to spend most of our time writing a variety since obviously the information on the left side will be seen more frequently it doesn't make sense to budget extra variety there for example if you were to write a bunch of greetings for a character maybe make it mostly about the changes and notifications maybe that's what greetings should be about so now you have an idea of what meaning to give to your player as quickly as possible and I know iteration is probably an overused word in our industry it can make a lot of us shudder but I think it's worth calling out here specifically because we're not used to iterate insist UM's in the same way that we iterate our content we usually think that writing procedural content goes like this you dream of an infinite possibilities you sit down and you think of some actual possible outcomes for your system you tell the computer what to do with it and then yeah we have something beautiful and unique unfortunately programmers
generally will want to call this moment alpha it is not because you really do have to do a few more iterations with I would call both of these your co-authors your corpus of data and the systems that combine them you're both working with them and they both have their own flavors and textures they're going to give you so now that we know it's not alpha you really should take a moment to examine your co-authors and iterate as much as possible because it's not just your algorithm that adds flavor it's also what information you're putting in and this might mean your co members of your of your writing team or it might mean external public domain co-authors Emily Short recommends the characters of Theophrastus an ancient Greek philosopher who specialized in writing about personality types and example activities that different personalities do and feeding that in as a co-author will obviously have different effects than feeding in medieval descriptions of popes look there's a new character being generated right now so you can try
different co-authors as part of the iteration process and see how it adds unexpected flavor and texture to your worlds and you'll go around this loop a few times but you'll find better results the more that you are able to measure them not just as a writer for what jumps out at you as well written and what seems poorly constructed but also at a very basic level what does common actually mean what does too surprising mean in your system is it too weird not weird enough if you actually went through and helped your system identify words that were supposed to be more common and words that we're supposed to be more rare or strange then it's pretty easy to also have analytics that tell you how often surprising outcomes happen and whether that's what you actually want finally across all procedural authors I've talked to that have created anything interesting they all talked about the importance of creating room for exceptions and handwritten flourishes that break all of your rules you should absolutely allow occasional
authored surprising lines which totally buck all of the rules for example if your system always generates a character's childhood in detail maybe it usually generates traumas and parents and siblings and hometowns you should allow occasional flourishes like they have no memory of their childhood or something equally unexpected and that does take up some time in your planning so plan accordingly but it is an important part of every successful generator that I've seen so hopefully your Universe of characters now feels less like a bowl of oatmeal and more like a field of stars the more interesting ones are surfaced and made to shine brighter to the character and we can draw meaning between them for the player as much as possible and finally as we iterate we'll build with the player an understanding of our world and its rules that exposes the underlying meaning we want to tell with our story volumes that they can explore with their own agency which provides an experience that no strictly authored or branching narrative ever could thank you
it looks like we have time for one exactly one question so who has the fastest speed in the room you are perceptually unique if you make it to the microphone no no we're good all right yeah we have a question not a comment that's what I heard yeah it's not a comment it's really simple and I'm a little bit confused so you were talking about building orthogonality in your traits and you then comment on commented on how correlations between traits is not a good thing and I'm a little bit confused on why so for example if you look at your example of shadow of mordor the more melee based orcs tend to have a slightly larger scale than the range based orcs and that kind of made sense
and felt good with the gameplay and it seems a little bit odd to say that Co relations such as that would not necessarily be good and ran generation I mean it's possible that I'm overreacting to the instinct okay of a writer too strongly correlate this all over the place and so I err on the other side of never obviously there should be some in there and that's part of what higher order meaning is anyway yeah I thought that's exactly what higher order meaning was the how things are interconnected and build a something that's more than just a random blandness yeah it and iteration will help you sort through that it is definitely a blurry weird space to be in but I think that the more you iterate the more it'll become clear oh this is an interesting connection and this is a connection that actually weakens overall volume but it's it's up to you in your game sorry thank you I'm just curious all right thank you [Applause]
you
Auto-generated captions from YouTube — names and numbers may be misheard.
Distilling the key insights…
Game Developers Conference · 2026
Game Developers Conference · 2024
Comments