Jump to content
  • Advertisement
Sign in to follow this  
Kest

Making random characters feel less random

This topic is 3611 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
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!