Monika-After-Story / MonikaModDev

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

Emotion System #4546

Closed Edu4000 closed 4 years ago

Edu4000 commented 5 years ago

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 commented 5 years ago

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:

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.

Edu4000 commented 5 years ago

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 commented 5 years ago

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

ThePotatoGuy commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 4 years ago

[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.