Friday, August 28, 2015

Progress, August 28

Today's progress:
  • Gameplay streamlining code! If something stops being beneficial for a slave, it will now automatically stop. For example, there's a maximum size drug injections can get body parts to. When it gets there, the drug regime stops on its own, and lets the player know that it has.
  • Updated surgery reactions. There are now 25 possible surgical alterations (though naturally all of those aren't possible at once), and 38 possible slave reactions to surgery ranging from "whatever Master wants for me is best" to homicidal rage.
  • Long playtest, first one in a while. Went great! I'm sure there's a technical programming term for the difference between bugs that throw errors and bugs that just produce odd gameplay; I'm mostly dealing with the latter since I can now write the code I need without it breaking every minute. I rarely see ERROR any more, now I notice that sexually skilled head girls shouldn't be able to train other slaves in vanilla sex when they're wearing chastity belts.
  • Wrote more FCNN. This is a news ticker that plays random single-sentence headlines about the Free Cities world in your office. Don't worry, it can be hidden.

What the blue images with all the boxes are

Here, have an ugly MS Paint explanation of what the blue pictures mean. I really should have explained this in the introduction.

I've been posting blue images with a lot of little white boxes with progress updates. These are screenshots of Twine 2's game design interface. They show the broad structure of the game. Just like posting updates gives me a sense of progress, you can see the progress of the game as the passages in the image shift and multiply.

If I were using Twine 2 more or less as intended the structure would look far more linear, with long trees of passages connected by arrows. Instead, since this is a turn-based sandbox game, it doesn't look linear. And, since I've thrown Twine 2's standard link structure out the window (with great force), the normal passage-to-passage arrows are mostly absent.

Thursday, August 27, 2015

Progress, August 27

Updates for today:
  • Random event for slaves who are assigned to a job that allows them to indulge a cum fetish.
  • Added code to permit generation of slaves based on other slaves: for example, if the PC owns a slave of sufficient age it is now possible for the game to create an adult daughter for her. Of course, this requires saving the mother's original stats so the daughter doesn't show up with all the mods the PC has applied since the PC acquired her.
  • Random event in which a devoted older slave discovers that an adult daughter of hers is being sold and begs the PC to purchase her.
  • Similar event, but for sisters.
  • Random event between well-trained twins. Not the most inventive random event I've written but I feel like an erotic game with twins in it needs at least one completely standard twin scene.
Running into an unfamiliar writing obstacle. In the past I've been able to power through fetishes that don't appeal to me personally by coming up with a single good scene and moving on. That doesn't work so well when the goal is 100 random scenes. I try to be inventive when creating erotic fiction - no "slap slap, please Master harder, slap slap" here - but inventiveness tends to follow author appeal. I suppose I'll trawl the /d/ archive for threads on the fetishes I have trouble with and work from there. Images can be quite inspirational.

Up to 58 random scenes and 80,000 words.

Wednesday, August 26, 2015

Progress, August 26

Not many updates for today, just some random event work:
  • Added code for twin relationships.
  • Random event where a very special pair of trained twins is offered to the PC at a high price.
  • Added code for non-twin sibling relationships.
  • Random event in which a girl tries to sell her younger, sissy sister into slavery: the PC can decline, accept or enslave them both.
  • Random event in which a PC who owns both of the slaves from the previous event can offer the younger sister revenge on her older sister. Sexual revenge, naturally.
  • Random event for heavily pierced slaves.
We'll see how playtests go, but if it turns out to be too frustrating for players who want to get at specific relationship content to wait for the appropriate random events, I might add a special, restricted slave market that sells that kind of merchandise. I like that stuff being special though.

Random events take a disproportionately long time to write because although they usually appear to be 200-300 words from the player's perspective, there's a lot more behind the scenes. There are at least 2 choices presented for each, and I usually try for 3. Many sentences have alternate versions, too: any time a slave has dialog, there are several alternate versions for slaves whose speech is different or even absent. When writing simple fiction prose I can sometimes beat 1000 words an hour so this process feels slow as hell.

Tuesday, August 25, 2015

Progress, August 25

Updates for today:
  • Created code capable of remembering mother-daughter relationships between slaves. Indecently pleased with what I came up with: the game already kept a slave's birth name permanently, even if the PC gives her a slave name. If you acquire a mother-daughter pair, their birth names will be something like "Maria" and "Maria's daughter." The code compares birth names to match them up again when necessary.
  • One random event for this.
  • Hormones! Since slaves with working female reproductive organs have contraceptive options, slaves without them had an empty spot in the UI. Long term hormone therapy can have all sorts of medically reasonable side effects.
  • One random event for this.
  • Random event in which a head girl assigned to work as a whore will recruit a free working girl to be one of the PC's slaves.
  • Starting to review the passages I coded at the beginning of this process. My coding has improved over these past couple of weeks, so I'm pruning unnecessary duplication, improving poorly written for loops, etc. This is becoming important since a long game can easily maintain over 1000 variables, mostly in huge arrays.
Practically, players will probably only ever see part of the random events because so many are based on specific kinks or gameplay choices. That means the game needs enough that the average player won't be repeating them constantly. There are 44 in game, and I feel like at least that many again are necessary before it feels properly playable. 100 is a good round number and I think I'll use it as a working goal for random events before public release.

Monday, August 24, 2015

Progress, August 24

Updates for today:
  • Random events in which high-quality head girls will recruit slaves for the PC. So far there are two: head girls who are pretty and graceful can convince girls to sign up, and head girls with dicks can do the same for young people with similar appendages.
  • Pregnancy! Slaves who have natural female bits now use contraceptives by default, but can be ordered to stop doing so. Chances to get pregnant depend on what kind of sex the slave has, and how often. Pregnancy has a whole bunch of logically-sound physical effects. I become impatient with h-games that suggest that surgically constructed female parts can support pregnancy; in this game, if it was ever anything but female, it can't get pregnant.
  • Wrote a random event for heavily pregnant slaves.
  • Entertainment skill! For now this is a catch-all stat for things like flirting, stripping, dancing, et cetera. It modifies beauty, and can be taught or learned on the job. I'll try to work it into random events: slaves with zero entertainment skill should be good for occasional comedy.
  • Wrote a random event for high entertainment skill slaves that presents the PC with a Friday night dilemma: take her clubbing, attend a milonga, or dance alone under the moonlight?
  • Wrote several random events in which a slave with a fetish sparks another slave's interest in the same thing. Should eventually have one for every fetish.

Colored text to flag stat changes

This is an end-of-turn report screenshot from yesterday.

I dislike h-games that require the player to try to figure out what descriptions mean in terms of stats. To clear things up I've been coloring short phrases whenever the described situation effects a slave's stats: for example, red text notifies the player that a slave's health has decreased.

Usually this is fine: a paragraph will typically have only a single colored phrase. However, this end of turn screen includes a maelstrom of stat effects and has gotten really garish. I'm reluctant to break flow with explicit "+1 health" stuff, so for now I've reluctantly left it as is.

Drop me a comment if you have thoughts on this.

Procedurally generated slaves

I may have been a little misleading earlier when I mentioned the hardcoded slaves from the thread on /d/. These are actually just a supplement to the main source of slaves in the game, which is code capable of spitting out a near-infinite cornucopia of slaves.

I try to avoid calling it a random slave generator because it isn't random at all. At present a slave is described by 61 different stats, from birth name to nipples to oral skill. The code generates them one after the other, and many of them modify each other. For example, the more weight a slave carries to start with, the larger her breasts are likely to be. A slave's age has a chance to alter the starting point of 10+ other stats. There's even a hidden race stat that helps determine starting skin and hair color: that wasn't originally the case, but I got tired of every other slave being generated with dark skin and blonde hair!

In-game, there are currently four slave markets, and three of them use the procedural slave generator. The generator runs and then the market's code modifies the result to give the slave that market's particular flavor. For example, one of the markets specializes in lower-cost merchandise, so its slaves receive reductions in obedience, health, and other stats.

Finally, there are currently nine random events that can result in the PC acquiring a new slave. These also use the generator, but have heavier-than-usual stat changes to fit the events. For example, one random event involves enslaving a business rival; the resultant slave will tend to be older but more experienced and attractive than usual.

There's even two events that result in the PC acquiring two slaves: a mother daughter pair. Those were a lot of fun to code. The generator produces the mother first, stores her, and then modifies her stats heavily to produce the daughter.

Sunday, August 23, 2015

Progress, August 23

Updates for today:
  • Keyboard shortcuts! Actually just keyboard shortcut for now: the enter key advances the game. Added the Mousetrap script and got it working, which is right at the edge of my pathetic coding abilities.
  • Head girls! Once appointed head girl, a slave will use her own judgment to help the PC whenever she has a spare moment. At present, she'll help the PC break disobedient slaves, nurse unhealthy slaves, and teach slaves skills that she knows better than they do. There are a lot of qualities in a head girl that can improve her chances of success at various endeavors; for example, head girls who love oral have a better chance of teaching oral skills.
  • Added code to the end of turn report that reports overall changes to a slave's obedience. The game already reported all mental changes, but it could be confusing as to what the combined effect was.
  • Chastity belts! Virgin slaves now command a significant cost premium, so it can be a good financial decision to apply them to slaves the PC intends to resell. This picture can be blamed for making me want to add them; the rest of the artist's stuff is also great.
  • Coded all sexual training to prevent vanilla sex skills from being improved for slaves who are wearing chastity belts... or slaves who lack vaginas.
  • Since adding mute and amputee content, slowly reviewing old passages to add new, alternative phrases in situations that have the slave talking or walking.

Saturday, August 22, 2015

Progress, August 22

My posts on /d/ about ideas for this were the first progress updates I'd ever done, about anything. It's great; posting progress makes me want to make more progress, which makes me want to post progress. So, updates for today:
  • Added a new category of mental states for negative quirks the player can work to remove. These can be 'cured' in drastic ways; for example, a slave with a penchant for sharp remarks can be corrected traditionally, or can be muted forever with surgery.
  • Wrote a random event where a bitchy slave insults an older female business partner of the PC.
  • Wrote a random event for arrogant, unbroken slaves. "Oddly, she seems to maintain the idea that enslaving other people is somehow inappropriate, and that having done so has lowered you morally."
  • Added the mental state nymphomaniac; most difficult mental state to cause, so far.
  • Added a surgical option for slaves who already have wide areolae to be surgically given heart-shaped areolae
  • Wrote a random event for devoted slaves with very large breasts and heart-shaped areolae.
  • Wrote a random event for slaves that satisfy "girlish figure" criteria and are in the middle of the obedience scale.
  • Improved "girlish figure" criteria; muscular or overweight slaves no longer qualify.
  • Wrote a random event for devoted slaves with surgically narrowed waists.
  • Rebalanced beauty, overall sexual skill calculations, and reputation decay. Maintaining the highest possible reputation level now practically requires several outstanding slaves dedicated to maintaining it.

Slave submissions

This post is closed for submissions as of November 5. Please submit slaves for inclusion here using the new upload function.

As I mentioned in the introductory post, the game uses mostly randomly generated slaves, but does include a database of unique slaves based on descriptions of slave girls submitted in a thread on /d/, now archived hereI found it was great fun to add others' ideas of a slave girl to the game, and to my surprise posters on /d/ seemed to like providing them. There are 100+ now statted in game. That's enough, but I'd be happy to add any posted in the comments here.

If you post one, here's what I need:
What's her slave name?
How obedient is she?
What's her general appearance? An image is helpful if you have one.
Does she have any surgical alterations, like implants?
Does she have any tattoos, piercings, or other cosmetic modifications?
How sexually experienced is she?
...and, of course, anything else significant.

Note that the setting is near-future, so consider yourself limited by what modern surgery can do. Heights over 6'6", extra limbs, and elves are all outside the scope of the game. I can't promise perfect translation to the game, because I only have stats for so much, but I do my best and will add stats if I really like an idea. Naturally, by posting you surrender all rights, etc. etc. to the idea posted. Legal rubbish.

Where this is now

As of now I've been working on this as much as I can for around three weeks. Writing progress is fast, since this isn't the first time I've turned a hand to erotic fiction, but coding progress is glacial because I'm a total novice.

I will get the question I got a lot of over at /d/ out of the way: this is still a long way from completion. As promised elsewhere, I will post it on /d/ (and here) when it reaches something like alpha status.

The game's heart is prose that adapts to slaves' attributes. For example, the game will describe a slave the player is examining in 100-200 words, but this short description is pulled from descriptions totaling over 3,000 words. The goal is that every scene in the game will read differently if you experience it with different slaves.

Right now, according to Twine 2's story statistics function, Free City clocks in at 74,000 words, though of course many are repetitions with variations for different slave attributes. Individual slaves have a whole cloud of attributes from age to mental state to sexual experience to hair color and style to tattoos and piercings, and more, all of which affect both the text the player sees and gameplay. I tried to calculate how many different slaves the random slave generator could create, and stopped when it became clear the answer would be trillions.

Right now, the game functions well enough that I can playtest it myself. However, there's a great deal of work to do, in three main areas:

  • Adding content. I'm trying to limit any further additions to customization of slaves, because every added customization has to be called out in the text the player sees. The content I'm working on now is the game's bread and butter: scenes between the player and their slaves that appear based on the slaves' stats, that present the player a short list of options to guide the scene and further impact the slave.
  • Squashing bugs. My total lack of coding experience means this will take a while. In addition to the usual fatal bugs, the way the game's prose gets spat out means that I'm constantly fixing issues where slaves appear in situations their attributes don't support.
  • UI improvement. Twine is clearly intended more for choose your own adventure stuff than a management game, so it's going to be clunky no matter what I do, but work continues. My biggest focus is ensuring that 90% of basic actions can be accomplished from a sidebar to minimize mouse movement.

What this is and where it started

How this started
This is a bare-bones author blog for a simple Twine 2 text-based erotic slave game, Free City. I've been reading and writing erotic fiction for a long while, and recently discovered erotic games; I liked several of them enough to check out their surprisingly welcoming and helpful modding communities. Around the game threads over at the appropriate boards on the *chans, I kept seeing great ideas for games, invariably followed by "but I don't know how to code."

Neither do I, but I'm learning. This is the first programming-related thing I have ever done, so it's a hell of a learning experience; in late July I had no idea what a for loop was. My original project was a post-apocalyptic slave and warband management game inspired by a recent movie, but that was way out of my reach (and probably Twine's, too). So, I've backed off to a simple erotic slave game.

What this is
This is a basic text-only erotic game in Twine 2, specifically in the Sugarcube story format. It's a procedural narrative generator; rather than erotic games you may have played with set characters and plot, it's an open world in which the player, a wealthy slaveowner, can indulge themselves. I've played a lot of Jack o Nine Tails, which I wholeheartedly recommend, and it's probably closest to that: here's a slave market and some money, go have fun. This is stretching the capabilities of Twine 2 in UI terms, so keeping it usable is an ongoing process.

The excuse plot of the game is that it's twenty minutes into the future, and the beginnings of environmental and societal collapse have led some wealthy people to carve out little extranational enclaves called Free Cities. Think modern city states, but following an extreme kind of anarcho-capitalism. Don't worry, the mild futurism gets the hell out of the way after two screens and lets the player get on with the fun.

The list of kinks included is way too long to give here, but includes a lot of extreme stuff like involuntary surgical alteration, sexual slavery, and most other things associated with slavery fantasies. I am doing my best to segregate content out so that the player won't be blindsided by things they didn't sign up for; notably, there is content for slaves with dicks, but this can be turned off at game start.

Where it started
This all came out of my head, of course, but it's been helped along generously on 4chan's /d/ board. To motivate myself and add a little spice to the game, I had the idea of asking /d/ to describe basic slaves to add to the game. The game is capable of producing a near-infinite number of randomly generated slaves, but the ones /d/ created are instead hard coded and unique.

I expected polite interest and a handful of slaves; instead I got a thread that hit bump limit and more than 100 slave descriptions, the vast majority of which are now in game as best I can stat them. I definitely feel my coding skills aren't up to that interest, but I'm working on that as I go. If you're interested the thread where that happened, it's over on the loveisover archive, here.

Of course, many posts described slave ideas that the game can't do justice to. This proved extremely helpful because it showed me areas where I could add content. I will absolutely add more unique slaves if people feel like generously sharing their ideas with me. Feel free to do that in the comments here.