Experimenting with LUA

So far, almost everything in House Dominae is read and parsed from external text files (read: moddable AF) with one exception: activities (”sleep, work, clean”, etc.), because they are mostly logic.

I’ve been experimenting with adding custom scripted activities using LUA. LUA is a pretty common scripting language and is often used in games due to its simplicity.

It’s working quite well and I’m curious to see how far I can take it.

Two things

Two things

Renting buildings
This weekend I put some work into the game’s building mechanic.

You’ll start the game in a building just big enough to house you and your one starter slave. To progress and expand you’re going to have to move your brothel to successively larger buildings. Every building has its own room layout, which is an important consideration because the size of a room determines what type of room it can be.

You can also choose which town district your brothel is situated. The location of your brothel will heavily influence the kinds of customers you can receive.

Naturally, all of these considerations will affect the rent so choose wisely.

Hermaphrodites
I also made a small but critical change to the shemale gender. They can now have both male and female genitalia. (They used to only have male bits.) I really liked the idea of a well-defined third gender and how it created a nice symmetry with the other two genders. At the same time this is stuff people really care about and in the end, the less restrictions on character creation the better.

Shemale characters with both a penis and vagina is now referred to as “hermaphrodites” but are still considered to be members of the same gender as their vagina-less sisters. They’re a little OP, because they they get the best of both worlds, but so be it.

Reputation and slave levels

I’ve had a couple of unproductive weekends. Long weeks at work made me want to play games rather than make them. But a few things have happened since my last update.

Reputation & Influence

I’ve implemented the reputation system, pretty much how I’ve always intended it. The idea is that every customer that leaves your brothel will talk about their visit to other people, affecting your brothel’s overall reputation. Happy customers raise your reputation and unhappy customers lower your reputation. Unserviced customers will lower your reputation by a small degree.

The higher your brothel’s reputation, the more customers it will attract. The net effect is that you’ll start out with just a handful of customers and (granted you do a good job) more will arrive

over time, eventually in groups and of higher social class. It makes the start of the game calmer and easier to manage with a small slave count.

At the end of each day, your reputation score converts into Influence points. Unlike reputation,

influence is a resource you keep until you choose to spend it, either in the Senate or the Slavers’ guild (when those are implemented).

Slave level

I’ve re-designed how slave levels work. Previously a slave’s level was a measure of how well they had been trained. More like an at-a-glance view of a slave’s overall skill (and worth).

In the new system, a slave’s level indicates how well they’ve adapted to their life as a sex slave. A level 0 slave would be one that was recently thrown into slavery and are still clinging to their old life. Conversely a level 3 slave is one that has embraced their new life as a walking cum bucket and takes pleasure in servitude.

This change allows the game to make a better distinction between different slaves’ “slavey-ness” and can describe sex encounters more accurately. For example a low level slave encounters will be written more resisting and rapey while well-worn slaves will be written with more compliance or even gleefulness.

In addition, raising a slave’s level will boost some of their stats, like obedience. Leveling up a slave costs gems, which is another resource you earn whenever a slave orgasms.

Groups

Groups

As I hinted in an earlier post, I’ve been working on group activities. This will open up the possibility for threesomes and group sex with customers. Before, customers could only be individuals but now they can arrive in groups and ask for group-y things. So far I can only do group activities with a single slave, and I haven’t written up any texts yet. Good progress, none the less.

Auction game

I only just threw this together today but I’m still going to mention that I’ve finally added a basic slave auction mini-game. To buy a slave you must bid against an assortment of rivaling slave traders. There’s a high degree of luck involved but I’m quite happy with how I was able to balance it so that the auction price ends up being very close to the actual

hidden value of the slave.

Auction competitors will show a random degree of interest in the slave and bid accordingly, and within reason. If you’re lucky only a few will show interest or even drop out early. I also took steps to make sure the auctions move along at a brisk pace, and not waste the player’s time too much with indecisive AI.

UI improvements

I took some time and improved the tooltip system. It had a few bugs but I also wanted to expand the tooltips to contain more than just plain text.

After putting that in place I could add a new feature to the activity window. It’s a small icon next to the event text, and by placing your mouse cursor on it you get a plain English summary of all the random rolls and other under the hood stuff.

I’m hoping that this will a) better explain the game’s internal systems and b) enable me to loosen up the “pretty” text since it no longer needs to convey every single aspect of the event.

Bed bath & beyond

I haven’t posted an update in a while so let’s fix that.

Building stuff

An earlier question spurred me to work on the building generator and to implement some different room types. I made a bathroom. For bathing! In fact, the exercise of implementing a new room type forced me to replace a bunch of old placeholder code with a more proper implementation.

Random events

I added an early, but functional, random event system. These events can trigger – randomly – when a specified condition is true for any slave. I’ve experimented with this before but I was missing the part where a player decision could affect the state of a slave.

As a proof of concept I made a random event that, if a slave’s health got too low, they could get sick (or not). I then made a second event that would randomly make a sick slave healthy again, as if they had recovered with time. I thought it was kind of an interesting concept and I’d like to explore it more.

I still have to write up a bunch of (hopefully interesting) events, but at least the technical details has been laid out.

Stress

This is a really minor thing, but I flipped “happiness” around and called it “stress” instead, and immediately a lot of my math and simulations started making more sense. For instance it doesn’t make a lot of sense that taking a bath makes you happy, but it does make sense that it relieves stress; and anything that could be considered “unhappiness” translates very well to being “stressful”. It also removed some ambiguity with “Morale”. See? Game design!

Greetings

Another minor thing. You can now place one of your characters in the entrance to greet arriving customers. A social skill check is rolled and if it succeeds a bonus is added to all working slaves’ own social skill checks. This means a highly social character can assist socially inept slaves.

It’s not very significant but it’s something a player character can do to contribute to the business of whoring without actually whoring themselves out like a lowly slave.

What’s next?

Looking down on my notepad I’ve written “Multi-event ?”, which is to say I’m considering adding two new activity types: single customer on multiple slaves and multiple customers on a single slave. This will open up the possibility for a wider range of customer requests, like exhibition acts and group sex.

This is an interface/assignment problem more than anything but I think it could work.

Such progress!

I’m on my yearly staycation and I’ve pretty much been coding every day and I’ve made a decent chunk of progress on House Dominae so far.

My focus has been on the simulation character interactions, and basically cleaning up errors I’ve come across. Here are some of the things I’ve done:

Feelings

I’ve implemented a model for morale and happiness. Slaves will now get unhappy when they’re driven against their own needs and wants and vice versa. A slave’s sexual orientation has become a pretty important factor for their overall happiness. Cammy (gay in my game) doesn’t like sucking dick and she’s being a prissy little cunt about it!

 

Characters now form relationships to each other. There’s a new ‘Socialize’ activity for when you want to improve a relationship between two characters, without sexual intent. A slave’s relationship to the player character is extra important because it carries consequences for their obedience and overall happiness.

Characters can also be attracted to one another, either physically or sexually, which aids in their bonding. The attraction is asymmetrical and based on their individual sexuality.

Minor note: There’s a new mental health bar and if it ever goes down to zero the slave “breaks”, erasing most of their personality and rendering them extremely compliant. A slave’s mental health is very stable on its own so it’s up to the player to introduce the necessary trauma.


Punishment

I’ve redone the insubordination system once again. Whenever a slave breaks a rule they’re tagged with an insubordination account. The player has two days time to punish any insubordination, or it will convert into a permanent deduction to obedience. Proper punishment gives a slight increase in obedience but not as much as it used to.


Horny slaves

Lust (or horniness) has been implemented. Slaves will grow horny over time, some more quickly than others, and they can cum in sexual activities. Orgasms naturally affects their happiness. Whenever a slave cums “legally” you’re given a gem, which is a special currency which doesn’t have a use yet, but will in the future.

If a character goes to bed horny they may forfeit some sleep in order to masturbate. You can forbid a slave from masturbating but it becomes an obedience roll at that point.


Interface

This is a minor thing, but because I’ve added a new set of rules and concerns I also put some time into making sure it’s apparent in the UI what the state of a slave is. Potential concerns and critical conditions are indicated with icons on the portraits.


Town locations

There is now a number of town locations to visit, although not all of them have been fully implemented yet.


Last but not least…

… I’ve done a lot of sweeping improvements to the text engine, conditional expressions, event image selection, and I replaced the random number generator with a super robust noise function based alternative. It practically prevents save scumming; even more so than before.

Pawn editor

Today’s project was the in-game character editor. It enables editing of the 3D appearance of the character “pawns,” as I like to call them.

There’s nothing much to say,

really

. The color wheel probably ate up most of the time.

For character authors the editor will output an alphanumeric code that encodes all the information necessary to render that character.

00480-D040K-4803Z-ZVUQX-66099

That code can then be copied and pasted into the character creator. This ended upt being the method I chose for setting a character’s 3D apperance.

I could’ve made the appearance settings available in the character creator too, but since I wouldn’t be able to render them there, it

probably

wouldn’t be very useful.