Tuesday, 6 September 2011

Emotion Modelling

The heart of any training game is getting the girls to react believably to the training stimulus. However our simulation of the training process hasn't really changed since Pooolka write the first draft of Slavemaker.

In this post I'm going to talk a bit about the current state of that art, and what I see as good and bad about it. Then I want to explain what I want to do that's different, why I think that would be better, and some ideas on how I hope to get it done.

OK: State of the art. Basically all the games I'm familiar with work by  having different activities add points to some statistics, and subtract them from others. On balance, more points get added than subtracted, so it's possible to max out the girl's stats, while at the same time, the subtractions keep the game from becoming overly linear.

There's a lot that's good about that approach. It's simple, it's easy for the player to understand what's happening, and it gives a pretty good impression of a training process. It's simple, and it's Good Enough. These are strong points in favour.

As for drawbacks, there are two that spring to mind. One is that the system offers few surprises once you master the basics. You don't ever see a girl fly into a huff, and then slowly warm back out if it, for instance. You never see resistance suddenly crumble. You never see sullen obedience or apologetic defiance.

The other drawback is that it's very much a single trainee model. It doesn't allow for interaction with any other girls. Even in games like Whoremaster or Otherworld  that have multiple girls designed in from the start, they're still just running multiple parallel single player training.

So, then: What I want to achieve. I want to keep the keep the good parts of the original system so far as I can, while adding room for the girls to have emotional states that can change, usually predictably, sometimes not. I want to model relationships as well. Not the girl's relationship with her trainer, but also how she feels about each of the other slaves, her feelings for other masters and mistresses, and her feelings about the various tasks used in her training.

The hard part in this is going to be maintaining the simplicity and understandability of pooolka's model. In programming terms, it's a dead loss. We're going to need a lot of code and classes to manage these relationships. In terms of player interface, I think we can keep it more or less unchanged. As for understanding why the girls are behaving as they are, that's harder.

If a girl does unexpected things too often, then the game seems arbitrary and unfair. We can mitigate that a lot by making information available so the player can work out why in reterospect. But at the same time if we make too much information available, we lose the surprise when something unexpected does happen.

How to do it: I'll go into more detail in the next post, but basically I want to
have a state machine for different mental states, and to have that emotional state colour the way a girl reacts to a task. So if she's Defiant, then even if she obeys, she'll do it spitting curses at you. Or we might have an Submissive state where she does pretty much as she's told, and if for any reason she can't bring herself to obey, it'll be with apologies and pleas for mercy. Run either of them for too long and they'll transition to Tired, and not say anything apart from "need .. to ... sleep ..." or some such thing. Let them sleep and they'll jump back to their previous state.

Transitions are all going to be based on rules, and those rules will take account of  environmental and situational circumstances as well as attributes. So, for instance, you could have girl busy falling in love with their trainer, who has a bad day and ends up tired and hungry and gets given all the tasks she hates. If she gets enough negatives from all that, it's possible she might spike to an Angry state. She probably won't stay there long, because her stats are still ones for "falling-in-love". So the trainer gets an unexpected earful the next time he talks to her, followed by a fairly rapid cooling off afterward.

There are other things I'd like to do, too. Make effective training rely on rewards and punishment as well as simple repetition of a task, and allow the player to use things like hunger and sex drive as leverage to get obedience. But there's probably enough to be going on with here.

So, to summarise: I want to extend the basic pooolka model for training by adding emotional states that transition by well defined rules, but which are still capable of unexpected spikes, and I want to model relationships with people and with activities to provide extra variables to drive those state transitions. All of this with a user interface little different from the one
in slavemaker.

Next post I'll do some UML and maybe some code showing how I'm thinking of implementing all this.

No comments: