Showing posts with label Relam of Darkness. Show all posts
Showing posts with label Relam of Darkness. Show all posts

Monday, December 21, 2020

Christmas Edition

I think most people would agree that this has been a pretty messed up year for everyone involved, myself included. My optimistic estimates on how long it would take to get things done in the summer time were grossly inaccurate, as they didn't take into account the unknown variables of my health and shifting priorities.

As such, I hate to say that I don't have anything to release at the moment!

That isn't to say I haven't been working on things, I just haven't been working on my game, specifically.

Just a quick run down of what I've been up to lately:

  1. Edited 500 pages of my friend's novels (that's been on the backlog for awhile).
  2. Edited 27,000 words of my own fantasy novel (that's also been on the backlog for a long time).
  3. Written 7,000 more words for said novel.
  4. Working on the Bad End: 'Your Offspring's Milk.' This ending will occur when you're too disobedient and you've had a child at The Farm. They've been forced to bind you in latex and leather to keep you from hurting yourself and others. They use your own daughter (now grownup) to control you and make you learn to love your slavery.
So it's not all bad. I am still working on the game, on and off. But it does mean that the likelihood of getting something playable any time soon is nil.

As is usual, what you can produce never matches your imagination.

The semi-good news is that I've set a goal of 500 words per day on my novel, which means it should be done in a few months and I'll free up to do more work on this, or perhaps I might spend some time working on "The Rubber Order," another story that's been languishing in the meantime.

That one I think may eventually go to Amazon, because it's a bit atypical of my usual output - I don't usually write male dom, but it fits this particular story better.

I've also had ideas surrounding a fantasy story called "Queen of Chains: Forged Anew." I have a mostly complete outline for this, though I don't have the ending nailed down yet. This particular story is an outgrowth of ideas I've had while putting together Realm of Darkness. It will probably end up being something I release on MCStories.

These ideas are exciting, but I can't say for sure if or when they'll ever come to fruition! I will be sure to share when I have more information!

Merry Christmas everyone, and here's hoping next year will be better for everyone!

Twine Tip

Before I leave you, I thought I'd mention a solution to a problem that would have saved me a lot of time, had I known it before I started working with Twine.

I'm not sure if this is sugarcube specific, but it turns out you can use this syntax to specify a different color for your text:

@@color:COLORNAME;<Your Text Here>@@

This works like this:

@@color:#a342bd;"I love you so much," whispers a tender voice.@@

You can use an HTML color code, as above, or even the color name, like 'slategray'.

There's no need to add spans, tags, or special javascript. It just works.

Unfortunately, I had to spend forever removing my previous formatting to use this instead, because it doesn't require any escaping of the text and is therefore superior. I'm not sure if I've fixed it everywhere yet...

Saturday, August 15, 2020

Realm of Darkness:

Work continues on the Farm dungeon. By my count, I have around 17 bad ends in the entire game completed, and I'm working on number 18. 

I'm trying to get at least one bad end done per animal variation, both male and female cows, horses, and pigs. I'm about half done with that... because I'm a little heavy on adding female cow bad endings as I enjoy writing them more.

Once the bad ends are done, the trick will be adding in sufficient events and connective tissue to actually get to these bad ends.

To that end, I've been working on an encounter system which will allow me to dynamically select events based on probability weights.

This is a common programming problem when doing such things as randomly selecting brokers to process data or another activity which requires selecting a particular value more often than other values, randomly.

Here's the code I've put together based on research I've done:

window.calculateEncounter = function(possibleEncounters){
	var i = 0;
	var j = 0;
	var totalWeight = 0;
	var keys = Object.keys(possibleEncounters);

	for (; i < keys.length; i++) {
	  totalWeight += possibleEncounters[keys[i]].weight;
	}

	var randomWeightNumber = Math.floor(Math.random() * totalWeight)
	var selectedKey = "";

	for (; j < keys.length; j++) {
	  if(randomWeightNumber < possibleEncounters[keys[j]].weight){
		selectedKey = keys[j];
		break;
	  }

	  randomWeightNumber = randomWeightNumber - possibleEncounters[keys[j]].weight;
	}

	return selectedKey;
}

window.calculateEncounterWithInclude = function(possibleEncounters){
	var selectedKey = calculateEncounter(possibleEncounters);

	return "<<include \"" + selectedKey + "\">>";	
}

window.calculateEncounterWithLink = function(optionNumber, optionName, linkText, possibleEncounters){
	var selectedKey = calculateEncounter(possibleEncounters);
	
	if(linkText){
		return "<span id=\"" + optionName + "Act\"><<link \"(" + optionNumber + ") " + linkText + "\" \"" + selectedKey + "\">><</link>></span>";			
	}else{
		return "<span id=\"" + optionName + "Act\"><<link \"(" + optionNumber + ") " + selectedKey + "\" \"" + selectedKey + "\">><</link>></span>";		
	}
}

The possibleEncounters input looks like the below object, specified in the 'StoryInit' passage so it will be run at the start of the game. A setup variable is used because these are static variables that do not need to be altered or tracked during the game.

<<set setup.testEncounters to {
  "Test Encounter A": {
    weight: 10
  },
  "Test Encounter B": {
    weight: 10
  },
  "Test Encounter C": {
    weight: 100
  },
}>>

The object consists of a passage name in the Twine game to select, and the 'weight' that passage is assigned.

The 'weight' is relative, which means in this case that 'Test Encounter C' would be selected as the passage to use ten times more often than the other passages.

The 'calculateEncounter' method iterates through the provided objects, getting the total weight of all encounters. Then, it randomly chooses a number between zero and the total weight. If the random number chosen is below the weight of the event being iterated, that event is selected. Otherwise, the weight of the event is subtracted from the random number, and the next event is inspected. This occurs until an event is chosen.

'calculateEncounterWithInclude' generates an include statement to be inserted into a Twine story passage. The include statement imports the contents of one passage into another passage.

'calculateEncounterWithLink' allows you to specify a link to the passage that has been chosen randomly. 'optionNumber' and 'optionName' are used for specifying a keyboard shortcut. 'linkText' is optional, but allows you to specify a name for the link different than the name of the destination passage.

Combined together, using this code in a passage would look like this:

This would be your generic location passage that needs a random encounter.

Then, you would have a randomly selected passage, weighted based on what is configured:

<<print calculateEncounterWithInclude(setup.testEncounters)>>

<<print calculateEncounterWithLink(1, "one", "This encounter is truly random.", setup.testEncounters)>>

The first print statement would be replaced with the randomly selected passage contents, while the second print statement would turn into a link. When this passage is visited, the code will execute and randomly choose an encounter based on the specified weight.

The code above would live in the 'Encounter Tester' passage, and when that passage is visited, one of the test encounter passages would be chosen to be included in that passage.

This is a pretty neat way to allow me to write standalone encounters and include them in the adventure pages. I will be using this logic pretty much everywhere in the story where random encounters occur.

In the Farm, there is a day loop, which means at the end of an encounter the game will need to increment the time and put you back in the right spot. I'll talk about my system for doing this another time. One major topic per post, I think!

This illustrates why it takes so much time to make a proper interactive game - there is a lot of logic under the covers like this that needs to be implemented to even make the story work - especially if you're trying to do more than a simple 'choose your own adventure' story!

With any luck, the next time I post, I'll be able to say that I have all of the main bad ends written! (And maybe even some of the encounters, too!)


Monday, August 3, 2020

Realm of Darkness - Starting the Farm Edition

Welcome back to my semi-irregular updates. Today I'd like to discuss the so-called 'dungeon' I'm working on, called 'The Farm.'

For the first pass, I'm planning on allowing you to choose which type of animal you're in danger of being converted into - a humanoid cow, horse, or pig - futa or female.

A large part of the farm will circle around the main gameplay loop of being taken care of by the farmhands and getting milked. The longer you given in to their demands, the more animal-like you'll become. If your intelligence drops too low, you're going to experience a bad end.

There will be other ways to experience a bad end too, of course, some of them more challenging and difficult to find than others. Today I wrote a bad end which has very similar themes to Tabico's 'Herd Instinct,' which fans of that work should enjoy.

There are several NPCs you'll meet at the farm, and whether you help them (or not) will affect their fates and yours. You may even be able to recruit one or two of them to escape and live with you outside the Farm, if you're careful.

Depending on how much the farm staff trust you, you'll be more or less free to roam The Farm. The more you defy them, the more restrained you'll be. For example, if you try to bite them, you'll be muzzled with a bit gag or another suitable implement. These 'debuffs' will make it more difficult for you to perform certain actions at The Farm and to find a way to escape.

Currently, I am working on the introductory area for The Farm, which by itself is somewhat complicated since I need to introduce all the characters and provide choices that allow you to figure out which animal you wish to become (see below picture for a sample of that game flow). Ideally all paths would be just as attractive, but that's probably not realistic, since I'm the biggest fan of the female bovine paths. Still, I'll do my best with the other paths as well.


In addition to what I'm writing, I've also fleshed out various areas you'll be able to visit while trapped on The Farm (subject to change). See a sample below:


There needs to be a way to escape, of course, but it shouldn't be too easy. And I'm planning for there to be more than one way to 'win' your way out of The Farm. Some of them will be more morally gray than others.

My first goal is to get the main gameplay loop working. Then, I will be working on adding sufficient random events to make the game seem fresh as well as unlockable events based on the stats you have. After that, I'll focus on the adventure mechanics in the farm as well as implementing various ways and means to escape.

Big plans, I know. I'm turning into Peter Molyneux here with the promises. We'll see how much is actually reasonable to complete, since I don't even have a way currently of getting your main character from the central town to The Farm without using the debug menu.

I'm thinking tentatively version one of the game should probably include a fleshed out central town as well as a completely playable Farm dungeon. If I get that far, I think that's probably a sufficient vertical slice to show off what I have and get some feedback. It still seems reasonable to get there by the end of the year, but things could always change... I'll keep ya'll up to date here.

That's a wrap for now. Here's the count of bad ends currently in the game: 13. Many more to come - especially at The Farm, which has 15 more already stubbed out! Not to mention the town, which will definitely need quite a few as well!

Sunday, July 19, 2020

Realm of Darkness - Refactoring Edition

Hello! It's time again for an infrequent update about the game I've been working on.

This week has been pretty rough because I've needed to completely rework how the UI is going to operate. I wasn't at all satisfied with where it was at, and I'm much happier with it now.

That of course means there hasn't been a lot of content implemented, but the content that is there is looking much better.

I've recently played 'Degrees of Lewdity' and recognized superior design when I saw it. If you want to check out that game, it's located here: https://vrelnir.blogspot.com/

There are some fun and interesting transformations in that game, but in my mind they suffer because they're not true physical transformations. And while you can turn yourself into a cow and get milked, there's no real consequence or bad end for doing so. I would much rather have a hard end condition where you can indeed fail, and fail badly - because that's where the fun writing is!

Still, it's worth a look if you have some spare time.

Here are some relevant examples of UI design ideas I've borrowed from that game:


'Degrees of Lewdity' allows you to select options using keyboard shortcuts. This makes it a ton easier to navigate (and to debug). Using code from the below link, I've implemented this in all existing passages of the game (that took quite a while, the game is starting to grow).

https://www.reddit.com/r/twinegames/comments/5t73zc/keyboard_driven_twining_tutorial/

Better to get that done now rather than later, I suppose.


I have changed the sidebar to display your current state. This used to be in a menu window, but I realized part of the fun is seeing your body slowly succumb to the strange transformations of this world you're in, so now this sidebar dynamically updates during your adventures.

Adventure stats are TBD and will go in the side bar when I've figured out what they should be. While you are trapped in a dungeon, there will be different stats that apply. For example, you might have to deal with an 'intelligence' and 'obedience' stat while trapped in 'The Farm,' which will affect possible bad ends.


The side bar menu items now open in a window instead of taking over the passage display. This allows me to show inventory and other stats while keeping you in the same context of wherever you are in the story, which simplifies story flow tremendously. The inventory screen is not finalized - lots more changes are likely to come!


I have added an achievements menu which shows you what you've managed to achieve in the game so far. This state will persist across runs of the game on the same browser (using the local browser store). This should act as a guide to let you know what content you've seen, and what you're missing. Yes, I will be adding some bad ends that will be quite difficult to find. A bit of a treasure hunt, as it were.

With these changes in place, I'm finally ready to start working on some new content. Yesterday I spent time brainstorming three major dungeons:

  1. The Farm - If you are unlucky enough to find yourself here, you'll slowly become more like an animal. The current possible paths will include male and female cows, horses (ponygirls, yes!), and pigs. I'm open for other ideas, but I need to keep the list short for now so that I can get something implemented.
  2. The Cathedral of Domaya - If you join the church, you will partake in Her milk and help her to bring others into communion with her. The church is harboring darker secrets which you will get a chance to explore.
  3. The Research Lab - Run by a literal computer, the lab is building a Hive of Drones to take over World's end. If you're not careful, you will end up a mindless Drone. The Hive is exploring ways to generate high end milk from its Drones. There might be a way to incur dissension in the ranks if you play your cards right.
Yes, there's lots of milking that's going to happen, and competition between the different dungeons. I wasn't initially planning that, but it's going to work out that way. It sounds like fun to me!

I have a few other dungeons on my list, but they're not fleshed out yet:
  • The Bee Hive
  • Dominatrix Dungeon
Eventually I'd like to to tie this all together by making a 'good' end for the story... and if you succeed in the dungeons, you ought to be able to unlock a management game to make good your gains. And I'd like to implement a simple sexual fighting system. And transformation items. And flesh out the town. And program in paths for the different hypnotic outcomes you will experience.

As you can see, there's plenty to work on. I'm hoping to be able to put out an initial version of the game by the end of this year, but no promises!

Saturday, July 4, 2020

Realm of Darkness - 4th of July Edition

It's been a few months, and my health hasn't really improved. Fortunately, lockdowns are lifting and I'll be able to see doctors again soon. In the meantime, I figured I would give an update on the Interactive Fiction story I've been working on, currently titled 'Realm of Darkness.'

The backstory is that you are a magical girl, stolen from Earth and brainwashed by demons in a realm called 'World's End.' Their goal is to send you back to Earth to capture the other magical girls and make them permanent slaves of the demons.

Written in second person, you will be attempting to escape this extra-dimensional world without being transformed into a strange new creature. You probably won't be able to avoid being bred by the inhabitants, or changed in strange ways - but will you end up leaving a servant of the demons, or your own person? You decide!

Pretty much anything is going to go in this world. You start out a woman, but can choose to become a futa, if you wish (or, depending on the bad end, if you don't wish). Since there's going to be lots of humanoid critters in this place, there's inevitably going to be furry type sex, though it should be obvious and avoidable depending upon what you choose to do. This is pretty much carte blanche for my strange and bizarre imagination to run wild without any restrictions.

There will definitely be lots of latex and milking, of course, as well as all kinds of bizarre and unfortunate transformations.

I do plan on posting this on tfgames when I have enough content, but that will be quite some time, I'm afraid. I need to have enough that I don't feel like it's too incomplete to post. Ideally it would have a nice vertical slice with good bones I can add flesh onto.

That said, let's talk about the battle system.

Your goal is to beat the enemy by one of three methods - draining their HP to 0, raising their arousal to 100, or dropping their willpower to 0. The type of attack you choose determines which stat you are targeting. In the image below, it's just your bare hands, which do HP damage.

Each attack costs a certain amount of stamina to perform, which limits how often you can use your attacks, and the amount of damage you do is determined by the attack.




At the same time you are attacking, the enemy is also attacking you.

The status box tells you which body parts the enemy is attacking. They can be attacking up to three different body parts with a ~33% chance to hit each part, but it's random which body parts are selected. The same body part can be selected multiple times, which means there is a possibility that the enemy will select the same body part three times, giving them a 100% chance to attack that body part!

This can be useful, as every round you are given the opportunity to block an attack on one body part.

When the enemy hits a body part, it becomes bound. If enough body parts are bound by the enemy, you lose, so it's in your best interest to block as many attacks as possible.

As the battle goes on, there are fewer free body parts, and therefore less body parts for the enemy to choose. This makes it easier to block attacks, which is useful when you're trying to remove the last 10 HP from that stubborn demon!




I have plenty of bad end ideas. So far, I've written only about ~11 of them, but there will be plenty more to come.

Here's a sample of some of the things I'm currently thinking of. These are just some of the ones I haven't written yet... there's plenty of others that I'm not showing. :)



I don't have a time frame for release. It's pretty much going to be a 'when it's ready' situation. Rough guess is at least a few more months before I have anything of consequence. I'll try to periodically update here when I find the motivation.

In the meantime, I have a bad end involving very long tongues to write.

I hope you all have an excellent fourth!