Creating backstories for numerous characters

obsessionau

Member
Game Developer
Sep 27, 2018
268
368
I am currently working on a game here where there are over 60 NPC characters who each possess 3 personality traits that help to make them individual. These personality traits impact the outcomes of different events and actions in the game.

What I was wanting to do is to create random backstories that will fit in and explain their personality however despite having the same personality as 2-4 other characters, they would still need a unique backstory.

OpennessExtroversionAgreeableness
1: Conservative1: Introvert1: Challenger
2: Relaxed2: Ambivert2: Negotiator
3: Open3: Extrovert3: Adapter

So a person called Milena might be Open, Introverted and a Negotiator.

Any thoughts?
 

Nunu312

Smut Peddler
Game Developer
Jul 25, 2018
666
1,717
Given all these characters seem to also have pictures associated with them, it seems like it's probably a trivial amount of extra effort to just hand write the backstories. Of course I'm not suggesting that you think up all these backstories yourself, just think up some fetishes, traits and quirks and chuck them in a randomiser. Then hit random until a story that aligns with the look of the girl appears, just down your notes and expand it into a paragraph or two.

So instead of making a complex system that always works, you can just build something that takes a fraction of the effort and use it as a tool to speed up doing it by hand. Then if needs be you can also work in these traits mechanically but thats a different question entirely depending on how you've coded things and if you actually want to.
 

Icarus Media

F95 Comedian
Donor
Game Developer
Jun 19, 2019
8,364
31,479
So a person called Milena might be Open, Introverted and a Negotiator.

Any thoughts?
If they need a unique backstory then it's a case of 60 different stories to write. If however you just want the 3 possibilities to affect random backstories then that also could work. For example:

Step 1: Create say 10 backstories:
1) Lumberjack
2) Police Officer
3) Venture Capitalist
4) F95 Moderator
5) Sex Shop Salesperson
6) Doctor
7) Potato Vendor
8) Secretary
9) Stripper
10) Gardener.

Step 2: Create random variables i.e. Background_Place = and have it choose randomly from a selection of choices, so for example at the beginning it could read:

X is a Potato Vendor in a [Variable] stall that she set up [Variable YEARS].
So then each playthrough it could be that:

Playthrough 1: Character X is a Potato Vendor in a downtown stall that she set up 5 years ago.
Playthrough 2: Character X is a Potato Vendor in a suburban stall that she set up 15 years ago.

Use these random variables to create a background at the beginning for them. So your text will be different based on the 3 things you have mentioned.
 
  • Like
Reactions: obsessionau

Hentai_Kishi

Member
Game Developer
Jul 24, 2018
446
1,574
I don't know 100% how you want it to go but if you truly want to generate backstories you can simply use a bit of logic and a random number generator inside your code, certain numbers with certain personality traits can generate set type of events that happened in the life of a character, you can even take a look at these online generators where they generate characters, items and eve powers, try to get grasp on how those work. I don't think it's particularly hard to do this as far as coding skills go, it's just a bit of a logic puzzle.

Even if this system generates two similar backstories it doesn't really matter because even in real life quite a lot of people have similar life-stories, they came from the same place, the same ethnic group, the same neighborhood and etc. That being said, maybe it's not such a good idea to try and create a system that does this, it will take some time out of your development cycle. But of course, you decide.
 
  • Like
Reactions: obsessionau

obsessionau

Member
Game Developer
Sep 27, 2018
268
368
So what you are suggesting Nunu312 is to create a randomiser but use it just as a guide. Instead massage and re-write the result to ensure it feels fresh and unique.

My idea at the moment is to breakdown their past into sections that would describe their backstory.
  1. social demographics
  2. childhood event
  3. family life
  4. young adult event

So to create the backstory for any given person:
Firstly the game chooses one of these 4 sections and grabs a description associated with the openness value.
Randomly picks family life: Openness = 1 - " Abandoned as a child, Milena was raised by nuns in a strict religious convent where Milena was taught to be very conservative."
Extroversion - get random value from one of the 3 remaining
Randomly picks Demographics: Extroversion = 3 - "grew up in the red light distict in a bustling city, here she witnessed a lot that her young mind was not quite ready for."
Agreeableness - picks from remainding sections, life event.
Randomly picks Young Adult event: Agreeableness = 2 - "Whenever $girl got a chance she would escape with her friends and explore the fancier parts of the town."
So the full backstory might look like:
Milena grew up in the red light distict in a bustling city, here she witnessed a lot that her young mind was not quite ready for. Abandoned as a child, Milena was raised by nuns in a strict religious convent where Milena was taught to be very conservative. Whenever Milena got a chance she would escape with her friends and explore the fancier parts of town.
Combining this with what you have suggested might actually work a bit better to ensure numerous girls are not all being raised by nuns but also conserviative mothers or an overprotective father.
 

obsessionau

Member
Game Developer
Sep 27, 2018
268
368
Possible examples of descriptors for "Family Life", I would need to do something similar for the others although the events one could be combined:

Openness:
Open - Not being able to have a second child [Girl]'s parents pampered her from a early age, tending to her every whim.
Relaxed - As a baby, [Girl] was the only survivor in her family of a deadly car crash. She was taken in by one of her rescuers.
Relaxed - For years [Girl] helped her parents tend to their family's ranch. [Girl] has now moved to the city in search of work.
Conservative - Abandoned as a child, [Girl] was raised by nuns in a strict religious convent where [Girl] was taught to be very conservative.
Conservative -[Girl]'s overprotective parents encourached her to come home straight from school and not to socialise with others.

Extraversion
Extravert - [Girl] was raised by her mother who worked as a burlesque dancer. Despite the exposure to questionable men and themes, [Girl] got along well with the other dancers.
Ambivert - [Girl] was raised in a nice home and went to a good school.
Introvert - [Girl] was born sickly. Thinking that she would only burden the family. [Girl]'s parents exposed her to the elements. Somehow, she survived.

Agreeableness
Challenger - [Girl] parents where conspiracy theorists, for years they have programmed their daughter to question everything, even the mundane.
Negotiator - [Girl] was born to a royal house with a grand manor in a great city. she spent [Girl]'s youth in lessons on politics.
Adaptor - [Girl] was the child of house servants, and was trained to carry on the family duty. she carried things and polished silverware, but was never allowed to voice her opinion.
 

Nunu312

Smut Peddler
Game Developer
Jul 25, 2018
666
1,717
My one word of caution is to not over complicate the system you end up designing. You've got a great handle on what to do but unless you're trying to dynamically create girls at runtime, handwriting this much content is much faster. You can knowck out a randomiser in 10-15 minutes and it doesn't have to take into account all the variables of the girl because thats what your reroll button is for. It's an aid to help you generate content, after all it's much easier to flesh out something that exists than to sit down and build it from scratch.
 
  • Like
Reactions: obsessionau

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,486
15,384
[...] but unless you're trying to dynamically create girls at runtime, handwriting this much content is much faster.
Not only faster, also safer since it ensure that you'll not end with two pieces of back story that happen to be incompatible.

By example this girl would come from a really weird family, but at least she seem to have had a really interesting youth:
Relaxed - For years [Girl] helped her parents tend to their family's ranch. [Girl] has now moved to the city in search of work.
Extravert - [Girl] was raised by her mother who worked as a burlesque dancer. Despite the exposure to questionable men and themes, [Girl] got along well with the other dancers.
Negotiator - [Girl] was born to a royal house with a grand manor in a great city. she spent [Girl]'s youth in lessons on politics.
 
  • Haha
Reactions: Jaike

obsessionau

Member
Game Developer
Sep 27, 2018
268
368
Relaxed - For years [Girl] helped her parents tend to their family's ranch. [Girl] has now moved to the city in search of work.
Extravert - [Girl] was raised by her mother who worked as a burlesque dancer. Despite the exposure to questionable men and themes, [Girl] got along well with the other dancers.
Negotiator - [Girl] was born to a royal house with a grand manor in a great city. she spent [Girl]'s youth in lessons on politics.
You have taken all 3 descriptors from the same subject "family life" which is the main reason it does not make sense. The extrovert and negotiator descriptors need to come from different lists whose contents are standalone and not related to family life.

However the point you are making still undoubtedly holds true and carefully writing out 80+ profiles would give a much better result.

I took my above method and wrote a basic html script and this is what it produced:

Anna's personality : conservative | introvert | adaptor
Anna was the child of house servants, and was trained to carry on the family duty. she carried things and polished silverware, but was never allowed to voice her opinion. After finishing school Anna met a group of young adults who had shunned technology and embraced free love embracing the hippy lifestyle. Not enjoying the small town and its bleak opportunities she has now moved looking for a better life.
Ariana's personality : relaxed | introvert | challenger
Ariana was raised by her mother who worked as a burlesque dancer. Despite the exposure to questionable men and themes, Ariana got along well with the other dancers. Ariana grew up with a laundry list of phobias and neuroses. For years she took medication to help her cope but the side effects have ment she is having to find balances in her life and what she takes on. Young and nieve, Ariana was groomed for many months by her ex-boyfriend as he took advantage of her and her body. While she got herself out of the relationship, she still finds herself frequently being taken advantage of others.
Aspen's personality : relaxed | ambivert | adaptor
As a baby, Aspen was the only survivor in her family of a deadly car crash. She was taken in by one of her rescuers. Growing up Aspen has learned the value of hard work and submission. Aspen grew up with many male friends, many of whom have manipulated and taken advantage of her.
Calypso's personality : open | extrovert | negotiator
Calypso was born sickly. Thinking that she would only burden the family. Calypso's parents exposed her to the elements. Somehow, she survived. Calypso spent a lot of her teen years mixing with the wrong crowd and as a result has frequently found herself getting in trouble with the law. Calypso didn't learn to speak until she was nearly five years old, her treatment by others because of this has made her reluctant to try new things.
Daisy's personality : open | ambivert | negotiator
Not being able to have a second child Daisy's parents pampered her from a early age, tending to her every whim. Growing up she made a habit of wandering off for hours on end by herself enjoying her own company. Whenever Daisy got a chance she would escape with her friends and explore the fancier parts of the town.
Dakota's personality : conservative | ambivert | challenger
Abandoned as a child, Dakota was raised by nuns in a strict religious convent where Dakota was taught to be very conservative. Growing up Dakota has learned the value of hard work and submission. After falling in love with a local boy, she was told her feelings were heretical and so decided to cut herself from the people she knows.
 

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,486
15,384
You have taken all 3 descriptors from the same subject "family life" which is the main reason it does not make sense.
It was just an example regarding how easily it can loose sense when purely randomized.
With three categories and just five traits for each, you already end with more than 100 possibilities, and you seem to want to go further than that. This mean that you'll not be able to efficiently validate all the possibilities ; even if you use a screen to generate all them, then look at each one, there will be too many and you'll miss things.


The extrovert and negotiator descriptors need to come from different lists whose contents are standalone and not related to family life.
What make it worse, since it add a randomization (from which list come the family life related trait).


However the point you are making still undoubtedly holds true and carefully writing out 80+ profiles would give a much better result.
Not necessarily carefully written. You can perfectly found the solution midway. You use the randomization to give you the base, then you manually polish each one into the pre-crafted background. This will ensure that all background will fill right and be effectively unique.
The last point is also something that people tend to forget when it come to randomization. Even with tons of items, and with low odds, it's totally possible to have two girls sharing two traits description, and even to have two sharing the exact same three. Therefore, polishing the background after the randomization would permit you to make it effectively unique.
And it don't limit to girls sharing two or more description, for some case just sharing one description is already too much.
Take your examples, Aspen survived a car crash when she was a baby. Ok, it's plausible, but would be less plausible that among your girls, there's a second one that had the same fate. She can be an orphan, her parents can have had a tragic death, but make it be another death.

In the end, you can also write twice as many background than you've girls, and instead of randomizing each traits, you randomly pick one of this background. Each one come with three traits, so it would lead to the same result, but with a consistent background you have full control on.
 

obsessionau

Member
Game Developer
Sep 27, 2018
268
368
Not necessarily carefully written. You can perfectly found the solution midway. You use the randomization to give you the base, then you manually polish each one into the pre-crafted background. This will ensure that all background will fill right and be effectively unique.
The last point is also something that people tend to forget when it come to randomization. Even with tons of items, and with low odds, it's totally possible to have two girls sharing two traits description, and even to have two sharing the exact same three. Therefore, polishing the background after the randomization would permit you to make it effectively unique.
And it don't limit to girls sharing two or more description, for some case just sharing one description is already too much.
Take your examples, Aspen survived a car crash when she was a baby. Ok, it's plausible, but would be less plausible that among your girls, there's a second one that had the same fate. She can be an orphan, her parents can have had a tragic death, but make it be another death.
Yeah it certainly seems like the best option.

My above formula had 12 x 12 x 12 choices which is 1,728 combinations but with 60 characters that still means around 5 are orphan's from car accidents.