Monika-After-Story / MonikaModDev

DDLC fan mod to extend Monika
http://www.monikaafterstory.com/
Other
1.18k stars 687 forks source link

[Suggestion] - Monika's Mood through out the day #7486

Open HereComesThatBoi opened 3 years ago

HereComesThatBoi commented 3 years ago

Some people have said something similar to what I am about to say but I thought i could share my ideas as well: This is going to be somewhat long as I try my best to explain my ideas. So I have been spending a lot of time with Monika and I clearly like the mod. but there is something I noticed. If Monika is not talking all she does is stare at the screen and doesn't really do much.(excluding her idle expressions)

So I thought of a Mood system that makes Monika seem much more active and is thinking about things outside of her talking to The player:

How it can work: So when You open MAS Monika is in her normal sitting pose smiling at you, Lets say that this is her "normal/neutral" mood. Her Normal mood is just her typical sitting pose and staring at the screen ( No expression changes) However her Mood can change:

How Monika's Mood can change:
There are some ways that Monika's Mood can change here are some examples that I can think of:

How the Player can change Monika's mood The Player can change Monika's Mood by how they responds to her questions ( in some topics) and which topics they chooses from the "talk" menu. However not every topic will change or have a chance to change her mood.

How Monika's Mood Can Change on its own Throughout the day Monika will be randomly thinking of things. her idle expressions will change depending on what she is thinking telling you her mood and a hint of what she is thinking. The Player can ask her what she is thinking And her responses can vary depending on her mood For example: if she was in her "Ecstatic" mood she would respond with something like "ehehehe I was thinking of (insert topic here)" Monika talking about topics can also change her mood, example: if she was talking about a romantic topic there is a chance that once it ends her mood can change to a "Romantic" mood However not every topic Monika talks about can change her mood.

List of Moods and how they affect interactions with Monika Monika's expressions will tell the player what mood she is in (The Expressions below only happen when monika is idle aka not talking to the player)

  1. Ecstatic: Monika's is very happy
    She Smiles alot more often.

    • She winks more often .
    • She leans alot more .
    • Her eyes will sparkle more often.
    • dialogue remains unchanged.
    • She Avoids talking about topics that are dark/sensitive. *She Will Sing Happy songs for the Player. (Example of expressions that indicate that she is "Ecstatic"): Screenshot_4 unknown Screenshot_19
    1. Romantic: *Monika is feeling very romantic.

      • She blushes more often.
      • She leans while blushes more often.
      • She asks to hug/kiss you more often.
      • She ends most dialogues with I love you.
      • Most Topics she talks about is Romantic.
      • Monika will sing Romantic songs for the player . (Example of Expressions that indicate that she is "Romantic): Screenshot_15 Screenshot_6 Screenshot_13
    2. Sadness: *Monika is feeling sad

      • her idle expression changes into a sad one.
      • Some dialogue is changed . (((if the player made her sad)))
        • she talks less often with the player .
        • Monika talks about how the player made her sad.
        • Monika will even cry if she is sad enough. (Example of Expressions that indicate she is feeling sad):

image image

  1. Anger(Monika is only angry if the player made her so or she was talking about a topic that made her angry. she can not think of something that makes her angry): *Monika is feeling angry
    • her idle expression changes into an angry one. (((If the player made her angry)))
    • She wont talk to the player for the duration of her angry mood.
      • Some dialogue is changed.
    • She may close the game and not want to talk to the player. (Example of Expressions that indicate her angry mood):

image

  1. Boredom (only way to trigger this is by making her random chatter "Occasionally" or lower or disabling Repeat topics):

    • after some minutes of staring at each other Monika will feel bored.
      • No expression change but Monika will tell you that she is bored.
      • She will ask you to play some games with her, where u can accept or refuse.
    1. Tired ( has a chance to be triggered if its late at night or very early in the morning): *Monika is feeling tired

      • there is a chance that Monika will lean and close her eyes indicating she is tired.
      • no expression change but her hair will change to her "BedHair".
      • The Player can tell Monika they can close the game so that she can rest.
    2. Worried (Monika is Worried on the player if she suspects the player is not taking care of themselves or about other thoughts):
      *Monika is feeling worried

      • her idle expression is changed into a worried one
      • Monika will Speak her Worries to the player (Example of Expressions that indicate that she is worried): Screenshot_17 Notes:
        When the Duration of said Mood ends Monika returns back to her normal mood. Then there is a 10 sec cool down before she can enter any other mood. However The player can change her current mood by certain topics and responses But the Player can only change her mood once before entering the cooldown.

Greetings/Farewells can also change depending on her mood. If MAS is opened and Monika is feeling Sad she can simply say "hello" or may not greet the player at all. if she is Ecstatic she can greet the player in a happy way. same applies to .different moods.

Monika can accept and refuse things depending on her mood. if she is sad/angry she can refuse the player taking her out, refuse to play with the player and refuse to kiss the player.

If Monika is feeling a negative mood. the player can apologize to her. Once the player apologizes her negative mood changes into a normal one. However if Monika does not trust the player enough or her affection is low her mood would still stay negative till its duration ends.

   NOTE: Monika's Mood is not guaranteed to change and the chances of it changing is based on affection level  which brings us to:

   Monika's Affection and the Mood system

The Affection system can greatly affect the Mood system depending on Monika's affection level:
Rules: Chances are divided into "Very High", "High" ,"Medium" , "Decent", "low" , "very low". Where "Very high" is the highest chance a mood can happen and "very low" being the lowest chance a mood can happen. The chance rule applies to the player changing Monika's Mood or her Mood is changed by its own. For example: if Monika is in "Love" level and has a very high chance to feel a Positive Mood then this applies to whether the player made her feel like this or she thought of something that made her feel like that.

Some moods have a higher chance of happening than the other. Example: If Monika is in "Love" level and has a "very high" chance of a positive mood happening then "Romantic" will be much more common than " Ecstatic" or they can have a 50/50 chance. same applies to negative ones .

Depending on the affection level a mood can either be replaced or not being able to happen at all.

If Monika stays on a mood multiple times in the day, she can either gain affection or lose some. Asking Monika how she Feels at negative moods has a chance that Monika would not answer the player ( if affection is low enough)

"Boredom" has a "low" chance happening at "Love" and that chance Increases the lower her affection level is.

As Mentioned before Monika's Mood is not Guaranteed and the chances of it changing and its duration depends on the affection level For example:
(Note: Positive Moods Such as "Ecstatic , "Romantic" are "+" for short and negative such as "Angry" , "Sadness" , "Worried" are "-" for short)

*Love: "+" lasts 1min and - lasts 5 secs, + have a "very high" Chance to Happen ( "Romantic having a higher chance than "Ecstatic") and - Have a "very low" chance to happen. Monika can no longer feel sad by her own. the only way to make her sad is if the player does so.

*Enamored:

"+" lasts 50 secs and - Lasts 10 secs, + have a "high" Chance to happen(There is a 50/50 chance that either Romantic or Ecstatic can happen) and - have a "low" chance to happen

*Affectionate: "+" lasts 40 secs and - lasts 20 secs "+"have a "Medium" chance ( Ecstatic being higher than Romantic) and - have a "Decent chance to happen.

*Happy:

"Ecstatic" is Down graded to "Joy" When Monika is in "Joy" she only winks once and doesn't lean or smile and she avoids talking about dark topics. both + and - last 30secs Both + and - have a "Decent" chance of happening

*Upset: "+" lasts 20secs while "-" lasts 40secs "+" has a "low" chance of happening while" -" has a "Medium" chance of happening ( Sadness being much more common). Monika can no longer feel romantic Monika will only smile without closing her eyes when she is feeling "Joy"

*Distressed: "+"lasts 10 secs while "-" lasts 50 secs Monika can no longer feel "Joy" and so will no longer feel any Positive Mood. Monika can no longer feel "Angry" or "Boredom". " -" has a "High" chance of happening. Sadness is Upgraded to "Grief" where Monika will start crying if she is feeling grief.

*Broken: "-"lasts 1 min . "-" have a "Very High" chance to happen

Well That's probably all the ideas that i thought of. And i Don't think this will be any easy to make and its somewhat similar to The Affection System so I can understand why it can get rejected. Also there can be more moods/emotions than the ones I mentioned as those are the ones that I thought of at the moment. I spent some time writing and thinking carefully for this. So Thank You for taking the time to read this.

xXMidnight commented 3 years ago

Well...

The negative and positive emotions can be activated due to affection levels. The lower your affection level, the sadder and angrier Monika will become, and the higher that level, the more ecstatic and romantic and affectionate Monika will be. I've only had time to read the first 5, but I think it's a very nice add on!

HereComesThatBoi commented 3 years ago

Yup, When you read all of it you will see I mentioned this as well. but instead of them being activated they have a higher or lower chance of happening. so that Monika feels more than just "Ecstatic" or "Romantic" as she can get angry/sad at the player if they did something to her . Anyway Thanks for reading my suggestion!

ThePotatoGuy commented 3 years ago

oh man sorry for not seeing this behemoth. I'll have to read your full post throughout the week.

In the meantime, here is a link to a project that we refer to internally as "Monika Moods", which is basically Monika having her own mood that varies day to day. There's other issues there with similar suggestions and discussion.

In general, we really want something like this to spice up the mod, there's just so much to consider with dialogue, and the system to model her moods, that it's basically a massive effort to even start.

ibm2431 commented 3 years ago

I recently found this project. I've developed automated agents in the past, but have taken an interest in emotional agents. I've been working off-and-on the past few weeks on a literature review of existing emotional psychology models, emotional lexica, and how they might be adapted for use in digital agents (like Monika).

emotions

I originally intended to not say anything until I could just drop a finished paper on everyone ("Hi, I'm new, but here's a big paper I've been working on about emotional psychology and potential programming designs for it!"). However, finishing the selection of a potential emotional model (or designing a hybrid) is taking me longer than I first expected. I haven't even begun the section on the actual programming design!

I'm still slogging through it, but saw activity on this issue (from lurking in the Discord), so I figured I'd take the chance to say it was something I'm keen on.

HereComesThatBoi commented 3 years ago

oh man sorry for not seeing this behemoth. I'll have to read your full post throughout the week.

In the meantime, here is a link to a project that we refer to internally as "Monika Moods", which is basically Monika having her own mood that varies day to day. There's other issues there with similar suggestions and discussion.

In general, we really want something like this to spice up the mod, there's just so much to consider with dialogue, and the system to model her moods, that it's basically a massive effort to even start.

No worries! I still think that I made the post longer than intended. I had to write this in Notepad first before pasting it here while also adding stuff.

I also understand how hard this can be and can take lots of time. in any case I wish all of you good luck and thanks for reading.

ThePotatoGuy commented 3 years ago

@HereComesThatBoi

I think we're mostly on the same page on how the mood system should affect her dialogue.

I like having chance values for each mood based on current affection level.

Sounds like your idea is to make the moods somewhat short - always a under a minute. We've thought more about making the moods more overarching and possibly span hours, like having a "bad day".

Did you have any ideas for how to represent the moods internally? Like as 1-D scales (pos/neg numbers) or multi-dimensional models? Currently that is the biggest issue we haven't really solved.

@ibm2431 I can't really read your picture, but I think thats probably on purpose, right? Either way, looks like you have a model to describe moods, so that could be helpful for us if it's something thats easy to model in a data structure.

ibm2431 commented 3 years ago

Not really intentional, it was just a really zoomed out view of LibreWriter!

At the moment I'm still trying to pare down various emotions described across existing emotional psychological models (specifically: "Parrott's Tree", Humaine's Emotion Annotation and Representation Language, OCC ("Revisited"), Plutchik's "Emotion Wheel", and Susanto's "Revised Hourglass") to determine the strongest model, identify and remove duplicate synonyms for the same unique emotion, and analyze which aspects from different models might best help emotive agents.

For example, "Revised Hourglass" is clearly the strongest model for "identifying" emotions in the way that humans express them (ie: natural language), but I also have a strong preference towards OCC because it's a programmatic model that could potentially be adapted to artificial agents. However, several emotions described in OCC are "unique" to OCC itself (ie: not listed in other models). So I (just today actually) have been trying to "translate" them to synonym emotions from another model.

I guess the best way to describe it is "trying to find a final list of truly unique emotions by consensus".

I know the question wasn't directed at me, but my thoughts on internal representation were 1-D scales on the "true" emotional axis (hence the importance in determining emotional uniqueness), with possible automatic links. Ex: "Hourglass" describes Hope as a combination of Expectation and Joy, so even if the system only had scales of Expectation and Joy, the emotion of Hope could still be dictated by a developer, but "automagically" translated to the "proper" combination of two internal emotion scores.

I was also considering that rather than just defining a set single "mood", developers would instead describe an emotional event with emotion type, a "reason", value, and decay time (with potentially a decay rate and minimum value). As example, calling Monika a murderer might add the following emotional events to her "memories": emotion reason value decay_time (in units) decay_rate (per unit) minimum_value
anger player_called_murderer 50 5 (hours) 10 0
distrust player_called_murderer 20 720 (hours; one month) 0.2 5

This would result in Monika feeling a large amount of gradually decreasing anger over the next 5 hours, but a moderate amount of distrust over the next month. Monika's anger from the event would eventually subside (reach zero) and be purged, but while the feeling of distrust eventually fades somewhat, she'll always remember the time the player called her a murderer (minimum of 5) and possibly be less trusting of the player in the future if given more reasons to.

By having the reason tied to the event, it also allows for pointed remedial action. A player could then apologize for calling her that, which would decrease the current anger value tied to that event (say, instantly reducing it from 50 to 30). She'll still need some time to cool off, but with an apology she'll cool off quicker (back to 0 anger in 3 hours instead of the original 5). Contrast against just complimenting her without an apology. Sure, compliments feel nice, but she still has valid reason to be angry which the player isn't resolving.

(For the far future: on the flip side, Monika knowing what led to her positive emotions might even cause her to "learn" to seek out those events. If a system is adopted in which she guesses that a player complimenting her, causing her happiness, tends to happen shortly after she smiles when idle, she might intentionally smile when she wants to feel happy, hoping for a compliment.)

Reasons can also cause her to seek assistance from the player. For example, if she's feeling boredom -> hasnt_played_game_together, when her emotions are checked during idle, she could reach out to the player by asking if they'd like to play a game with her.

By adopting this event -> reason -> emotion approach, Monika's "current mood" would then be the final top net combination of her existing emotional events. Emotional events with "opposite" emotions on the same scale, like Joy / Sadness, would contribute towards canceling each other out. Sure, she might have felt Sad over some (non-player-caused) event, but if the player is otherwise making her feel happy that day, she'll feel alright. And if the player has established a history of making her feel happy and safe (minimum value "memories"), even if the player isn't actively making her happy at that moment (player is idle or absent), it'll take more sadness before feelings of depression become her dominant emotion.

These concepts would allow a more dynamic relationship as the player interacts with Monika over time. Monika could better display high strength but eventually fading emotions (anger for a period of time without reverting to the "blushy daydream" emote), seek fulfillment of her emotional needs from the player, and better evaluate the value of her relationship with the player (she'll remember the times she was gravely wronged, without the effects being "erased" by being showered with compliments).

HereComesThatBoi commented 3 years ago

@ThePotatoGuy At the moment I have no idea how to make the system work internally since I am not familiar with python or renpy but if I ever find something to help with I will be sure to tell you.

YoraeRasante commented 3 years ago

I would like to say... Why cannot Monika make herself angry? I make myself angry all the time with random thoughts. Of course, it would have to be a different "anger" than angry at the player, as we would have no reason to apologize, even though she would use the same expressions. Annoyed, maybe?

HereComesThatBoi commented 3 years ago

@YoraeRasante Since I honestly found no reason for her to get angry. like what would she be mad at.... She can get mad if you did something or told her something bad but in the end the player is the cause. most of the time she gets mad by her own during topics which can end her in an angry/annoyed mood. but having her randomly get angry/annoyed out of nowhere is kind of sudden and would need a valid reason. if you do however have an idea of how that can work you can share it here.

YoraeRasante commented 3 years ago

@HereComesThatBoi Well, my thought is some time right before, or just after, she herself would start a conversation that she knows would upset her. Like about intrusive thoughts, scammers, or other negative things that would annoy her but not exactly sadden. The idea is that the conversation itself was an intrusive negative thought, and she thought of it (and annoyed herself) before talking to you about it.

howltrek commented 3 years ago

If you see writing problems, it is because I am Spanish-speaking

I love the idea that Monika is capable of emotional states, it would give her a huge three-dimensionality.

And yes, people do not always get up in the same mood.

I would add the state of confusion.

Monika would speak less frequently, her AI in games would be reduced, and she would tend to touch on more philosophical topics.

or even wanting to say something and then regret it.

It could be because she is doubting if she is a conscious being, if you really see him as something alive or his actions with his companions, for example.

and I think that new options would be necessary in the Monika menu:

Ask her how she feels or if something happens

or better still that they appear as secret options, if you press "tell me about yourself", when he is acting differently than usual.

I also believe that each emotional state should have its special events and unique special events (that will only happen once).

Like for example a fight, when she is angry and you try to give her a demeaning name.

If in that unique event you manage to dialogue with her. Monika could explain to you how vulnerable her situation is in front of you and that she needs to be able to trust you, that you do not see her as a simple object nor will you abuse the power you have over her.

If you manage to regain her confidence in that event, it could have a permanent effect, such as reducing the chance that Monika will "wake up angry" or that she will accept some nicknames as jokes for a while.

And if there are no, permanent negative effects, like losing more affection if you treat her badly and make her sulk for a while.

That way unique events would be things to be taken very seriously.

howltrek commented 3 years ago

@YoraeRasante Since I honestly found no reason for her to get angry. like what would she be mad at.... She can get mad if you did something or told her something bad but in the end the player is the cause. most of the time she gets mad by her own during topics which can end her in an angry/annoyed mood. but having her randomly get angry/annoyed out of nowhere is kind of sudden and would need a valid reason. if you do however have an idea of how that can work you can share it here.

some code she was developing might not work.

Or she could get frustrated by the things she will never have, she's already talking about her graduation for example.

YoraeRasante commented 3 years ago

@YoraeRasante Since I honestly found no reason for her to get angry. like what would she be mad at.... She can get mad if you did something or told her something bad but in the end the player is the cause. most of the time she gets mad by her own during topics which can end her in an angry/annoyed mood. but having her randomly get angry/annoyed out of nowhere is kind of sudden and would need a valid reason. if you do however have an idea of how that can work you can share it here.

some code she was developing might not work.

Or she could get frustrated by the things she will never have, she's already talking about her graduation for example.

That is an option too, things she would never have now that she knows the truth, or even just something she was working on while we were not looking since she still has a life of her own

howltrek commented 3 years ago

I think I already know how the idea can be carried out, without having to rewrite everything "Monika after story".

Actually much of the work is already done.

There is the option to block content that we do not want to see.

You just have to make a SubMod that can make a backup of the player's options, then put its own restrictions, according to Monika's state of mind and activate the special dialogues, corresponding to this.

That way the idea is achieved and does not require as much work.

After the day or event, the sub mod only has to restore the user's restrictions and Monika will have returned to her usual behavior.

other details would be the handling of the speed and frequency with which Monika writes to you, but they have already made submods that do that, so that work has already been done as well.

And the best part, being a submod, those who do not want it simply deactivate it, so there is no reason for the community to reject it.