Well, we are well past Monday which is usually when I “finish” a sprint of working. However, I was a bit obsessed plus it was the holidays so I kept going in hopes of having a fully functioning system up and running.

Yeah, right. I'm not even remotely as fast of a developer as the guy who wrote Kingdom of Loathing in a weekend. I never will be, but I always viewed this game as a long term project and I'd rather do it well instead of throwing a few naughty scenes out.

However, we are getting to the end of the month, so I need to get to a stopping point, report what I'm doing, and then finish up all the tasks before working on the next writing project as selected by my patrons.

Note: It probably will be a sequel to Economies of Scale (Sweet Ending). Oh, and thank you so much for so many feedback survey results.

Goals

So the goals for this sprint was to get the game to point where someone could log in and start the game. I had gotten some frustration trying to use an existing third-party library but hit some snags because I didn't want it to allow Google or Facebook logins but apparently that library insisted on that. Obvious, I'm writing a porn game, so letting Big Tech know that you like porn is not the best thing in the world; it's none of their fucking business.

Note: I'm never going to write analytics into this thing, every image and font is going to be self-hosted, and there should be nothing that “phones home” to anyone besides the server. I also have no intent in even keeping access logs for the website.

I finally gave up at the end of the previous iteration and decided to roll my own. Life looked good and things were promising.

...then I tried to get it on my website. There could be a lot of technical details to explain, but short answer is that I'm planning on using Docker to deploy this thing and my original implementation in .NET proved to be difficult to create Docker images.

So I rewrote the entire thing in Typescript and React. That set me back in a different way, but it seems to have worked and I've gotten the basic flow of logging into the account, creating gaming, and logging out.

Log In Screen Create Game Selection Create Game Screen Game Selection Screen

Account registration isn't done though, nor is on a useful database implementation. These are two of the major tasks that have to get done before I can get it properly hosted (and let people in) but I have a solid path ahead of me that I feel is doable.

Game

The game itself is at the Choose Your Own Adventure (CYOA) level of ability. This means it can be used to write something that require you to remember little details or use the honor system.

If you have a sword and want to use it, go to page 23.
If you rescued the princess, go to page 742.
Otherwise, go to page 219.

This is a first milestone but not really where I want to go with the game. I'm aiming more of a story like Fallen London (FL) with Kingdom of Loathing (KOL) thrown in. Well, plus Corruption of Champions (COC) because that game always turns me on.

Play Game Screen

The next step is to teach the game how to handle those little details for you, so it will know if you rescued the princess or discovered the secret door. That part should be trivial, I just ran out of time.

Of course, that leads into one of the questions: should unavailable options be shown but disabled or hidden? Fallen London does the first one, giving you little teasers about what can be done. On the other hand, when it comes to Bartle's Taxonomy of Player Types, I'm an Explorer and an Achiever. I'm the type of gamer who wanders into random corners, pokes every button, and gets a thrill when I stumble into something amazing.

To start, choices that require a plot, item, or a condition are going to be hidden from the player. If you don't have the glass dildo, you will never know the prince wants it up his ass. If I do it right, though, there will be hints so eventually you'll find out that little fact.

Now, I do get relatively bored with games when they don't change. FL suffers from this more than the others because the choices are always shown and rarely change (except for the Airs of London-related changes). KOL and COC hit that button for me because when you go to explore an area, you don't know what you are going to stumble into.

To handle this, there will be places where the options will be completely visible (think the middle of the village square) while others are going to be random (think wandering in the middle of the woods). For the random areas, we're only going to show four of the options but only two of them are going to be easy to choose. The other two will cost an additional Fate Point (FP) to select.

Which leads nicely into the last major plan. I'm going to use Fate as the game mechanics. Yeah, I could write my own but I'd rather use someone's work and I think it's a pretty solid system that fits nicely with my intents for Perverted Lands. (It also has a good license I don't have to pay for.)

When it comes to choices, Fate gives every player 3 FP at the beginning of a session. Those FP can be used to make alterations to the game in progress (those optional choices). A session will probably be just four hours of time.

To handle my need to survive in this capitalistic system, patrons will get a bonus to Fate Points that applies to all of their games (let's call them Destiny Points or DP). DP won't recovery automatically but you get a full amount with every new game as one-use pool of Fate Points. So if you have 12 DP, they will become 12 FP in your game. When you start a new game, you'll get another 12 FP and so on.

Needless to say, reaching an ending will be encouraged but that's a topic for another sprint.

Tasks

Below is my current task list for the game. Some of them may be cryptic but I'm hoping over time, these will become more plot and story related but we're still in the initial crunchy phase of the game's development.

Meta Development

  • Figure out minimum functionality for alpha ($5/month patrons)
  • Figure out minimum functionality for beta ($1/month patrons)

On-Boarding

  • Implement account registration
  • Add warning banner for alpha data wiping

Plots

  • Daughter of the Whore introduction
    • Make gender optional (requires item and item slots)
  • Possible Sheriff's child
  • Possible Butcher's child
  • The Sheriff visit for the whore's child
  • Monster at the bottom of the well
  • Goblins in the surrounding woods
  • Bullying plot
    • Barn hanging

Display

  • Update the “play card”
    • Images?
      • Might be too expensive until later
    • Region/Area identification
      • Village of Sinep

Game Mechanics

  • Items
    • Item slots (chest, groin)
    • Item storage (floor, bag)
    • Figure out clothing
      • “You be nekkid!” detection
      • Femme/Butch scales
      • Changing clothes takes time
  • Time of Day process
    • Calendar/clock display on screen
  • Fate Skills
    • Add Fate CC banner
    • Skill pyramid
    • Child of the whore initial skills
    • Possible Sheriff's child initial skills
    • Possible Butcher's child initial skills
    • Final skill selection request/react
  • Combat (Requires Items + Skills)
  • Fate Point (FP) expenditures
    • Refreshes (requires Session Breaks)
    • Destiny Points ($1-10 -> 1 DP) at account level
    • DP add to FP for every game
    • Randomized Lists
      • Semi-sorted list
      • Mark first three as free
      • Rest require 1 FP to select
  • Fate Stresses and Consequences
    • https://fate-srd.com/fate-core/stress-consequences
    • Players have physical and mental stress tracks
      • Automatically select lowest stress box needed
    • Consequences take longer to recover
      • The “endings” come from not being able to absorb a consequence
    • Show stress tracks and consequences navigation bar
  • Breaks
    • Scene Breaks
    • Session Breaks (4 hours?)
  • Scene Filters
    • Be able to choose to have incest, sex, rape, furry scenes
    • Set at the account level, consumed at game level
    • “You'd like it done to you” separate from “You want to do it to others”

Infrastructure

  • Implement a more robust NoSQL document store
    • Make the document store swappable via typedi
  • Add Redis server to handle “loaded” players
  • Set up Docker compose
    • Make sure the document store has a dedicated volume
  • Hosting
    • Move DNS records to point to VPS
    • Set up Lets Encrypt SSL
  • Set up CI server to automatically deploy to VPS