• Advertisement
Sign in to follow this  

Making random characters feel less random

This topic is 3339 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I've always hated the way AI characters feel like drones in the Bethesda series of games. For example, everyone in a particular city will have the same keyword list, with slightly varying responses to the same questions. Bethesda doesn't really have a good excuse for this, since their characters were not generated by the computer. But what about when that is the case? Many of the characters that the player can hire as part of his "gang" are going to be randomly generated. But I don't want them to feel like mindless generated dolls, or cardboard cut-outs that were stamped from a template. For instance, I would like for it to be possible for the player to meet one specific generated person and think "wow, that's a cool character", rather than "there's another sniper character". Games also have a tendency to make anything that's random become obviously random, because players encounter the situation enough times to see the recurring patterns. The player will meet a lot of these people, so I'm looking for ways to avoid this issue as well. Anyone have any suggestions? How can I make these types of characters seem more like unique individuals? Possibly some type of emergent learning? Maybe giving the player some ability to permanently influence them (IE, they become unique as you run with them)? Any other ideas?

Share this post


Link to post
Share on other sites
Advertisement
My opinions:

Give them randomly-generated personality traits within their gang's template and feelings toward various factions that change based on these traits. For example, you could have a trait such as 'Eco-warrior', which all druids get as a trait to start with. If they then see a faction who they previously had good relations with such as Orcs flatten a large area of forest, their personal respect for that group will drop, and the other members of the Druid group's respect for the Orcs will drop a little. You can then have random traits that members of a group will get sometimes; going back to our 'Druid' example, one may have the 'Authoritarian' trait, while another may have the 'Anarchist' trait: these two Druids will tend to argue, deterring a third Druid, who has the 'Peace-loving' trait, from the group.

Obviously you'd need to divide these traits into groups that only one attribute could be chosen from, unless you want anarchistic authoritarians and destructive druids running around. This would allow the groups to have conflict within themselves and between each other depending on the members' personal beliefs.

Another possibility is that you could randomly generate people with certain beliefs of varying strengths and throw them into the world, leaving the computer to sort out the primary groups that form based on traits - for example, large groups of people with the 'Religious' trait in massive quantities could form a priesthood. The different traits within this group could determine the nature of the religion - many 'Submissive' traits create religons such as Islam, while many 'Peaceful' traits create one more akin to Buddhism. You can also have special traits, like 'Family Loyalty' and 'Romantic Loyalty'. Romeo and Juliet would have high 'Romantic Loyalty', but low 'Family Loyalty', and lots of traits that made them favorable to one another. Then again, perhaps Loyalties should be sorted differently to traits, as respect to various factions?

You can then allow the personalities to shape the appearance of the character according to their group's beliefs and their own beliefs. A character with high 'Aggression' may wield many different weapons if he is part of a mercenary group, while he becomes supressed if a member of an extreme religious group that favours peace.

Share this post


Link to post
Share on other sites
Well a simple solution to characters saying the same random phrases is to just make a whole ton of phrases so that it's not likely you will read the same thing any time soon. I honestly think that most games suffer from not having enough varied dialogue. It's become commonplace to have an NPC say the same 1-3 lines over and over when you talk to them. I at least like the method of an NPC character becoming agitated and tired of talking with you if you continue to pester them.

I think it would work even more effectively if the character didn't just recycle back to the starting phrase after they run out of phrases, and instead just ignore you. (like on WoW, the characters grow agitated but then talk to them again and they just seem fine, which is lame)

A good solution to random yet interesting characters is to have a system that randomly generates a whole plethora of details and information about the character. Personality type, physical appearance, age, gender, what type of mood they are in, etc.

For example, instead of random huge guy #3412342 who says random huge guy phrase #234234. You could have:

Random huge guy who is a gentle giant that likes kittens and strolls on the beach, who is currently upset because he burned a batch of cookies and wants to tell you about it.

The difference is that you're just adding in a lot more details. Details make a character interesting. Are they overly dramatic? Are they sweet and endearing? Are they just a big jerk? What do they like? Hobbies? What is their occupation? You can pretty much generate an entirely random list of all sorts of factoids and then work them into your game and into phrases as well.

Share this post


Link to post
Share on other sites
Quote:
Original post by Konidias
Random huge guy who is a gentle giant that likes kittens and strolls on the beach, who is currently upset because he burned a batch of cookies and wants to tell you about it.

The difference is that you're just adding in a lot more details. Details make a character interesting. Are they overly dramatic? Are they sweet and endearing? Are they just a big jerk? What do they like? Hobbies? What is their occupation? You can pretty much generate an entirely random list of all sorts of factoids and then work them into your game and into phrases as well.


And on top of that, you could even make the different random attributes effect how they look visually, like the guy who just burned the cookies could be wearing oven mitts. I could still see this potentially being repetitive. To add more interest you could even randomly create community attributes, inside each community you take the attributes from the community and apply them to each family then randomize each family. Then, each family member inherits attributes of the family then they each are randomized further after that. I could see this being fairly complicated or could be fairly simple. I guess how complex it is just depends on you.

Share this post


Link to post
Share on other sites
The thing about generating from huge lists is the problem I think the OP was describing - it is obviously random. What if the person got randomly assigned likes playing chess at a competitive level but also impatient and illogical. What you need is to use a similar thing to what is used for random maps - some things are more likely to appear next to each other, while others are impossible.

Share this post


Link to post
Share on other sites
Well yes, you'd want your system to follow some sort of guidelines so you don't end up with characters who have conflicting personalities/thoughts/emotions. You could make a tree system so that personalities allowed only certain thoughts/emotions/actions. This way, someone who has a gloomy depressed outlook on life will never have a "jumping for joy, happy" moment.

I think basically what I was trying to say is that the more details you can add in a coherent fashion, the more interesting a character can be.Using a sort of hierarchy system to choose the random stuff would allow it to be a little less random and a little more logical. While still being random enough to not seem like all the characters are the same.

In fact, you could even have it check other characters in a database to see if the newly generated character seems too similar to one that already exists.

Share this post


Link to post
Share on other sites
If you're wanting your random characters to have a sensible selection of traits, I'd go through several layers of attribute generation. These would simulate the changes made to their life history, obviously at a very abstract level, but enough so that you wouldn't end up with a complete mish-mash of illogical combinations like a concert pianist who is into bare fist fighting or a surgeon who is afraid at the sight of blood.

You could start with some very basic traits like risk seeking/adverse, active/passive, intellectually curious/incurious etc.. Then built on these with more complex traits that are in sync with these: a risk seeking, active person is more likely to be into extreme sports; a risk seeking, intellectually curious person is more likely to be a hacker, etc. It will be tricky to figure out what the traits should be and it will be highly dependent on your game, so you will need to experiment.

The problem with this approach is that if this is entirely random you might not end up with the character you want. If your system is generating potential snipers and your random generator ends up with someone more in line with Francis of Assisi, then it's not going to make sense why he's there as a potential hire. You'll need to either figure out a way to work backwards - lock in "sniper", back generate the core traits and then build up again, or generate a massive number of random characters and only offer the ones that fit the criteria you require. I think either approach will work.

Whatever you use, it's going to be extremely difficult to not make your characters just seem like a soulless bunch of traits. Giving personality to random character is extremely hard, and will require a lot of prototypes. My gut feeling is that it will be easier if you allow the player's imagination to do the work; follow the path of the Sims and don't make your characters talk intelligibly, and communicate personality entirely through body language. You'll need a good animator though.

Share this post


Link to post
Share on other sites
This is some great input, from everyone.

Another simple concept struck me (while thinking about Trapper Zoid's mention of The Sims). I don't think The Sims neighborhood characters were random, but they easily could have been, and even if they were, they were somewhat memorable because they lived in your neighborhood, and constantly showed up to interact with you, or cause trouble for you.

I think meeting specific random people in different places as they do different things could really help bring some life into them. You might meet a female assassin hanging out at a night club, then later run into her in an alley somewhere as she's beating up some thugs that tried to jump her.

What if you could even take on a mission that just happened to conflict with her, such as trying to protect someone she's been hired to kill? Since she's generated, she can die without hurting the game's atmosphere or plot. But it might be more interesting if your previous introduction with her gives you a peaceful solution to the mission without doing that. In any case, if you did manage to get through the mission without killing her, she would likely be more interesting as a character.

It might also be interesting to introduce random characters with missions. You might save some unknown random girl from some thugs on a mission (where you learn her name, but not much else), then she later turns up somewhere else where you can acquire her tech skills.

It could also work with occasional bad guy characters. You might defeat "Grim" in battle while trying to fight the good fight, and because of that defeat, he develops respect for the "good side", turning him into a rough-edged hero. Having done battle with him in the past gives you a bit of history before you actually hire him.

Mixing in some of the suggested personality and skill traits, this might be something solid to work from.

Share this post


Link to post
Share on other sites
That sounds nice in theory... Just remember how much effort will need to be put in to making all of this. Unless you come up with some crazy good random generator, a lot of the stuff you're describing is going to have to be pre-made by developers. Generating random NPCs that can give out quests/items and such isn't too hard, but generating random NPCs that will grow to have an entire story arc about them is going to require far more work.

For the whole assassin thing, you're going to need to also generate the thugs she's fighting, along with any of the dialogue that goes on afterwards.

You're getting into the realm of non-generated NPCs at this point. You might as well just have a lot of "hand-made" NPCs that just seem random, since it chooses from an archive.

Share this post


Link to post
Share on other sites
That is a valid point. is it easier at that point to just hand make your archive of gem grade NPCs and randomly trigger their presence in the world, or is it easier to create a huge archive of traits and a system to logically create personalities from these traits such that they are memorable and self consistent and then create their stories as well. Either way, that's a whole lot of content.

PS. The trait selection engine would have to work in a multilayered way and pick traits from association groups are travel down a tree of traits picking between more detailed choices. Either way could work and would avoid conflicting traits.

Share this post


Link to post
Share on other sites
Traits shouldn't be too hard given a little bit of time spent on it. I'm sure they big dev houses could spare a few days for extra lines of flavour text even if it's not auto generated.

But I want to go one step further and say I'm tired of seeing empty worlds (few to no people) and those few people standing still just waiting for you to talk to (or kill) them. Don't they have lives too? MMOs are the biggest culprit here (SWG I'm looking at you), they are the ones that need it the most.

I realise everything takes cycles and development time, but surely with big budgets and powerful cpu's we can add a little more flavour into locales such as towns and villages. People doing things, maybe as simple as sitting at a desk with a pen and paper writing (nothing tangible, but just the action), then after a while get up, perhaps boil some coffee of go chop wood or tend to the chickens... That blacksmith is gonna need a break from beating that same sword over and over, maybe he should take a nap! And if there is a night cycle, they should all go home to bed!

Asking a lot I know, especially of current development houses. Would sure make a game like Oblivion a lot more believable. It should be easier on the cpu in games that are not sandboxes, as you move along that small village will get unloaded and not be seen again, but the experience will make the player feel more like it is more of a real world.

Share this post


Link to post
Share on other sites
Quote:
Original post by Konidias
That sounds nice in theory... Just remember how much effort will need to be put in to making all of this. Unless you come up with some crazy good random generator, a lot of the stuff you're describing is going to have to be pre-made by developers. Generating random NPCs that can give out quests/items and such isn't too hard, but generating random NPCs that will grow to have an entire story arc about them is going to require far more work.

In the situations I described, there would be no story arc. I would have a random mission, and need a character to play this part and that part. There might possibly be some varying dialog lines that pop up during the situation that could hinge on each character's personality. But otherwise, it would be just as easy to use a pre-existing character (one the player met in a night club) as one that was made up just for the mission.

How many lackeys and crime bosses do you rampage through in a typical game? They're just nameless play dolls. That's fine, but what I'm suggesting is replacing a few of them with these specific characters. Or in some cases, making the mission "play dolls" turn into these specific characters.

Quote:
For the whole assassin thing, you're going to need to also generate the thugs she's fighting, along with any of the dialogue that goes on afterwards.

That would be a random street event. People being mugged, ganged up on, or shot. The player will see that sort of thing a lot while just walking around. With a few design adjustments, I can occasionally have known characters be included in them. Some situational dialog would be nice, but I doubt I would go very far into it. You just happen to run into her while she was beating down some street thugs - something she does a lot.

Quote:
You're getting into the realm of non-generated NPCs at this point. You might as well just have a lot of "hand-made" NPCs that just seem random, since it chooses from an archive.

Nothing I've brought up so far would require that. I've probably just described it poorly.

Share this post


Link to post
Share on other sites
Quote:
Original post by JasRonq
That is a valid point. is it easier at that point to just hand make your archive of gem grade NPCs and randomly trigger their presence in the world, or is it easier to create a huge archive of traits and a system to logically create personalities from these traits such that they are memorable and self consistent and then create their stories as well. Either way, that's a whole lot of content.

For one thing, it would probably be even harder to hand-make them. Just hand-balancing all of their skills and traits would be a huge job. I suppose you could use a tool or point-assignment system to keep things balanced, but that would be nearly as difficult as a random generator.

Share this post


Link to post
Share on other sites
How to make a character randomly generated be unique enough for the play to say hey that's cool...

What defines a person? The people they interact with and random decisions that generate their background to make them act a certain way towards others.

So what you really need is a data base that links all the characters together and a random event generator that creates ripple effect of how other characters interact with that character with stats for various personality quirks. These quirks would be able to create all the "randomly" created stats and skills needed to make a cool NPC that seems unique.


Personally speaking i think back story is more important than stats for a unique character because for most classes of character they are really a dime a dozen and there are only a few exceptions.

Share this post


Link to post
Share on other sites
Quote:
Original post by BLiTZWiNGI realise everything takes cycles and development time, but surely with big budgets and powerful cpu's we can add a little more flavour into locales such as towns and villages. People doing things, maybe as simple as sitting at a desk with a pen and paper writing (nothing tangible, but just the action), then after a while get up, perhaps boil some coffee of go chop wood or tend to the chickens... That blacksmith is gonna need a break from beating that same sword over and over, maybe he should take a nap! And if there is a night cycle, they should all go home to bed!

This is definitely a plausible suggestion. None of what you suggested would be particularly hard to add to an npc. Animations could be kept simple... simple command scripts could be called to make the npc go from one animation the next, depending on the time or weather or whatever situation....

It's really just a matter of most massive RPGs wanting quantity over quality, so they just toss a ton of boring npcs all over the place to make it seem like there is a ton of content.

Sure the animations might take up more space, but I'd rather have all that fun stuff to look at in the game than the giant file size of the pretty movies they have that don't actually benefit gameplay in any way.

Share this post


Link to post
Share on other sites
Just wanted to chime in on the issue of having clashing/illogical traits: When I encounter memorable characters in books, most often they're memorable because their traits conflict. This makes them unpredictable, which is something that's refreshingly human because humans are a complex snarl of conflicting emotions, histories and impulses.

So if I encountered Saint Francis of Assisi the Sniper, the first thought I'd have (if my belief were properly suspended) is "wow, how the heck did that happen." I would wonder if he's like the Arthurian Legend's Green Knight, the paradox of a warrior waiting to be defeated. If I encountered the surgeon who fainted at the sight of blood (and again you've done something to mask that I'm looking at random traits) I would wonder what in the world would make such a character-- was he tortured? Did something change his objectivity or shatter his confidence in what the human body was, altering it from understandable organism to be treated to horrific, nebulous other? Did someone hack one of his cortical implants?

It's been said that stories work because humans are pattern making machines. If you provide details and (I think this is key) a sequence in time, we'll connect the dots. If your sniper was once peaceful, I might think he experienced something that changed his world view from loving to vengeful. Or vice versa if he is becoming peaceful (I think this theme was in Glimmer Man with Steven Segal).

I don't think this will work, though, unless you have certain traits dominate behavior. If a surgeon faints from the sight of blood, don't show him doing surgery. If the sniper is peaceful, don't show him killing (unless there are reasonable stressors we can intuit-- for instance, showing him struggling with killing would be far more interesting because aspects of his personality could be shown to be competing for psychological supremacy).

If you did this, a feature I think would be the capstone would be if you could change / influence these traits both directly and indirectly. If I'm hunting for a surgeon, a fainting at blood guy is probably going to make me annoyed if that's all there is to him. But if I can reason with him, plead or bribe and somehow get him to just attempt the action, then you will have transformed my experience from passive observer of traits (which has low emotional investment) to active involvement.

IIRC, Kest, your theme is sci-fi, so you could even make this an overt thing. Stealing from George Alec Effinger, what if there were "personality mods" you could give to people to help change or suppress their attributes, but which were limited use (causing trauma or exhaustion)? Now your random personalities have a sort of tactical gameplay overlay for the player, as he invests in mods to augment friends (and even enemies?) into the sort of characters he needs. Imagine getting a dirt cheap psychopathic sniper and just trying to keep the guy stable enough to do one mission for you, then later having to take him out because he's gone off the deep end and is assassinating any and all randomly.

Probably very hard to pull off, but I think it would be similar to the effect you get in Half-Life 2 with the gravity gun: Suddenly what's normally ordinary window dressing becomes a vital part of the player's gameplay and strategy.

Share this post


Link to post
Share on other sites
Quote:
Original post by Wavinator
Just wanted to chime in on the issue of having clashing/illogical traits: When I encounter memorable characters in books, most often they're memorable because their traits conflict. This makes them unpredictable, which is something that's refreshingly human because humans are a complex snarl of conflicting emotions, histories and impulses.

So if I encountered Saint Francis of Assisi the Sniper, the first thought I'd have (if my belief were properly suspended) is "wow, how the heck did that happen." I would wonder if he's like the Arthurian Legend's Green Knight, the paradox of a warrior waiting to be defeated. If I encountered the surgeon who fainted at the sight of blood (and again you've done something to mask that I'm looking at random traits) I would wonder what in the world would make such a character-- was he tortured? Did something change his objectivity or shatter his confidence in what the human body was, altering it from understandable organism to be treated to horrific, nebulous other? Did someone hack one of his cortical implants?

It's been said that stories work because humans are pattern making machines. If you provide details and (I think this is key) a sequence in time, we'll connect the dots. If your sniper was once peaceful, I might think he experienced something that changed his world view from loving to vengeful. Or vice versa if he is becoming peaceful (I think this theme was in Glimmer Man with Steven Segal).

I don't think this will work, though, unless you have certain traits dominate behavior. If a surgeon faints from the sight of blood, don't show him doing surgery. If the sniper is peaceful, don't show him killing (unless there are reasonable stressors we can intuit-- for instance, showing him struggling with killing would be far more interesting because aspects of his personality could be shown to be competing for psychological supremacy).

If you did this, a feature I think would be the capstone would be if you could change / influence these traits both directly and indirectly. If I'm hunting for a surgeon, a fainting at blood guy is probably going to make me annoyed if that's all there is to him. But if I can reason with him, plead or bribe and somehow get him to just attempt the action, then you will have transformed my experience from passive observer of traits (which has low emotional investment) to active involvement.

IIRC, Kest, your theme is sci-fi, so you could even make this an overt thing. Stealing from George Alec Effinger, what if there were "personality mods" you could give to people to help change or suppress their attributes, but which were limited use (causing trauma or exhaustion)? Now your random personalities have a sort of tactical gameplay overlay for the player, as he invests in mods to augment friends (and even enemies?) into the sort of characters he needs. Imagine getting a dirt cheap psychopathic sniper and just trying to keep the guy stable enough to do one mission for you, then later having to take him out because he's gone off the deep end and is assassinating any and all randomly.

Probably very hard to pull off, but I think it would be similar to the effect you get in Half-Life 2 with the gravity gun: Suddenly what's normally ordinary window dressing becomes a vital part of the player's gameplay and strategy.


Hmmmm... you have a very cool idea right there. I'm going to have to spend some time thinking about that.

Share this post


Link to post
Share on other sites
I did a text variations generation language many years ago which mutated a message randomly each time it was called. Basicly it would say the same basic information but it would be somewhat different esch time.

Combinatorics would be used in nested random/optional text blocks on many subpharses so that the text string produced would be significantly different lengths and words used.

The basic construct was the random selector where a list of substrings were specified :

[string1/string2/string3] (one is picked randomly)

allowing a number of different strings to be used (or an empty string).

This was then allowed to be nested :

[ substring1prolog [substring1_1/substring1_2/substring1_3] substring1epilog /
substring2prolog [substring2_1/substring2_2/substring2_3] substring2epilog /
substring3prolog [substring3_1/substring3_2/substring3_3] substring1ep3log ]


Variables could be assigned strings early so that the same phrase could be used
multiple times without mutating.

The usual player name/gender/time insertions were also done.

Basicly you would have the options be the same thing phrased a different way and extra descriptive words could be added (or ommitted with empty string options).

I even had a language construct that gave a fractional probability of each option being used -- something like [2,phrase1/3,phrase2/1,phrase3]
to shape the random usage of the options.


I also had subroutines which could substitute for text phrases/spiels which were used frequently.


Entire stories /serts of stories could be built up using a language like this.
Of course all 'messages' would need logic to decide which ones are appropriate at the right time (it would be dim for the guard to be talking about his pet dog when a dragon was just then attacking the town....)


Something like this could be an addon to the usual dialog tree mechanisms that many game engines use to add some variability to the text (I recall Neverwinter Nights had an interesting tool which could script fairly complex test logics)


---------------


Now of course this assumes the (company) game writer is willing to do the effort to make their NPCs incidental talk more variable -- which so many apparently dont even do (ie -most having each one only have a repertoire of 3 or so messages that they cycle/randomly spew). We have Gigs of memory these days so having the scripts use more of it is not a valid excuse.


Share this post


Link to post
Share on other sites
(preface, I didnt read everything here)
Left 4 Dead did a really cool feature, where in they have a tree of phrases that can be said after another phrase. The available branches in the tree are determined through both randomness, and previous events in the game. The starting queue for any phrase is usually a place or object in the world (and this is where you could change things up). Once a character encounters the object, it spouts some words, and the other characters create a random dialog after it. Though all the dialog gets reused significantly, there is enough variation in how the conversations play out that most the time it feels unique.

Share this post


Link to post
Share on other sites
One thing you need to consider is that most NPCs are not going to want to interact with your character. If you have some mine worker running home for lunch because he forget to grab it, he's not going to want to talk to you at all. If you have that same working coming home after work he's not going to want to talk to you once again.

This is me approaching it from: The main reason you'd want to have something randomly generated is to save a lot of work, like having cities that are actually full.

Now when you do say corner a bored merchant I'd probably do something off an event log. For instance when a rare event happens like some one stole from that merchant or a neighbor I'd madlib the noun, pronouns, and maybe some adjectives if race/sex/status/whatever or similar plays a role. Once again you keep these sort of common responses down to a bare minimum because generic people do not want to talk to you in most cases.

You could consider your case study going out into a city and stopping people to greet them

___

Share this post


Link to post
Share on other sites
How about having NPC-NPC relationships as a trait? Each NPC could have maybe 0-4 significant relationships, and each relationship could draw out story.

Then NPCs could have their own current mission in life, that the player can participate in.

Maybe Helga has a relationship of 'Family' with Bert. Drawing a card from a deck of quests under the heading of Family, Helga's task is to gather dinner from the garden for Bert. Maybe she has the skill Cook, and will make dinner later, or maybe Bert has the skill Cook, and she's just gathering ingredients. Or maybe neither one has any cooking skill, and she needs help. Or maybe both have Cooking skill, and they will be scrapping soon. (What's your Charisma again? That high? Oooh, this could get...complicated...)

A moment ago, Helga was just some NPC in the garden.

And that guy across the road, smoking a pipe and watching her? Jason also happens to have a relationship with Bert as 'Business Competitor'. And his card might be 'hire someone to get rid of that Bert problem'.

So let me ask you this: Do you wanna spend some time with Helga? And who is this Bert fella anyway?

[Edited by - AngleWyrm on December 31, 2008 10:25:24 PM]

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement