The modding support for House Dominae is feature complete! That begs the question though: why did I even make a modding system? Couldn’t it had waited until after release? Well, maybe, but not really. Custom content has been a high priority item since the day I started working on this game. One of my original design pillars, that’s guided the development so far, is to support any and every character – within reason.
To make that a reality I could do either of two choices: I could come up with and implement every characteristic of every popular character archetype players would ever need… or I could come up with a handful of those and let players fill in the missing pieces themselves. I chose to do the latter.
What’s a mod?
So what do I mean by mod? The word ‘mod’ often refers to some kind of homemade add-on that modifies aspects of a game, usually by loading some kind of code or custom binary. That’s not what I’m talking about here. Because almost all of House Dominae’s content is defined as XML, a mod can be something as simple as a snippet of additional XML that gets loaded by the game alongside everything else.
At first it was just going to be a folder where you would drop xml-files, but now there’s a formalized file format (it’s just a zip file) where you can add some more information about the mod (and its author) and make it a bit more functional and easier to share with other players.
The final piece of the puzzle, that I just got working, was to allow snippets of xml to be attached to character files. That will enable you to create characters with custom traits that are unique to those characters, with custom behavior, without having distribute them as separate mods.
It’s been a while since the last post and, frankly, too much has happened since then for me to fully cover it all. I must admit, I have four different unfinished drafts for posts that never got posted. Sorry about that. It’s really overdue for another House Dominae update, so here we go.
This spring has been extremely productive for me, but this is also a catch-up of sorts, and it’s going to include things that I did way back during last year. I won’t be able to cover everything in much detail. I’ll go over the big things and then just dump the miscellany as a list. I don’t want this to become another unfinished draft.
I don’t consider myself much of a 3D modeler but I’ve really enjoyed playing around with Blender lately and I was able to clean up the pawn model quite a bit. The changes are subtle but I touched up the geometry and redid the entire UV-mapping and texturing. Of course, since the outfits fit over the characters I had to redo them as well. Which gave me an opportunity to touch them up as well. I also went and bought proper models for all the animals. The ones I used before were serviceable, but not great.
There’s still much left to do, such as creating more faces and hair pieces.
Added even larger breast size shape.
Added male body shape.
Added athletic and thicc body shapes.
Added support for heterochromia.
Created more accessories and outfits.
The game already allowed you to replacing the pawn model with any custom one and I’ve expanded on that to support custom faces, accessories, hair models and outfits. Obviously this will require some 3D know-how, but if you’re capable of exporting an obj-file you should be fine.
You can now accept quests at the prostitution guild.
When a pregnancy ends you now have the option to keep the baby. The baby will be attached to their mother and must be fed regularly until they grow up into children and, if you’re extremely patient, adulthood. (I’ve added some time acceleration items to lessen the wait.)
The child’s pawn will inherit the appearance from both parents.
The actions that a character is permitted to take used to be determined by a set of simple rules that pretty much only checked whether they were a slave or not. I’ve redefined and moved that logic into a new jobs system.
The idea is that your slaves will start as prostitutes and the brothel owner as a trainer, but as time goes on and characters learn new things, they can switch roles and even specialize in the things that they excel at. Switching jobs can be done at any time but requires a set of prerequisites to be met. Some jobs will open up new activities. Others will significantly buff existing activities and services.
I’ve improved relationships between characters. It was working quite decently already but I simplified the underlying numbers and how they are presented. I also added new facets that determine the nature of a relationship. The effect is that a relationship is slightly more nuanced than just having a number going from love to hate. One of the effects is that if a character gets horribly abused you can’t just win their affection back by giving them gifts. In according with these changes there are some new relationship states like “Untrusting”, “Romantic” and “Inferior”.
House Dominae was written from the very start to accept custom user data and treat it as a first class citizen. Most of the game’s existing content was created in the same way a modder would. So what I really mean when I say I’ve added modding support is that I’ve formalized how that data should be packaged and distributed between players, how it gets loaded, and how the game should handle conflicts and errors.
Modding is clearly a massive subject; one that will probably deserve its own wiki at some point. There are very few regions of the games that a mod can’t touch and for the most part it won’t require any programming what-so-ever. That’s the idea, anyways.
Revisited the auction mini-game. There is a new mechanic for disrupting aggressive bidders.
Slaves can now be sold.
A slave’s value is determined by their stats, skills and traits.
Traits can now associate adjectives to body parts, that gets sprinkled into event texts. (e.g. “Midna’s petite body,” “Cammy’s childbearing hips,” etc.)
Stores now offer random discounts on items.
Include custom model & face texture in character files.
Added ability to add unknown/custom traits. (mods)
Can now pre-equip characters with items.
Optimized image processing. Can now import a thousand images in seconds rather than minutes and doesn’t hang the application.
Customer portraits were replaced with anonymous silhouettes.
New town locations:
Fraternize, Encourage, Intimidate, Fuck (specifically), Forced sex (rape)
Slaves can now put up physical resistance based on a hidden strength roll.
Slaves have new mental facets that determine their mental state, allowing characters to behave canonically in event texts while also changing over time.
Better camera controls.
Books and other items can now alter the sexual orientation of a character.
Defined all skill rolls up to level 10.
More content settings: Anal, Lactation.
Third gender setting: Shemales can be considered a third gender (in-world) or be restricted to player characters only (chicks.
Animated sex scenes (experimental).
Image searches improved to include both actor and receiver.
Character injuries have been refined and now includes things like soreness and swelling.
Can now harvest breast milk from slaves to sell or to make love potions.
I recently went on my annual vacation. This is usually the time when I hunker down and work on my personal projects in a more full-time capacity, instead of a couple of hours here and there. I got a ton of things done and I thought this would be a good opportunity to write an update post and talk about some of the changes I’ve made.
I noticed the game was hitching when I clicked the turn-button (~0.5 seconds) and that led me down a rabbit hole of tracking down what the heck the game was doing that was so god darn CPU-intensive. It turned out to be one of those convenience language feature in C# that is technically expensive but worth the convenience, as long you don’t use that feature tenths of thousands times in a frame, which apparently I was. The fix was fairly straight-forward and the difference in performance was immediately obvious.
However, that made me curious and I decided to do a proper performance profile and look for similar bottlenecks. I ended up finding a number of small but effective improvements, making the game much smoother to play.
House Dominae is not a performance intensive game at all, by any standard, but almost everything in the game is wired up through user-definable rules and every time something changes the game has to re-evaluate everything that may depend on that change. It becomes a domino effect and even though the rules-system is highly optimized, it gets hammered hard when passing turns.
The building generator got some attention. The building’s purpose is little more than to be a board for you to place your pieces on, but never-the-less I want it to look like a proper building with walls, doors and and furnishing.
The building generator has always had support for multiple floors but it was never truly expressed until now. Revisiting the building generation code was also necessary before I could start on the next feature…
I spent a lot of time putting this together and while you could easily argue that this feature barely even belongs in a brothel sim, it relates to my personal interests and to be honest I just had to get it out of my system.
So, you can now rent a stable which acts as a separate building to your brothel and is exclusive to horses. When you buy a horse it will show up and live there, which makes a lot more sense than having them stand around in the brothel. Furthermore, customers may occasionally arrive by horse and they will park them outside your stable. If you want to earn an extra buck you can now service both the customer and the horse they rode in on. (Thank you Delan on the Discord for the suggestion.)
Horses (and dogs) are a part of an optional bestiality-thread of the game. You can choose to play with or without them.
Brothel management stuff
As the manager of a brothel you naturally need to wield some control over your business, as well as be able to get information about how it’s doing. I’ve added a few more features to help in that regard.
You can now manually adjust the gender distribution of arriving customers. This isn’t very realistic but I believe it’s important to allow for players to have this control since it removes the frustration with having to service undesired customers.
At the same time, I added the ability to boost customer count through advertising. It’s just a simple multiplier at a daily monetary cost.
You can now control when your brothel is open for business. This allows the player free up turns for internal affairs like training or resting without having to worry about refusing customers.
This has been a planned change for quite a while. Your brothel is located in one of five districts, each populated with different qualities and types of customers. You now compete for those customers against rival brothels. At the end of the day you want all of your customers to leave your brothel satisfied. Every customer affects your overall reputation and that is what determines your rank.
Your brothel ranking serves a few purposes:
Your rank determines the count and quality of customers, replacing a much more elaborate system that was obscured by unintuitive math.
It allows me to balance the game’s difficulty in a more predictable way, which is especially important in the early game.
It’s self-balancing, so if your brothel is burdened by too many customers and is unable to satisfy them, your rank will drop and bring your brothel down to a more manageable level.
Becoming number 1 in a district is a subtle hint to the player to start thinking about moving to the next district and compete against a new set of rival brothels.
Sex simulation improvements
There is a system in House Dominae’s that handles every sexual encounter, specifically, it figures out who’s doing what to whom and what the effects are, if any. It’s easy for the game to say “they had the sex” and move on, but there’s an important difference between a slave being fucked by a drunk half-chubbed peasant, being fucked by someone they love or being fucked by a god-damn horse (especially if it happens to be their first). The system itself is remarkably straight-forward but the code has to consider countless variables and it had become a bit of a mess, in need of a clean-up. So I did just that.
The game now keeps track of participants’ phalli and orifices. Again, it’s a very simple system but at least it means that size matters. If a person is too big, the receiver may feel pain. All of these small, almost inconsequential differences trickle down to the characters themselves and gives them an opportunity to respond in meaningful ways.
Pleasure is handled differently than before. It used to be a skill check and some dice rolls, but you could run into situations where characters had sex but no one came. Now sexual pleasure is more assumed and it’s more a matter of how fast one gains pleasure and how it’s distributed between participants. With this came some new sensitivity values so that characters can be more or less sensitive in places.
It’s been over a year since my last blog post and I’ve received a lot of questions about the state of the project. Don’t worry. Truth is, I’ve been working on the game all along, as usual. I’ve just done a poor job showing off or explaining what I’ve been doing.
I’d like to remind everone to follow me on Twitter (@RealisticsSL). I put up updates and screenshots there more often, because it’s much easier. You can also join the Discord. It’s been kind of quiet, but I’m there if you have questions. (Although, I reserve the right hiss at you if your question is about whether or not the game is dead.)
What’s been done
Below is a non-exhaustive list of the changes that’s been made to the game since April of last year. At least the ones I can still remember:
Added title screen UI
New game setup (with 4 scenarios).
Load/save game UI
Customizable gameplay options, allowing players to omit things they don’t like (like dickgirls, pregnancy, lolis…)
New town locations
Clinic: Plastic surgery, sex change, sterilization.
Pet shop: Adopt pets *
Orphanage: Adopt orphans *
Added ‘Charm’ trait type, which works like a second personality trait but is purely superficial.
Ordered physical traits into a new ‘Feature’ trait category.
Removed skin tone and hair style from character properties.
Added support for transgender characters and custom pronouns.
Added several new character traits.
Added, and then subsequently removed, a skill tree system.
Insubordination/punishment system tweaked to be less invasive in day-to-day gameplay.
Obedience is no longer a character attribute, rather it now gets calculated based on the slave’s mental state and progression.
Added a new system for randomly generated characters (as opposed to player-created ones).
Character creator app was updated to reflect all the changes.
Added new hair styles, outfits and accessories.
Reworked the pawn model to use blend shapes instead of separate models.
Improved the appearance editor.
Added support for custom character models. (.obj, .mtl)
General improvements to the underlying pawn system.
Implemented support for cooperative (single-customer-multiple-slaves) sex activities, i.e. customers can now ask to be served by multiple slaves.
Reworked trainer-slave sex activities. Player can choose mutually enjoyable acts or to be purely selfish.
A character’s sexual orientation can now change through positive sexual experiences.
Reworked the customer difficulty and relevant skill rolls to be represented as stars and half-stars. A star is equivalent to a level in a particular skill. Also, results are now given a letter grade rather than a percentage score. (e.g. ‘Faced with a 2-star Peasant, Cammy’s performance only reached one-and-a-half stars, resulting in a B grade.’)
Reworked the character relationship system.
Relationships now dictate whether characters want to have sex with one other.
Changed or removed some sexual services affected by the changes above while also adding new ones.
Added a brothel management screen with general information and financial history.
Added a system where brothel services are unlocked in a ‘tech tree’ like system. *
Added a ‘Services’ tab for setting custom prices. *
Significantly improved startup performance. (It used to be unnecessarily slow.)
This has been a long-term undertaking, touching several parts of the game internals, and it’s finally coming together. Previously the primary aspects that governed slave performance were their attributes and skill levels. I’ve now added a mental layer to that equation. Feelings and what-not. Does the slave choose to do what you ask of them?
Because House Dominae is a game rife with enslavement and non-consensual sex, the answer has always been “No, of course not. But they don’t really have a choice, do they?” I’ve always thought it’d be more interesting if the answer depended on the character and that each of your slaves gave different answers.
I’ve added 5 new mental attributes:
Servitude – The desire to blindly serve.
Sexuality – The need for sexual pleasure.
Loyalty – The loyalty towards the PC.
Corruption – The decline of the rational mind.
Fear – The fear towards the PC.
All of these values contribute in various ways to a slave’s performance but more importantly they all give unique answers to why a slave would even entertain the idea of obeying you. They also give the player five different avenues of play.
For instance, if a slave is being especially unservile, you can always instill some fear in them through intimidation or a not-so-gentle slap on the wrist. Fear is a very powerful motivator.
Characters can now form their own opinions regarding all the activities they’re asked to perform. Besides contributing to their overall happiness, this adds a very pleasant variety between slaves. Instead of presuming a slave hates everything, it’s a little more uncertain now. What a character likes and doesn’t like is random, but also depends on their mental attributes and their personality trait. A character that is very sexual by nature will be more inclined to enjoy sucking cock or having anal sex than a more inhibited personality.
Health / Injuries
If you or a customer are too heavy-handed with a slave they can now suffer physical injuries. There are two levels of injury: bruises and wounds. A bruise will reduce the Appeal of a slave but they will heal after a while. Wounds are a bit more severe and they will need to be bandaged, or there’s a risk that they turn into a permanent scar. If a slave’s health should ever drop to zero, they get moved to a hospital for a few days to recover.
The character screen is a part of the UI that I’m constantly revisiting and iterating on. It’s more or less the player’s main window into their characters and I’d argue it’s the most important UI in the whole game.
Since the very beginning I’ve presented character attributes as horizontal bars, with the intention of conveying that 1) bigger numbers are good, and 2) the player should try improve them if they can. But lately I started experimenting with alternative ways to present these values and I ended up with taking a page from good old D&D.
That is to say, instead of having some loosey-goosey decimal value between 0.0 and 10.0, I’ve changed it to plain whole numbers in the range from 0 to 20. Mathematically this doesn’t make any difference what-so-ever but I think it makes for a more legible UI and makes them easier to understand.
Character report / Statistics screen
I’ve added some UI to display historical information about individual slaves. You have a list of every customer they’ve served, how well they did and how much money they earned. I also added a line graph for good measure.
And because I’m now tracking all of this historical data I also added a statistics screen to enumerate all the things your slaves has been doing. I truly enjoy knowing how many cocks Cammy has sucked.
Activity internals improvements
A lot of the features above were made possible because I’ve made some very important improvements to how the game handles activities, i.e. the tasks you give your characters. You have to consider the fact that none of the activities in House Dominae, at least not the sexual ones, are hard coded. Instead they’re defined in XML-files, with the intention to supports any activity, and where players can add their own activities, just as they would add their own characters.
So therefore, the game didn’t actually know anything about the activities internally. All it knew was the participants, which skills would be used and and how much money you’d earn. I could do things like deduce the activity from the relevant skills but I knew that wouldn’t be very accurate.
The XML-block above describes the vaginal sex activity in simple words the game engine can understand. Basic nouns, verbs, that sort of thing. And through this simple method, combined with the information it already has, the game can actually deduce a lot of useful information. From this it can determine that the slave is being fucked and therefore would break virginity, potentially cause pregnancy, or even hurt the slave if the other participant has a sizable phallus.
The preferential system is built on top of this, by pattern matching the keywords. If a character hates doing the activity, their morale will suffer from it.
Finally, and I only put this in this yesterday, female (and some shemale) characters can now be impregnated, either by a random customer or any of the playable characters in the house. Every time someone is fucking someone there’s a chance they’ll cum inside, and then there’s a small chance for conception. However, the pregnancy won’t become apparent until a few days later.
Pregnancies don’t last for a full 9 months, rather it’s around 50 turns, which still feels like a long time in game. As the pregnancy progresses, the character will develop new physical features associated with pregnancy, that customers may or may not be into. Eventually, when the baby is born, it’ll be immediately taken from its mother and given to an orphanage, never to be seen again.
Of course, even if there’s a very small probability for a character to become pregnant, that probability approaches 100% if you play the game long enough. Therefore, I’ve put in several countermeasures for players who don’t want to interact with the pregnancy mechanic:
You can turn the whole feature off as an option.
You can toggle the use of contraception, which nullifies conception on a character-by-character basis.
A character’s fertility can be controlled via traits like: “Barren”, “Infertile” and “Fertile”.
Considering it only took me a day to implement the pregnancy mechanic, I think it’s safe to say the game’s systems have reached a decent level of maturity. I’m very happy with how things are turning out and I’m really having fun playing around with different traits and features.
Been working on minor stuff and experimental writing. I’m trying to stay away from big features because we’re in the middle of a hectic couple of months at work and I know from experience when to not over-extend myself.
Work is easier if I’m focused at the office and weekends are better when I’m not worried about work. It’s good life advice.
Hey, here’s another update on what’s been going on with House Dominae. I apologize that I haven’t taken the time to write about all the things I’m adding to the game. It takes time and I chose to spend that time coding instead (and also drawing).
LOTS of things have happened though, and I thought it would be funny if I went through my notes and compiled a list of all the changes that I’ve made since my last blog post. So this is just going to be a big dump of changes and I’m sure some of them won’t make any sense. But if anything, it should give you some relief that things are indeed happening, even when I’m not writing about it.
Gameplay / System
Added developer console with dozens of useful debugging commands.
Context strings format:
Added string references.
Added paragraph breaks.
Made changes to activity xml-format.
Updated several sexual activities.
Added support for activity-specific modifiers.
E.g: Having large breasts now improves titjob performance.
Moved more room logic to xml-format, nearly eliminating hard-coded logic.
Added throne room type (for seated activities).
Added training room type.
Newly purchased slaves now get randomized starter experience.
Customer system improved in general.
Customer can now have traits (quirks).
E.g: Customers can be drunk, gross, rough, generous, etc.
Customers now have an associated level that determines their difficulty.
Customer classes overhauled.
Added non-human “Horsefolk” customer class with “horse-like” traits.
Restored groups of customers to working order.
Reputation system overhauled.
The class of customers your brothel can attract is now based on the district your brothel is located in.
Brothel reputation is now based on the social class of your customers and the district your brothel is located in.
New customer types can be configured to arrive at specific points of brothel reputation.
Added activity for practicing vaginal and anal sex using a dildo item.
Image scrolling tools improved.
Added ability to zoom.
Added support for multiple character portraits. (Randomly selected once per game).
Resting while already rested reduces Stress.
Added “Spirit” stat to represent a slave’s mental strength.
Morale system implemented.
Morale is now affected by events that occur to a slave and things they like and dislike. What a slave likes and dislikes differ based on their Personality and Mentality.
Loyalty / Reason system
Loyalty and Reason is affected by events that occur to a slave, based on the slave’s current Mentality (previously “Mood”).
Character details screen:
Fixed/Finished the Biography tab.
Any flavor text moved from main tab to biography tab.
Biography now lists a character’s cup size.
The “Rules” tab is now the “Manage” tab and certain commands were moved there.
Morale stat tooltip now lists events that will affect that slave’s morale.
Status effects moved to own widget instead of being mixed in with other character traits. (Even though they’re both “traits” under the hood.)
Character markers now display the character’s current stamina.
Lastly, I’m working on adding animals as a character type to the game. Stay tuned!
I’ve added food (and hunger) to the game. Food will serve two purposes: primarily it’s as a simple upkeep mechanic. Slaves require food to survive and food costs money. The second purpose is as a morale booster.
For every slave you acquire you have another mouth to feed. But you don’t buy or manage a food stock. Instead, your characters will passively consume some amount of units of food every turn and at the end of every week you pay for the total food consumed.
You can set how much food is allocated to each of your characters. You can starve a slave to save money, however they’ll be less happy and weaker as a result. You can also reward slaves by giving them extra food, which will have similar but positive effects.
Naturally, the owner/player character requires more food than the common slave to be content.
At the end of the day this is a fairly inconspicuous addition. The player is not required to manage their food consumption if they don’t want to, as long as they can earn enough to pay for the weekly food expenses.
Sorry about the lack of updates. I just don’t end up posting as much as I probably should but development-wise I’m pretty much on the same pace as always. Maybe a little bit slower since work has been pretty hectic this fall.
Looking back at what I’ve done most of it have been focused on various systems in the game, which makes for really poor screenshots so bear with me.
Characters can now be defined with a personality trait. This is actually a very minor addition but it should be helpful when creating characters. Personalities work just as any other trait, but a character can only have one. I realized that a bunch of the psychological traits would serve better as personality traits, like “Shy” and “Slutty”.
I have a small confession to make. I stole this system from SoldGirl Town, almost in its entirety. In short, slaves now have two new stats: Loyalty and Reason (previously Mental health). These attributes are then used to determine the slave’s current state of mind or “mood”. Slaves generally start out with low loyalty and high reason resulting in a hateful mood. By slowly changing these stats through their actions, the player can alter the mood of a slave to successively make them more compliant and eventually
submissive and obedient.
It’s worth mentioning that this completely obsoletes the slave leveling system, which I’ll remove at some point. But I think I like this system better because it’s more nuanced and it adds a secondary way to affect a slave’s obedience besides the insubordination/punishment system.
This is another small change. I redefined the skills and categorized them in groups; a primary group (Manual, Oral, Anal, etc.) and a secondary group (Elegance, Perversion, Technique, etc.) The point is that every sexual activity will require a skill in the primary group and (optionally) some skill from the secondary group.
The primary skills should be self-explanatory but you can have vaginal sex in lots of different ways and I wanted the game to reflect that. So if a customer walks up and wants rough sex, it’d require the slave to use both their vaginal sex skill and their rough sex skill. An aristocrat might want a more elegant experience. You get my drift.
This also leads into some future work where I want to add some non-sexual services like strip dancing.
These were previously called “Techniques”. I wanted a way to clearly indicate a character’s skill growth. But I kind of solved that when I switched to a level based skill system over the previous linear one. Level 2 is clearly better than level 1.
So I changed techniques into be something a bit more interesting, I think. Characters will now occasionally learn special skills (I needed the word “Technique” for something else) and these are effectively buffs. Some special skills will be learned from books while some will have to be learned spontaneously. They should hopefully help with slave specialization and to differentiate slaves from one another.
You can now inform the game, via the character creator, if two or more characters are connected or related somehow. Characters can be brothers and sisters (for that incestuous hotness), husbands and wives or just canonical friends or enemies. I believe that if the player knows that two characters are canonically related, the game should be able to know that too.
This will come into play later when I revisit the relationship system. I believe there’s a ton of gameplay potential to be had there.
Semantic engine improvements
I added an option to allow the game’s text engine to refer to the player character as “you”. [Name] [is] tired will produce either “Chun-li is tired” or “You are tired” depending on the setting. Pretty neat!
I added an [a] command that will correctly output “a” or “an” based on the succeeding word. This is incredibly useful when referring to unknown things like names of customers – which now have randomized prefixes for variety.
Finally, I added [if], [elif], [else] & [endif] commands to do conditional statements. You could already do this but the existing syntax is more suitable for individual words whereas this will work better for full sentences and paragraphs.