2:34pm - Well I'm not sure how long I'll have for work, since I've got errands to run with Rob today. But for now I thought I'd spend some time working.
I've put some thought into it and I figure that the best way to express the personality, emotion, and relationship is through modifying the NPCs conversation style. This is kind of a huge endeavour, though, since it means that for each combination of personality, emotion, and relationship values I have to assign a distinct conversation phrase for each interaction. That'll balloon into impossibility pretty fast, though, so I've got to think of a better way.
Let's do some exercises along this train of thought. We'll start by looking at the potential values.
Honesty-Humility
Emotionality
Extraversion
Agreeableness
Conscientiousness
Openness to Experience
Anger
Disgust
Fear
Happiness
Sadness
Surprise
Adoration
Trust
Superior/Inferior
The first six values have positive and negative scales. The emotions only have positive scales, and mix. The relationship values will have positive and negative scales as well, for dislike-hate and distrust.
It seems to me that in communication, there's various levels of formality, and the one you choose depends on your relationship, your emotional state, and your personality together. Someone low in Honesty-Humility and also Conscientiousness would speak in a less formal tone than someone with the opposite values, for example. Likewise someone angry or disgusted would be less likely to use formal language.
So I can use a level of formality to show off some of a character's personality and emotions in language. But that's just a start.
What else is communication made up of?
Oh of course, besides spoken language there's facial expression and physical expression. There's also fashion; how we choose to present ourselves says a lot about our personalities.
Ah before I forget again, I also thought about a third relationship qualifier, with regards to formality. Superior/inferior. When you're talking to the mayor you tend to be more formal, unless you're also a mayor, or the prime minister. Unless you buck tradition and hate formality, that's personality too. Anyways I'll add Superior/Inferior to that list I made earlier.
Now, unique facial expressions for every character would probably be very difficult. But using the same ones for every character would be bland and drain some of the personality away. So I'll probably use some sort of paperdoll system for creating character portraits, so they can share expressions without looking the same.
Physical expression is a little more difficult. That'd have to take the form of animations the characters play when talking. Probably they can use the same animations on different models so they don't count up too high and still look different.
In addition to all that, there'll be emotionally charged words used depending on the emotional state, and terms of affection for friends, lovers, and enemies.
I could further differentiate characters by giving them an accent or quirk, but that might be pushing the system too far.
3:05pm - I'm thinking that for communication with the player, the AI characters will use dialogue boxes with dropdown responses from the player, and there'll be a bigger window for talking to the NPC about topics.
You can get an NPC's attention by clicking on them with your mouse, stopping them from what they were doing unless they think it's more important than talking to you. Then you'd walk over and initiate conversation.
Basic conversation with a stranger would go something like this:
Click on the NPC. They stop and wait for you to get near. You get near and the conversation starts.
NPC: -Procedurally generated greeting- -dropdown for response: Formal Greeting, Informal Greeting, Rude Greeting-
NPC: -Procedurally generated response, asking what you want- -Conversation topic list appears, allowing the player to select what they want to talk to the NPC about-
NPC: -Procedurally generated response, sharing or denying information- -dropdown for response: Either grattitude options or disappointment options depending on the NPC's answer-
Loop back to the NPC conversation topic list depending on if the NPC still wants to talk to you, and end the conversation when the player chooses to say a farewell, or the NPC nolonger wants to talk to the player.
That's how it would go I think. The procedurally generated parts will be based on stock phrases modified by the personality, emotions and relationship values for the character.
I wonder if I'm missing anything?
Ahh I thought of something. This only really covers conversations between two individuals. Group conversations will be more difficult. Hmm...
I'll try and start making the single person conversation engine to start and expand upon it for groups when I can.
3:29pm - Getting curious about the topic, I googled Procedural Conversation Generation. Found some interesting stuff, including this: https://berkin.me/rant/
3:35pm - Alright, Rob is ready to go so I'm gonna end it here. Got some good thoughts out today.
I've put some thought into it and I figure that the best way to express the personality, emotion, and relationship is through modifying the NPCs conversation style. This is kind of a huge endeavour, though, since it means that for each combination of personality, emotion, and relationship values I have to assign a distinct conversation phrase for each interaction. That'll balloon into impossibility pretty fast, though, so I've got to think of a better way.
Let's do some exercises along this train of thought. We'll start by looking at the potential values.
Honesty-Humility
Emotionality
Extraversion
Agreeableness
Conscientiousness
Openness to Experience
Anger
Disgust
Fear
Happiness
Sadness
Surprise
Adoration
Trust
Superior/Inferior
The first six values have positive and negative scales. The emotions only have positive scales, and mix. The relationship values will have positive and negative scales as well, for dislike-hate and distrust.
It seems to me that in communication, there's various levels of formality, and the one you choose depends on your relationship, your emotional state, and your personality together. Someone low in Honesty-Humility and also Conscientiousness would speak in a less formal tone than someone with the opposite values, for example. Likewise someone angry or disgusted would be less likely to use formal language.
So I can use a level of formality to show off some of a character's personality and emotions in language. But that's just a start.
What else is communication made up of?
Oh of course, besides spoken language there's facial expression and physical expression. There's also fashion; how we choose to present ourselves says a lot about our personalities.
Ah before I forget again, I also thought about a third relationship qualifier, with regards to formality. Superior/inferior. When you're talking to the mayor you tend to be more formal, unless you're also a mayor, or the prime minister. Unless you buck tradition and hate formality, that's personality too. Anyways I'll add Superior/Inferior to that list I made earlier.
Now, unique facial expressions for every character would probably be very difficult. But using the same ones for every character would be bland and drain some of the personality away. So I'll probably use some sort of paperdoll system for creating character portraits, so they can share expressions without looking the same.
Physical expression is a little more difficult. That'd have to take the form of animations the characters play when talking. Probably they can use the same animations on different models so they don't count up too high and still look different.
In addition to all that, there'll be emotionally charged words used depending on the emotional state, and terms of affection for friends, lovers, and enemies.
I could further differentiate characters by giving them an accent or quirk, but that might be pushing the system too far.
3:05pm - I'm thinking that for communication with the player, the AI characters will use dialogue boxes with dropdown responses from the player, and there'll be a bigger window for talking to the NPC about topics.
You can get an NPC's attention by clicking on them with your mouse, stopping them from what they were doing unless they think it's more important than talking to you. Then you'd walk over and initiate conversation.
Basic conversation with a stranger would go something like this:
Click on the NPC. They stop and wait for you to get near. You get near and the conversation starts.
NPC: -Procedurally generated greeting- -dropdown for response: Formal Greeting, Informal Greeting, Rude Greeting-
NPC: -Procedurally generated response, asking what you want- -Conversation topic list appears, allowing the player to select what they want to talk to the NPC about-
NPC: -Procedurally generated response, sharing or denying information- -dropdown for response: Either grattitude options or disappointment options depending on the NPC's answer-
Loop back to the NPC conversation topic list depending on if the NPC still wants to talk to you, and end the conversation when the player chooses to say a farewell, or the NPC nolonger wants to talk to the player.
That's how it would go I think. The procedurally generated parts will be based on stock phrases modified by the personality, emotions and relationship values for the character.
I wonder if I'm missing anything?
Ahh I thought of something. This only really covers conversations between two individuals. Group conversations will be more difficult. Hmm...
I'll try and start making the single person conversation engine to start and expand upon it for groups when I can.
3:29pm - Getting curious about the topic, I googled Procedural Conversation Generation. Found some interesting stuff, including this: https://berkin.me/rant/
3:35pm - Alright, Rob is ready to go so I'm gonna end it here. Got some good thoughts out today.