Cracks my Fingers, Looks like you could use a wall of text.
TL;DR: I talk math and code to explain how such a system could be built and design without testing. I kinda took the idea you had (or at least my interpretation of your idea) and ran with it, So in the VERSIONS section I go over different ways the calculations used here are still valid for different ways you try to do teh game (like it sounds like you might be trying a card game now). In the AFTERWARDS section near the bottom, I make a suggestion about me helping you out, not just with math and code, but also with art.
~ MAIN
Some times it takes experience about game and player behavior, and being a mathematician, and from what I can see, you posted idea seems backwards. Don’t get me wrong, I love the idea and may take notes on it, But so far your game mechanics are a bit backwards.
What do I mean by backwards. Well think of this. the most impartant thing about a game vs anything else (videos and art) is the fact that the player gets to make a choice. Choice Matters, and right now you havent given teh player a choice, you gave the enemy a choice. Let me explain how to lose by math.
With this system, you could be the mistress, trying to get the slave to submit. The main mechanis is those status you were talking about. The choice is figuring out what to do,obedience event, humiliation event, starvation. Be smart with these choices and you can win if you were the mistress (and is probably what you want to make the Artifical intelegence program to do, since the goal for your game is for the mistress to be the enemy, but then it is about the AI trying to win, not you the player). For example, looking at your game mechanics, I can see that the way to win, as the mistress, is just to keep humiliating you, but that is assuming your will power and regeneration is low enough that I can do X humilation events vs Y starvation events, where starvation takes enough will power away to ensure that X >= Y that way I can keep taking down Will power till they can no longer refus, then focus on removing as much self esteme as possible before needing to starve them again thus removing both self esteem and will power (this works because of the integral relationship between self esteem and will power, taking advantage of this mathmatical property I can disable the slaves ability to resist all to gether) and thus after all that work, Ill I have to do is a bunch of obedievnce events and ever now and then a starvation, and I’ll finish the game quick... if I were the mistress.
If starvation does not remove enough Will power, such that X is not >= Y, that means mathmatically there could be no way to stop the slave from refusing since they will aways be able to regerenate what they lost, so they will be able to continue to refuse things and thus the mistress could never win. Now on to the math. Again, assuming we are the mistress and we are trying to win.
Let Say the slave starts with some number for initial Willpower points, call it variable W and is >= 0.
Say the slave starts with some number for initial self esteem, call it variable E and is >= 0.
For the sake of simplicity, let say this is how a turn goes
Turn (day) start. You are allowed to chose one action.
Effect (The results of the action), numbers are updated according to your choice.
Transition( night ). slave sleeps, numbers are updated according to your game mechanics.
New turn (new day), so ignor things like clenlyness, food, multiple events, etc.
Let say that the amount of will power to refuse a Humiliation event is variable H and is a constant > 0.
Let say that the amount of will power lost (as a simple case) due to starvation is variable S and is a constant > 0.
(We will ignore obedience events because my logic is that the most effective way to win in as the mistress in the least amount of turns possible (and if you are going to program the mistress, due to the nature of coding, assuming your are not making her choice random, but following hard code, she should be programmed to make the most logical choices, assuming you are not going to have her have certain emotional reactions to things, which may require a much more complex system), and the most effecient way to win as I will point out with math is to reduce will power enough to reduce self esteem so that you can then reduce will power again and have it never come back so then you can just focus on obiedience events with out fear of it being rejected, and you win)
if the slave does not refuse the Humiliation event, they loose U, with U being a constant representing the amount of Self Esteem points lost due to succesful humiliation event.
So we have the variables W and E, and the constants H S and U.
Now getting into the math, we get to a very important Variable and set of equations.
The variable Δ, Pronounced ‘Delta’ is the variable representing incremental change in mathmatics.
Everynight the slave sleeps and regererates some willpower. The amount they gain is equal to the delta.
Day 2 W = Day 1 left over W + Δ .
Now Δ is some value, derived from some value based on self esteam. So lets think of how you want Δ to behave and then lets make of a generic equation to emulate that behavior, I will be making some assuptions.
I assume high self esteem is good for the slave, and willpower is good. Will power means you can refuse. Self esteem means more will power meaning you can continue to refuse. Since W or will power increases by Δ, and Δ is some value based on E, self esteem, lets mentally phrase the question to ourself like this. If self esteem means a replenishment of will power, then low self esteem means you get a low replenishment, and a high self esteam means you get a lot of will power back. So it is like positive feed back, which can have the following generic formula Δ = aE^t + c, where c >= 0, a > 0, t > 0, and E >= 0.
In this generic system, as E increases, Δ increases some how, if some how E = 0, meaning no more self esteem, it still may be possible to get some will power, like a basic amount, like the will to live one is hidden deep within the slave, and this hidden inner stregth is represented by the variable C, which will make sure that Δ >= c and if c > 0, then Δ > 0, meaning W will always grow at least a little bit, at least by c.
Now what about the variables a and t. Well right before that, lets try to describe how we want self esteem and will power to relate and represent. Lets say, self esteam is on a range of zero to 100, but it does not start at 100. The reason I say this is so you can treat the number like it is a measure of the person’s or players personality. zero having no self esteam, and 100 being that the person cant event fault themselves they think they are flawless, incapable of making a mistake that is how much they believe in them selves, while say 50, or 50% is like average. This way you can cut up the scale into key words, frow weak to strong. If you can attach key words to numbers, what trick you can do is that during the game, players can read the status, and you can use words to describe how well a player is, to bring more life to the game.
Now lets say you can do that exact thing to Will power, a value from 0 to 100. not sure what negative means, perhaps willing, but what implications would that have on the game, other than a game over. and not sure how to think of will power as a percentage, what does 100% will power mean since you are using it to refuse events. You could think of it as energy, where 100% would be like using the description word of “unwavering” and as the value or % goes down the wording describes how tired the player or character is, like holding strong, hanging in there, irritated, feels like this is getting old, a bit tired, tired, Seen better days, Misses Home, Miserable, Weak, Broken.
You could not only break up the % scale into different values and give these regions different descriptions, but you could also record if it is a possitive, negative descriptions for both will power and self esteem descriptions, so when the game describes how the player is, it can see if both are the same (negative negative, or positive, positive, Neither Neither), or if they are different. This way, when using the code to create a description, if they are the same you can list out both descriptions phrases assosiated with their number and say it in one sentance using the keyword and to make it natural, so something like: NAME is Holding Strong and Full of them self. But if they are different, you can use the keyword but, Name is tired but sane (average).
Optionally you could take this idea, and break it down into levels, instead of it being a value from 0 to 100, each description is from 0 to 99, and that after you go past 99, you advance to the higher description, or lower level if below 0. But the issue with this is that you have to explain to the players what they are seeing at the start of the game, why they should care, and it just becomes an annoying game mechanic. But say it is off to teh side, no numbers seen, just a bar filled up (hidden unless you hover over the descriptive word?), and a description of your character off to the side, this way it is out of the way, never needs to be explained, it is organic and intuitive and seem more like a neat feature that tries not to ever be your focus, where as letting teh player know they can level up and down and puting that in their face makes it seem more like a gimic.
The reason I bring up the option isn’t to make this wall of text any more unreadable than it is, you could describe another behavior to describe the relation ship of Δ. As you have higher and higher willpower and self esteam, to get more of either, you could think of it as a level system like i described, but like from an rpg, where as your get higher in levels, it takes more and more exerience to level up. so you could say each level takes more and more, however, i don’t like the idea of having the level system in your face, I would want to use the 100% system with words, but then the issue with that is I don’t want to devide the percentage into masses of areas I think are representative of how much points I think each should be worth, since I don’t know unless I can expess this value mathmatically. Instead what I like to do is think of a percentage and think of what description best represent that percentage. To emulate the effect of higher levels requiring more work to advance them, what can be done instead of making them bigger is make Δ smaller the more W you have, to the point that W can not go beyond 100%. There are many ways to do this depending on the mathematical behavior you want (usually I graph how things slow down and make an equation for the line and set the derivative of that = Δ) but we can keep this simple. We can just scale things linearly
New Δ = ∂ also delta (but actually the delta function but we will ignore the delta function) = (100%-W)Δ
Notice I use %, which is relative, lets say the number is an two’s complement signed 8 bit integer variable in code having a value of -128 to 127 with 127 being the 100% number (and 0% MUST be represented by 0 else some shifting is needed and that is unessisary math), and W uses the same number system, so in reallity what we want is ∂ = (127-W) Δ / 127.
or in code assuming a non python language
Delta_1 = some value but must be a float type variable
int Delta_2 = (int) (( 127.0 - (float)W) * Delta_1 / 127.0);
THE POINT ZERO IS CRITICAL
Basically what is happening with the division is we take W, and We get a number Between 1 and 0. When W = 0, the number is = 1, this one is multiplied by Δ to get ∂. So when there is no will power, ∂ = 100% of Δ. To get a value between 1 and Zero, you nead a float, any number with a point zero is a float if not already declared or casted that way, attempting to do a division with any number that is not a float number, every language I know, java, C++, python, etc. anything past basic and C that auto format equations, every language will cast the whole equation (assume) that it should be an integer (even if Delta_2 were a float, it would be cast as an int and back into a float), this means you loose the decimal point, and since this special number is between 0 and 1, rounding would make it either zero or 1, but nothing inbetween. Since it is a linear equation, if W = 25%, ∂ = 75% of Δ, at W = 50, ∂ is 50% of Δ, and at 75 it would be at 25%, untill stopping at 100%. But if the number was rounded (I did the order of operatoins such that this shouldn’t happen but sometimes compilers still do weird things) due to implicit casting, ∂ = Δ from w = 0 to 50, and anything beyond 50, ∂ = 0% Δ, meaning W would never go beyond 50%, so keep the formatting in mind if you are going to code this yourself for the first time.
With this equation, the more confident (will power or energy) you have, The less will power you get for teh same Δ value.
So New W now equals = old W + ∂ instead
∂ = (100% - W) k Δ / 100%
Δ = aE^t + c
a > 0, t > 0, E >=0, c >=0
c acts as a fundamental amount of willpower you get
WHERE did k come from
k can equal a value depending on the activity you do, be it sleep or eat, each can regereate a different amount of will power based on the activity and duration, so when you do something, you do this math and everything is automatically scaled depending on how much will power you have and self esteem. ∂ = some % k times Δ. k should be a value about .2 to 5 if you are going to be compairing things like sleep vs eating vs dominating the mistress. K is unitless so you can say sleeping is worth 10 points (of unknown value or type, just 10 of something), and a small meal is say 3, while a big meal is say 7. K would equal these numbers
To add things like say, Dirtyness of a cell.
dirtiness zero to 100
t_max = the max percentage tax of a fully dirty cell. Say, if the cell is at its worse, then the value should be at 75% reduction (do what ever you want)
then the tax T = (100 - (t_max dirtiness / 100%)) / 100%
the first 100% cancels out the dirtiness scale, the second the reversed t_max scale
T = some number between 1 when dirtiness = 0%, and at 100% dirtiness T = 0.25.
the new ∂ = (100% - W) k T Δ / 100%
This will generate the effect of how it takes longer and longer to get to max Will power. There is no real benifit to this, but think of it this way, at higher level, any will power you spend, means using it comes at a great cost because it takes more to get it back.
Ok, so now we have everything to do a math analysist to explain why X must be >= Y, X being how many humiliation events per cycle, Y being Starvation events per cycle. One cycle is one Starvation event, so Y = 1. This is because it is assumed that starvation removes some Will power and so to will other things, but the slave will also gain will power, but after everything you do, in order for progress to be made, the next time you start a cycle, W or will power must be less than it started.
Why is this? Say the slave starts of with enough points to refuse what ever you are going to do to them. Sure they may spend points trying to refuse, but the points they spend they could earn back just as fast as they spend it. Assuming the mistress was the player, in order for the player to have a chance of winning, they must have an advantage to allow them to beat the odds. An advantage in this case would be, being able to remove more points then the slave could regain. Say there is only one way to do this, through starvation. Before I mentioned something about being the most effecient way to win. If say you do anything else and the slave heals that damage back up, then those other options are worthless (for now), they may even be bad if the slave can heal more will power then was loss. So in order to make sure there is a way to win, starvation (for 3 days?) must always be able to remove the most amount will power (more so than humiliation and obedience which will just piss the slave off since they were able to refuse them), that way the player (mistress) has an advantage. So if you starve them to remove some will power. Next time you starve them, if you are starving them and they had less will power than before, you then further push them down, thus making progress. if they have more, you are then instead trying to regain lost ground. So you want enough will power to be lost such that it is more then the slave can recover.
Now How much should that amount actually be and why?
Well lets start with saying the player starts off normal. W = 50%, E = 50%.
Lets also assume that (for the sake of having a math model we can actually work with since so far there are too many variables) k = 1 or is ignored, T is ignored, in fact, ∂ is ignored, to make the model as simple as possible we only care about one event a day and sleep
new day W = end of day W + Δ
Δ = aE^t + c
ignoring the effect of ∂ so the model isn’t a differential feedback system.
Day Start W = W1
Do starvation, W now = W - S (a constant from above)
start of cycle
Night time, heal, W2 = W+Δ
Day 2, w = W2
Do starvation
end cycle
Cycle time = 1 day.
In order for progess to be made from one cycle to another, W1 must be > W2, this is the definition of progress being made.
using subsitutionn W2 = W1-S+Δ, thus
if W1 > W2
W1 > W2
W1 > W1 + Δ - S
0 > 0 + Δ - S
0 - S > 0 + Δ
S > Δ
Basically, for progress to be made over one day (assuming one action per day because of simple model, or turn if a day is a turn) The amount of Will power you take away must be greater than the will power the slave gains back in that day (if the game is more complex, like a day consist of rounds of multiple actions, such as eat, sleep, fap, etc. then the net sum of lost must out weigh the gains) in order for the mistress to make progress.
Now lets say you try to use Humiliation. Because as I mentioned (or tried to explain) before was if the mistress were the player, they must have the advantage. That advantage would be starvation, and in order for starvation to be the advantage choice out of say humiliation or obedience training is think of it this way. first think of it as the better choice than, meaning it takes away more will power.
So S > H But what is H
Well Humiliation does not take away will power, it takes away self esteem, however, assume the worst case, assume that the slave has enough, no plenty, no 100% willpower, so they are more than willing to refuse, So instead of being humiliated, they spend Wp.
Now assume another worse case. In order for the mistress to always have a chance to win, S must always be > Δ, this is that advantage thing. Since starving is the only saving grace, the only thing able to do this, then
Δ > H.
Meaning, If you try to humiliate, and they refuse, sure they loose some Wp, but they also gain it back over night.
This means that You have to keep starving the slave and making progress untill their will power is low enough (or at a low enough level) that after so many consecutive starvations, they will be willing to take the humiliation.
So lets consider that case.
Day 1 Starts, W = W1
Starve, W = W - S
cycle starts
Day 2 W = W + Δ
Humiliate (not enough points to refuse this) E = E - U (variables from before, self esteem lost)
Day 3 W2 = W + Δ
Starve
End of cycle
So now S must be greater than two Δ in order for this to be considered progress... for W to still be less than it started out ass...
but it shouldn’t be at least not with a reason yet, we don’t want to make some arbitrary settings, S doesn’t change, so it should take multiple starvations after using an humiliate to recover from that extra Δ and if anything Δ will actually be ∂ which is the real variable that you will be using in code (if you are taking any of my suggestions), which means the more you attack with Starvation and lower Wp, the bigger ∂ gets, meaning you can only go down so far. However, after doing a humilliation, assuming self esteem can not be regained, that means Δ will be ever so smaller next round, so you can keep hammering this.
Eventually ∂ will get so small that the above case could start to be considered progressive (X = Y) without needing for multiple starvations, and eventually you can keep doing this till ∂ get so small you can do two humiliations in a row (X now > Y ) before needing to do a starvation to remove built up will power.
So the reason I say that X must be > Y, is so that if the AI controlling the mistress tries to actually beat the player who’s the slave, players will not notice that she focus on starvation at the start. So the ratio of X humiliation events per 1 starvation event to recover collected will power would be
X = (S/Δ) - 1
Where S could be said to be = 2Δ or any number of Δ’s. so if S is three times bigger than Δ, X > Y becomes 3:1 ratio.
What about Obedience?
Well maybe around at this point if S is more than 3Δ in order to prevent players from seeing a pattern in the behavior in the code, this may be when you see it is safe to do an obedience event, humiliation combonation instead now nad then. but really if you were to be the mistress stick to humiliation since it is the most efficient way to end the game in the least amount of turns.
Some things that can make this interesting is that S can scale depending on the level of Willpower, depending on how much the slave is willing to endure (if at the cost of self esteem?)
So this would be how the mistress may behave.
if you wanted to do this in terms of numbers you could, but at this point if I want to describe behaviors such as in terms of at what percentages do you see what kind of behavior from the mistress, I would have to graph this stuff out and see what makes sense. Like starting humiliation once they are tired, and obedience once the slave is misserable.
~~~
At the start I said that your idea seems backwards. well this has to deal with the idea of choice and advantage. Right now you have described stats, relationships and event types, but so far all the power is in the hand of the mistress since she gets to choose, so it as if the description you have described so far describes the mistress being able to play, not the slave. yet you say the player is the slave so that is what I mean by backwards, there is no way to play, yet.
~~~
BEING THE SLAVE
Now how would the slave win? Well if the player were the slave, then you would have to give the slave some advantage. Since the Self esteem is basically the derivative of Will power, that means self esteem is the players weak point, which is protected by having a bunch of Will power points to use to protect youself from humiliation. So the player needs some advantage, or multiple.
Two things, you can either do things to get more Will power (I assume that is why things like eating is important, it is one way to get will power), or you can do things to get more self esteem (rarer?) This could be things like some how dominating the mistress, or sometihng, idk.
Another thing that needs to be changed is that as the math is, capping out at 100% and ∂ = 0 at that point means any resistance no mater what means you could never get a perfect 100% (teh only way to do this would be to take the limit of teh number of turns to heal to infinity), so as the slave it is impossible to win as the slave. Numbers will have to be fudged to allow for it to be actually possible to win. But at this point what may work best is instead, take a graph of paper, describe the kind of behavior you want to see (will the mistress have moods and personality?) and see if you can associate a number to it (such as how I can describe the behavior of the mistress stratagy to win and play based on how S compares to Δ and how it changes Δ changes the mistress stratagy, tactics and behavior. if you can put things in numbers you can code it. So with that graph paper, you could make a line chart. The Y axis being Will power from game over to game victory (or just 100% if surviving without becoming a slave). On the X axis call it progress, No numbers ( but it may be a good idea to evenly space things), say from zero to 100% progress (or this can be anything really, something about mood, liking you, mercy, any behavior you want to describe. It may actually be backwards.
For example, make a graph with only a axis showing Quadrant 1, positive x and y axis. Y axis is about how much Will power you have (the way to measure slave success?) (actually that would be by measuring the Δ however this will be represneted in the slope and shape of the line you end up choosing to draw, so really this graph will be doing 3 things at once). X axis represts the mistress behavior. what she is willing to do depending on what state she thinks you are at. starting close to zero, acts like the area where the mistress thinks she is close to breaking you. Middle is like the starting point, at 50% she does her usual. and neard the far end of the x axis she can tell she is not winning and is getting desprate (this would be the stage of humiliation and starvation off and on, X = Y). The benifit of this trick is you can use multiple x axis on the same graph. Maybe depending on what axis it represents when she is willing to start using one toy or tool vs another, as things get more exotic. You use the line to represent at what amout (height) do you want her to enter and exit different phases of behaviors. Curves or straight lines.The mor the line changes the more she stays in that behavior for a significant region of your training. Taking teh derivative of teh curve you draw (and maybe some inversion math?) you can make an equation for Δ or ∂ such that teh behavior you graphed can be emulated in game and it is just a mater of how the game is played by the player and by luck.
~~~
VERSIONS
Now I don’t know how you plan to implement this, like is it a card game? will it be strategic. If it was a card game, I could see it being possibly 2 player, as the mistress (player 2 or ai) would have to draw cards (3) and she would try to focus on the stratagy I layed out above, but if teh card she needs (starving) is not available she can waste a obedient event card so she can bide her time with her humilation card and waiting for a starve card. Will it be more like a planning game or something? Either way, I find it is best to think this:
What kind of experience do I want players to have if it was my game, such as, how does her personality change depending on what players have done? Then how can I use numbers to define and keep track of your progress (such as the stats you listed out) and then how can I use those number to corallate to her change in personality. Do You want her to react to unique events, are there any temporary behavors or unlockables, what kind of choices and oportunities do you want the player to have, and then how can tihs all be put together.
For myself, I would make a much more soft core game since that is more my interest, I would use different mechanics but you have certainly inspired me.
~~~
AFTERWORDS
If you read that wall of text, you can see that things like this is what I spend a great deal thinking about, working on, and enjoying. I really liked you idea, and if it is simple enough, I would like to possibly offer my assistance to help you ake it.
If that interest you, here are some notes about me. First I may be able to do art. I have recently started to get back into art (Well trying to get good at making good art and animations (mainly 2d) very quickly). Art seems to be the main issue with the NSFW dev community and most of the work in just about every game (at least those with interesting mechanics to keep my interest), So I make art specifically to try and allow for quicker game development. I focus on doing everything for free, so when there is not money there is no incentive to work, so time is the greatest enemy, hence i have been trying to refine my skills towards speed.
Not only that I have tried to focus on making games (tho nothing really to show for it) in unity because it is so flexable (meaning I can bring any idea to life in that engine just because of it’s focus on C# coding with an api that aint too constrictive (and well documented, tried doing godot was great but I got tired of howing to rewrite documenation pages since teh community it still very young and undeveloped) ), but in the theme of speed, I have also tried developing code for unity to allow for rapid game developement. Meaning, instead of coding for everything, code is either generalized or self organizing, such as a made a crude prototype (like everything I make XD ) of a point and click game (with room navigation) that mostly requires just background image importation, add children objects to rooms (things to click on), use a flow chart to describe how rooms are connected, and without touching any code, be abel to play a tech demo (I did a private video I think once and made a game in less than 12 minuets speeding while just stealing stock images on google for the demo), but it was just that, a tech demo. Making code that makes itself means once it is ready assembling of the game is quick, bug fixing is quicker then usuall game making, and the art is the only thing slowing things down.
Basically I have been doing electronics and coding for 10 years and art for 5 years, So I am a confident coder, but still an exerimental artist with no set style. I recently found a way to make characters and animations I like in a good amount of time for 2d animations, its just a matter of settling on a style (I am limited due to technical issues with the animator program) which I am still just focusing on further simplifying and exageration skills. And I do everything on a budget of no money. I’m in college still with out a job so I am not in the habit of spending money or really making money, but that also means my time is quite limited, also being in a robotics and electronics club is going to keep me busy for the next quarter for sure and I know one of my classes is going to have long Homework, so I am not always the most available, but if that is alright and you only need a few things done I may be able to help, let me know if your interested or not. I’d like to see you continue to work on such a good starting idea!