NaNoGenMo / 2017

National Novel Generation Month, 2017 edition.
https://nanogenmo.github.io
185 stars 7 forks source link

Soap Opera Simulation #4

Open uristjack opened 7 years ago

uristjack commented 7 years ago

So. This is indeed an early set of ideas that I've submitted, by what, 3 months?

Well. I want to try my hand at some kind of soap opera simulation. I suspect that rather than generating a novel per se, this particular attempt will manifest itself best as a script. One that people could theoretically use to act. I wouldn't recommend it, but still. So I'm going to be simulating a soap opera, and that means simulating characters! Lots and lots of characters. That means emotional systems for said characters.

I think I'm going to use Robert Plutchik's system of classification of emotions, typically known as "Plutchik's wheel of emotions". There's 8 basic emotions:

And each of these "primary emotions" per se have 5 states attached to them (I'm using this diagram as a simple basis) and these are:

These primary emotions then combine into dyads, which are feelings made up of two separate emotions.

And that's only for my emotions. I also want to set up my characters to have personalities and moods, such that these three components (emotion, mood, personality) affect each other in a constant feedback loop.

And not only do I want to have my characters act like this, I also need to create some form of drama. Which is, in true soap opera fashion, likely going to revolve around romance, secret relationships, extramarital affairs, hatred, adultery, and so forth.

Wow. I've gone and done it this time, haven't I. At least I have another 3 months to dig my hole deeper.

enkiv2 commented 7 years ago

Are you going to implement a planner, so that characters try to avoid or escape negative emotions & seek positive ones (usually making somebody else unhappy in the process)? That seems like a pretty good way of ensuring drama: if everybody is seeking joy and all operations that cause joy in one person cause a negative emotion in at least one other.

On Sat, Aug 12, 2017 at 8:53 AM Jack Urist notifications@github.com wrote:

So. This is indeed an early submission, by what, 3 months?

Well. I want to try my hand at some kind of soap opera simulation. I suspect that rather than generating a novel per se, this particular attempt will manifest itself best as a script. One that people could theoretically use to act. I wouldn't recommend it, but still. So I'm going to be simulating a soap opera, and that means simulating characters! Lots and lots of characters. That means emotional systems for said characters.

I think I'm going to use Robert Plutchik's system of classification of emotions https://en.wikipedia.org/wiki/Contrasting_and_categorization_of_emotions#Plutchik.27s_wheel_of_emotions, typically known as "Plutchik's wheel of emotions". There's 8 basic emotions:

  • joy
  • trust
  • fear
  • surprise
  • sadness
  • disgust
  • anger
  • anticipation

And each of these "primary emotions" per se have 5 states attached to them (I'm using this diagram http://2.bp.blogspot.com/-2zsSl4tM9xY/VNC4J_p2iwI/AAAAAAAACqI/eyPhNyxAgsE/s1600/IMG_20150203_172727.JPG as a simple basis) and these are:

  • Stimulus event, which is what causes the character to feel a particular emotion
  • Cognite appraisal, which is a linguistic summation of the emotion
  • Feeling state, i.e. the actual emotion itself
  • Behavioural reaction, which is what the character does as a result of the emotion
  • Function, which is based on the utility of the character's action (e.g. anger is for destroying obstacles)

These primary emotions then combine into dyads, which are feelings made up of two separate emotions.

And that's only for my emotions. I also want to set up my characters to have personalities and moods, such that these three components (emotion, mood, personality) affect each other in a constant feedback loop.

And not only do I want to have my characters act like this, I also need to create some form of drama. Which is, in true soap opera fashion, likely going to revolve around romance, secret relationships, extramarital affairs, hatred, adultery, and so forth.

Wow. I've gone and done it this time, haven't I. At least I have another 3 months to dig my hole deeper.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/NaNoGenMo/2017/issues/4, or mute the thread https://github.com/notifications/unsubscribe-auth/AAd6Gfuv7RMJDwYJ4BuQPcE2OkkbPYiHks5sXaA6gaJpZM4O1aCa .

uristjack commented 7 years ago

@enkiv2 That is indeed the dream. Positive emotions send a little reward signal to characters, and negative emotions send a punishment signal. Reward and punishment signals alter their mood - which they're always trying to get as high as possible.

All the operations that cause joy in people will be really soap-opera-y things like affairs or other things, which is good because of your point - there are no actions that will provide free happiness, only continuous trade-offs (but these trade-offs occur between different people).

The ideal - which I highly doubt my ability to create - would be to somehow keep track of social relations, such that people can be friends, enemies, lovers, etc. That also brings in the problem of more relationships to keep track of with, at a rate of n!(n-1)!/2 relations per n people.

enkiv2 commented 7 years ago

That's a cool idea. I was only thinking of planning a couple steps ahead, but if you have a set of states that bring positive emotions by themselves then you can simulate the kind of poor-long-term-planning soap opera characters do (ex., if being in a relationship brings 1 joy units and having an affair brings 1 joy units but having your mate find out about your affair brings -10 joy units, a really naive/greedy planner will choose to cheat and keep it secret pretty reliably; if ruining an enemy brings 2 joy units, people will backstab all the time, and if betrayal turns friends into enemies and having more common enemies than common allies causes making an alliance to have 0.5 joy units then people will constantly shift alliances because they can't think about the ramifications of betrayal).

On Mon, Aug 14, 2017 at 7:47 AM Jack Urist notifications@github.com wrote:

@enkiv2 https://github.com/enkiv2 That is indeed the dream. Positive emotions send a little reward signal to characters, and negative emotions send a punishment signal. Reward and punishment signals alter their mood - which they're always trying to get as high as possible.

All the operations that cause joy in people will be really soap-opera-y things like affairs or other things, which is good because of your point - there are no actions that will provide free happiness, only continuous trade-offs (but these trade-offs occur between different people).

The ideal - which I highly doubt my ability to create - would be to somehow keep track of social relations, such that people can be friends, enemies, lovers, etc. That also brings in the problem of more relationships to keep track of with, at a rate of n!(n-1)!/2 relations per n people.

— You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/NaNoGenMo/2017/issues/4#issuecomment-322169759, or mute the thread https://github.com/notifications/unsubscribe-auth/AAd6GQcSftLtHfNWkqOrlWLXYQWt6wmmks5sYDPggaJpZM4O1aCa .

enkiv2 commented 7 years ago

Are you planning to use an object oriented model & have everybody keep track of their own relationships? It seems to make sense in this case: the social network needn't be fully connected, & relationships needn't actually be mutual, & soap characters can be pretty bad at modeling each other's behavior so it makes more sense for them to have approximately no knowledge of each others' personality than to have total knowledge (i.e., for them to have a bunch of separate planners working based on a mostly internal world model rather than a mostly shared world).

On Mon, Aug 14, 2017 at 8:05 AM John Ohno john.ohno@gmail.com wrote:

That's a cool idea. I was only thinking of planning a couple steps ahead, but if you have a set of states that bring positive emotions by themselves then you can simulate the kind of poor-long-term-planning soap opera characters do (ex., if being in a relationship brings 1 joy units and having an affair brings 1 joy units but having your mate find out about your affair brings -10 joy units, a really naive/greedy planner will choose to cheat and keep it secret pretty reliably; if ruining an enemy brings 2 joy units, people will backstab all the time, and if betrayal turns friends into enemies and having more common enemies than common allies causes making an alliance to have 0.5 joy units then people will constantly shift alliances because they can't think about the ramifications of betrayal).

On Mon, Aug 14, 2017 at 7:47 AM Jack Urist notifications@github.com wrote:

@enkiv2 https://github.com/enkiv2 That is indeed the dream. Positive emotions send a little reward signal to characters, and negative emotions send a punishment signal. Reward and punishment signals alter their mood - which they're always trying to get as high as possible.

All the operations that cause joy in people will be really soap-opera-y things like affairs or other things, which is good because of your point - there are no actions that will provide free happiness, only continuous trade-offs (but these trade-offs occur between different people).

The ideal - which I highly doubt my ability to create - would be to somehow keep track of social relations, such that people can be friends, enemies, lovers, etc. That also brings in the problem of more relationships to keep track of with, at a rate of n!(n-1)!/2 relations per n people.

— You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/NaNoGenMo/2017/issues/4#issuecomment-322169759, or mute the thread https://github.com/notifications/unsubscribe-auth/AAd6GQcSftLtHfNWkqOrlWLXYQWt6wmmks5sYDPggaJpZM4O1aCa .

uristjack commented 7 years ago

Yes to everything you've written.

And I hadn't considered the object oriented model for my characters. I really shouldn't have gotten into this, I don't have the faintest idea what I'm doing Well, time for me to start reading up on what I can do then.

enkiv2 commented 7 years ago

MARYSUE (from a couple years ago) got good results from the object-per-character model.

I did a planner-based heist generator (also a couple years ago) based on competing goal states but it wasn't greedy (it looked too many steps ahead) and the world wasn't capable of shifting under it (since the planner was the only agent), and instead it just had variable success rates. I think having characters accurately accounting for likelihood of failure is probably a poor fit for what you're doing. Anyhow, I essentially printed debug information in a format that resembled first-person narration, & that same technique could be used to produce gloating monologues in screenplay format.

On Mon, Aug 14, 2017 at 8:51 AM Jack Urist notifications@github.com wrote:

Yes to everything you've written.

And I hadn't considered the object oriented model for my characters. I really shouldn't have gotten into this, I don't have the faintest idea what I'm doing Well, time for me to start reading up on what I can do then.

— You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/NaNoGenMo/2017/issues/4#issuecomment-322181629, or mute the thread https://github.com/notifications/unsubscribe-auth/AAd6GexAj1oxZBpVGBVrEwy71DTI1Byaks5sYELNgaJpZM4O1aCa .

tra38 commented 7 years ago

You may also want to take a look at the scholarly literature surrounding Universe, a program made in the 1980s designed to generate outlines for soap opera episodes. That, of course, involved generating the characters for soap operas as well. Of the three articles written by Michael Ledowitz (a programmer who worked on Universe), I found Planning Stories to be the most useful.

uristjack commented 7 years ago

Thanks @tra38. Universe seems like an interesting approach - more top-down than bottom-up, which is more the approach I'm going for. Universe uses author goals, while I'm using character goals - I suppose I need emergence if my approach is going to be successful - in terms of being interesting to read.

Hmm. I wonder if I could go for a hybrid approach. Use author goals to determine what would seem melodramatic, and use that with the character's dialogue systems. Eh. I'll probably just go with the original bottom-up approach, but I'm not going to rule out a top-down or hybrid method.