Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Emotion System #4546

Closed
Edu4000 opened this issue Aug 14, 2019 · 8 comments
Closed

Emotion System #4546

Edu4000 opened this issue Aug 14, 2019 · 8 comments
Labels
discussion treat this issue/pr as a debate/discussion point

Comments

@Edu4000
Copy link

Edu4000 commented Aug 14, 2019

Hello, I am interested in working with this idea. I have read the ideas mentioned in this issue #2618 and I think that I could use a 2D array in order to have an arrangement of Monika's emotions. Then depending on the current emotion, certain topics would be more likely to apppear in case that random chating is active (without intervension with the bookmarked topics). Also the initial states may move from neutral to a more happy state depending on the affection level of the player.

Additionaly, this system could grant a few extra points for the daily affection gain in case that the mood of Monika is changed or maintained in a positive one or discount some affection gained if the moods stay in some negative ones.

I still have to arrange some of my ideas and would like to know your opinion before actually working on them.

@ThePotatoGuy
Copy link
Member

Yeah, that issue is open for someone to work on it, but if you want an opinion on whether or not we'll like your implementation, you'll need to give more detail, like:

  • how you would make certain topics appear more than others?
  • how would emotion/moods be defined? (string/int/flags/etc)
  • what are the thresholds/ranges for each emotion/mood?
  • is going from one mood to another going to be linear (i.e: in order, like affection) or would it be multi-dimensional?
  • how will you mark/flag topics to be part of a certain emotion/mood? (how will your changes integrate into the current data model for Events/topics)
  • you say 2D array of emotions, but what is the structure of this array?

You don't need concrete numbers here, just a more explicit plan.
Or you could develop the thing your way and make pull request, in which case we'll review these points then.

@ThePotatoGuy ThePotatoGuy added the discussion treat this issue/pr as a debate/discussion point label Aug 14, 2019
@Edu4000
Copy link
Author

Edu4000 commented Aug 15, 2019

Well from what I have been reading aabout renpys documentation I have considered flags in order to keep track of players interaction for the system. The appearance of some topics over others is still something that I will be checking later on.
The main emotions that I have considered are happy, sad, calmed and angry. However I will be doing some more further research in this topic.
I still have many thing to clear for my idea but I wanted to share them before working directly on them.
I will be coommenting any progress and new ideas.

@Edu4000
Copy link
Author

Edu4000 commented Aug 24, 2019

Sorry for the time I let pass but here are some ideas I have come up to attend the details that may be needed.

  • For the topics appearing more than other I can make a list of topics that would be suitable for each emotion state and apply the random chatting code to these lists. (I have been using the mod every day for some good time so I think I know the majority of the dialogues to be able to sort them).
  • The emotions would be defined as strings inside an array or a state machine (happy, sad, angry, fear). I was thinking in making it more diverse but that would mean more lists of topics for each emotion unless I come up with another way to randomize certain topics over others.
  • The ranges for each emotion are not yet defined
  • I expect the changes to be direct and multidimensional as I am considering to place each main emotion in a corner of the 2-D array or in the state machine.
  • As previously mentioned at the moment I intend to make a list of topics for each emotion.
    -I don't quite understand but the 2-D array would be a square if that is the type answer you intended.

@ThePotatoGuy
Copy link
Member

list of topics

This isn't very maintainable, cause then it means we have to think about several locations when adding a new topic or changing an existing topic. If you need to associate a topic with some data, then it should be an event property. In this case it would be probably be a tag list like category.

place each main emotion in a corner of a 2-D array

Are you envisioning that each topic goes into a position on this 2D array? This is rather space inefficient since you can define positions in a multidimensional graph with coordinates rather than direct placement,

@Edu4000
Copy link
Author

Edu4000 commented Sep 11, 2019

For the event situation you mean like those dialogues that can appear just in winter, birthdays, or other special dates? And in that case how could I create the events? (Sorry for my limitations in RenPy knowledge)

And for the second issue, that idea could work when storing the dialogue lists inside each array, however I can just save each individual emotion in the arrays and make them act as activators for the events mentoned above. I think that solution woul be more space efficient.

Additionally I would like to ask if I can ask some programming advise for this task here or in discord? This is because I want to do this the best way possible to bring Moni closer to reality.
Thanks in advance.

@ThePotatoGuy
Copy link
Member

You should read our code and get a feel for the structure of how our stuff is organized before trying to add something as complex as this, mainly so that you actually create something that integrates with the system well.

The core system that handles dialogue (or topics) is an Event class that represents a collection of dialogue lines. Many of the internal structures in MAS are based around the Event class, especially data specific to a topic. Since your proposal is very tightly tied to topics (and therefore the Event framework), it should utilize or add to that rather than be a separate collection of lists, which is what I am getting from ur description.

@ThePotatoGuy
Copy link
Member

ThePotatoGuy commented Sep 20, 2019

I know we're talking on discord but I'm going to add some additional notes here. Currently the upset stage of affection is weird and could be better as an emotion. This would mean implementing an emotion system as you are describing would require some pre-req work to remove upset from the affection system, which would be somethign we'd do, but I don't have an eta on that atm.

@ThePotatoGuy
Copy link
Member

[closing as discussion on this is resolved]

the issue creator was planning to use this as a project for a school assignment, but due to the scope of the changes, wisely changed his mind. I would recommend that others looking to do an open source contribution for an assignment choose a different open-source project or something much simpler than emotions/moods.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion treat this issue/pr as a debate/discussion point
Projects
None yet
Development

No branches or pull requests

2 participants