December Update

Spankers, Spankees, and Switches of All Ages (18 and above),

Sorry about missing the November update. I was preoccupied.

Anyway, it turns out that when you do a massive rewrite of your system, you end up with a fair number of bugs. So my beta testers have spent the past month dutifully documenting the many, many, _many_ bugs they’ve found in the latest update, and I’ve been squashing them.

It’s been like 5 whole days since I sent my beta testers the latest version, and they haven’t sent back any bugs (which is a record I think). So hopefully we’ll have the full first episode ready for your avid consumption. I’m honestly a little bit disappointed with it. I think I spend too much time catering to my thong-bikini-beach-spanking fetish and not enough to my thong-superheroine-spanking-fetish. So the superheroing part is a little bit more railroaded than I would have liked.

But I’m kind of sick of this episode, and ready to get the hell on with it, so whatever.

Anyway, now I’m going to talk about my plans for the rest of the game. Here were my original plans:

The first episode would be a little bit unique in that it would be a CYOA tree of choices in which we introduce the majority of the main cast and try to tell a superhero origin story that has less “normal person is normal” and more “superhero-just-punched-that-guy-through-a-wall-holy-fuck-this-is-awesome.”

All subsequent episodes would be in a style similar to the Spanking Adventures by Robin Pierce: a loosely connected set of CYOA-style vinettes, with a hub screen where you choose which to do when. The idea was that each day would have the following choices: study, patrol, sleep, work, and go out.

To add a bit of gameplay to these events, there would be three additional statistics: stress, fatigue, and GPA. The various vignettes would have different choices that could increase or decreaes these three stats. Furthermore, for every 5 points of stress you would receive a 1 point penalty to your primary stats. Meanwhile, every point of fatigue would subtract a point from your maximum energy. Meanwhile, GPA would serve as a multiplier on your stress: the higher your GPA the slower your stress increases.

Furthermore, there wouldn’t be enough hours in the day to do all the events, so you’d have to make decisions: should I study, or take a nap? Go to work or go and party? The idea was to add some tension to the game, because you’d have to carefully balance your priorities to make sure you have high enough stats and energy to defeat the villain of the episode, but also leave you in a good place for the next episode.

However, I think I’m going to do away with this approach, and make every episode more like the first, for a couple of reasons both story and gameplay related.

 

Gameplay:

My biggest problem with the gameplay is that you have no idea how powerful you need to be to defeat the villain. As a result, you don’t have enough information to make good choices when deciding which events you want to do for a given day. You could very easily find yourself in an unwinnable situation because you made sub-optimal choices three in-game days ago. I’ve played games that pull this, and it always frustrates me to no end. Keep in mind that I do want the game to have some challenge, but this feels too much like fake difficulty.

One thing I’ve learned from the playing through the first episode is that energy is _precious_. It’s even more precious than I expected it to be. It is a non-renewable resource that leaks away with every round of combat. Every power you use brings you a little bit closer to defeat, and you’re hoping that the advantage you get from the power offsets that. This introduces more than enough tension. Trying to stack on any more will turn tense gameplay into frustrating gameplay.

 

Story:

The problems with the gameplay could be solved easily enough by simply doing away with stress, fatigue, and GPA. However, I also think that this format would make it harder to tell a good story. The original plan had been that each choice would star a particular supporting character. For example, the patrol choice would feature Juliana in a starring role. This makes sense because it makes it easier to manage a large cast: by having subplots that focus on one character at a time, the player has time to learn about each character without being overwhelmed.

However, the player has a choice of which events to partake in each day. As a result, you can’t really build on previous events (the complexity would rapidly spin out of control). Furthermore, we can’t really incorporate key character development into these events because we have no idea if the player will see them or not. As a result, each subplot has to be a standalone vignette that doesn’t really contribute anything significant to the story, and doesn’t significantly develop the character. It would also be very difficult to weave these vignettes into the main plot.

In other words, it’d be filler. I don’t want any filler. One of my main goals is to make every scene contribute in some way to the story, either by advancing the plot or shedding some light on a character, or world-building.

 

Instead, I think we would get more mileage if we structure our episodes a lot like in X-Men: Evolution. In X-Men: Evolution you often had a main plot that focused on a handful of the cast (two to three characters typically), and a more light-hearted subplot that focused on other members of the cast. The subplot allowed them to inject some comic relief into the episodes, as well as give screen time to more characters without affecting the pacing of the main story. So my current plan is to have a main plot that will focus on Juliana, the player and the villain-of-the-week’s shenanigans. Meanwhile, we’ll have a subplot that stars one of the support cast. Essentially, these subplots will be the vignettes that we had originally planned to be separate events. Except we’ll be able to weave them into the main plot, and we can guarantee that the player will see some form of them (of course, we intend to give the player choices that effect how each plot plays out).

 

This also means that I don’t have to add any new features to the codebase (like I would if I wanted to do the original plan), which will be a huge timesavings. There is still a fair amount of coding that I want to do for the next episode (I need to refactor combat to better support some of the more interesting powers that I have in mind). So I’m not done with major development just yet.

 

Those of you who have kindly volunteered to help me write will be primarily helping me with the subplots, and possibly enriching the main plot with additional choices.

 

AKA

October Update

Spankers, Spankees and Switches of All Ages (18 and above),

Haven’t been super productive this month (worked my ass off to finish the code rewrite, so I’ve been taking a working break). However, I have managed to finish the first draft of game content. I write each update’s worth of content in three phases:

  1. Write a static version of the text. The purpose here is to get the bulk of the story on paper. To keep things simple, I give everyone fixed genders, names and outfits. Note that I do write up the choices as well.
  2. Go through a second pass and make the text dynamic, i.e. add additional text for male characters, outfits, etc.

I’m currently working my way through the second step.

AKA

Font Size Bugfix

Spankers, Spankees and Switches of All Ages (18 and above),

I’ve released a new  version (0.1.24)  with a small fix that sets a minimum font size of 6. This should protect against the font being so ridiculously small that you can’t read it, even on small screens.

 

AKA

Rewrite Complete

Spankers, Spankees and Switches of All Ages (18 and above),

I’ve finished the major rewrite of Scarlet Moon. The bug with saving making the game unresponsive should now be fixed. There have also been a few small interface tweaks. The biggest one being that skills are now selected with letters rather than numbers (made the new implementation a bit simpler, and gives me more single keystrokes for selecting skills).

You can get it on the downloads page.

Note: I’ve also moved over to gitlabs, partially because Gitlab allows me to have private repositories without a paid membership, and partly because I like open source and like to use/support it when I can. The links in the Downloads page should all be updated already, but if any are broken please let me know.

Note that there is no new content (beyond a little bit of editing). However, now that I’ve finished my rewrite, my focus until the end of the first episode will be on writing the game’s content, and bugfixes.

 

AKA Russell

September Update

So I’m eyeballs deep into the debugging of the Great Refactor. Right now, I’m working on debugging combat (the most complex piece, so naturally the buggiest).

At this stage, I’ve got attacking, and moving (moving is one of the more complex parts) working correctly. Right now I’m working on making sure skills work properly.

Events are also working correctly, I believe, as is saving and loading.

Fortunately, while I’ve found a ton of bugs, all of them have been pretty straightforward to fix (one bonus of the Great Refactor: everything being modified is local, and methods can’t do all sorts of wild and crazy shit behind the scenes, so it makes it a lot easier to track down the misbehaving code).

I’ve also been working on some of the writing for the rest of the first episode.

Sorry this is all taking so long. But I have a much better handle on how the codebase works, especially how the GUI is communicating with the rest of the system, so _hopefully_ this means we’ll have fewer of those weird-ass bugs that I couldn’t track down.

AKA

August Update

Spankers, Spankees, and Switches of All Ages (18 and above),

Sorry I missed last week’s update. RL got in the way. Anyway, as far as progress on the game goes, I have been working my ass off on the codebase. I started out refactoring my GUI code to make use of a very cool library ReactiveX. The Java implementation includes some very nice bindings into JavaFX, allowing me to write my GUI code using a paradigm that makes sense to me (message passing) rather than the utterly obfuscated callback-based approach that JavaFX encourages. This has allowed me to clean up my GUI code _massively_ including removing some of the bugs that came from various hacks I tossed in to get the whole thing working.

While debugging this refactor, I discovered that ReactiveX doesn’t like it when operations are not idempotent (in particular, if they have side-effects, weird things can happen). So I solved this problem by rewriting my entire codebase to make everything immutable except for the GUI, and a small stack of past commands  in the combat code (to make undoing easier).

Yyyyeahhhh. Did I go a little bit crazy and overboard? Fuck yes. But that’s the best part about being the sole coder on a project that you are spearheading. You can do all sorts of crazy shit, and nobody can stop you! Muahahahahhahaha!

Besides, this has forced to me clear up some techdebt that’s been bugging me almost from the moment I wrote it. It also makes a lot the code that was before hard to test much easier to test. So that’s a plus. Probably won’t be writing those tests now, but that’ll probably be something I poke at as time goes on. Add a test here, add a test there, and so on.

That being said, the refactor wasn’t really that crazy. It didn’t really affect the design of my code all that much. It just required a lot of mechanical “methods that inflict side-effects, now return modified copies of whatever they were modifying before.”  Some of my types are bit crazy now, and could probably stand to be reworked, but whatever. I’ll poke at that later.

Anyway, at this point my code compiles, so next I need to update all of my tests (I have about 200). Fortunately, these changes should dramatically simplify most of my tests. So I should have all of that modified by the end of the month.

As far as the actual game content goes, Chaosnova has been working on that, so it hasn’t stood completely still. Going a bit slowly, alas, but most people don’t have as much free time as I do. I’ve also been working on some of the planning for the rest of the season in between working on the codebase.

 

AKA

You Win Again Apple

Spankers, Spankees, and Switches of All Ages (18 and above),

So I tried (again) to figure out how to turn my game into a Mac App, and failed (again). Basically, I can’t figure out where to put the external data files (i.e. character information, outfit information, game events) so that the game sees it, so the app crashes immediately. Honestly, I’m not even sure that the reason the app crashes immediately is because it can’t find the resource files, because the stupid App swallows all the error messages (as opposed to Windows and Linux which nicely print errors to the terminal and logs when they barf).

So after a very frustrating morning, I’ve decided that I will not be officially supporting Mac. Sorry guy and gals. Take it up with Apple and their insistence on obfuscating where, how, and what is going on when, they execute their applications.

Note: I understand that bundling everything into one file, is what you’re “supposed” to do. However, forcing me to do that in such an obfuscated manner, rather than just having a small executable surrounded by external resource files like Windows and Linux, really makes it hard to support the OS when you’re one guy writing a porn game as a hobby. Besides, I don’t want to hide all the game data behind an executable. I want people to be free to edit the game content and even their save files if they so desire.

However, I have introduces one more last-resort way to run the game if you are having trouble running any of the variants posted (i.e. you’re on a Mac and can’t run linx_mac_no_jre, or all of the versions just don’t work):

1. Download the source code.

2. Extract the source code into a folder (doesn’t matter where).

3. If you’re on windows, execute ScarletMoon_windows.bat. If you’re on Linux or Mac, execute ScarletMoon_linux_mac.sh.

Essentially, what you’re doing is compiling the code, and then executing it directly. So it will take a bit of time to get started (on my old-ass Macbook it took about 16 seconds the first time, and 10 seconds the second). Furthermore, you won’t have any music if you execute the game this way. If you want to play the music, do the following:

1. Download  music.zip from the release.
2. Unzip music.zip and copy the resulting “music” folder into the “data” folder. So “data” should have the following folders:

a. characters
b. events
c. items
d. music

And inside “music” should be a bunch of music files (.mp3 and .ogg mostly).

I’ve also released a new version, 0.1.22. This fixes the directory problems in the previous release that kept the no-jre variations of the game from running. It also converted all of the .wav music files into .mp3 (which are significantly smaller) and removed a (rather large) library that I’m not actually using. So that should hopefully save us a few megabytes.

Windows-no-jre bug

Spankers, Spankees, and Switches of All Ages (18 and above),

There is a problem with the directory structure for the windows version of the game without an embedded JRE (the one that has a .bat file rather than a .exe). I’m not currently in a position to fix it, but you can do the following as a workaround until I fix the build:

1. There should be two folders: ScarletMoon-0.1.21 and ScarletMoon-0.1.21-windows-no-jre. They are supposed to be the same folder, I just have a setting wrong somewhere in my build tool.

2. Open the ScarletMoon-0.1.21 and copy both directories (bin and lib) into ScarletMoon-0.1.21-windows-no-jre. Now, when you run the .bat file, the game should work as intended.

Sorry about that.

AKA

July Update

Spankers, Spankees, and Switches of All Ages (18 and above),

Sorry about the delay in the monthly post. Fourth of July is a thing where I’m from, and I had a pretty busy weekend.

Anyway, I’ve stopped receiving complaints about the game being broken, so either people’s problems have been fixed, or a bunch of you have given up on ever getting the game to work. I hope it’s the former, and not the latter…

Anyway, there are now four variations you can download: The original two versions for Windows and Linux/Mac/Unix that don’t come with an embedded JRE, and a version for Windows that comes with an embedded JRE and a version for Linux that comes with an embedded JRE. The windows version may or may not work with PlayOnMac, I haven’t tested it. I would recommend one of the first two initially, because they are a smaller download size. Only download the version with the embedded JRE if you are having trouble running the version without an embedded JRE.

Now that all the fires have either been put out, or burned you all to ash, I’ve been working on a significant refactor of the parts of the codebase that are responsible for displaying the GUI, and processing input from the user. Both of those two pieces were rather heavily intertwined and fugly, but the new version is looking much cleaner (makes heavy use of a rather awesome library called ReactiveX).

I’m performing this refactor partially because my codebase desperately needed it, partially support some additional GUI work I’ll need to do to support the second episode, and partially because one SpankerOfOmens on animeotk has expressed interest in using my engine, and this refactor is the first step to pulling the Scarlet Moon specific stuff out of the more general game engine stuff. I’ve tried to keep the two logically separate, so hopefully pulling them apart won’t be too difficult, but we’ll see.

Bonemouth and I have written static text for the bulk of day 2 of episode 1 (he handled the beach scene, while I handled the scene immediately after). The only thing lacking is the climax of the episode (a rematch with Buzzsaw). However, Chaosnova (the one who wrote those two shorts that I posted a while back) has agreed to write that up while I work on cleaning up some of the warts in my code, and making it ready for other projects to use. Once Chaosnova has finished their scene, I’ll edit it and make it dynamic. Then we’ll have to make sure the combat is properly balanced, as well as implement a few more skills (though those should be pretty quick). Chaosnova has also provided a third bit of flash fiction that I’m looking over right now. I’ll post that once I think it’s ready.

AKA

The Scandalous Scarlet Moon Now with Embedded Java

Spankers, Spankees, and Switches of All Ages (18 and above),

I’ve released a new version of the game, version 0.1.20. You can get it under the Downloads page. The key change is that now I have proper executables for Linux and Windows, and the game comes bundled with a version of Java. It means the download is significantly bigger, but hopefully it will alleviate some of the weird issues some of you have had with Java crashing when you attempt to play the game.

However, note that the bundled JRE’s are for 64-bit Java, so if you have a 32-bit machine (if you’ve bought anything within the past few years, you probably have 64-bit) you will not be able to run the game.

If you do have a 32 bit machine, please let me know, and I can post versions that don’t come bundled with a JRE.

I don’t yet have a Mac app, because Mac apps are weird, and I have not yet navigated their weirdness.

Update: Uploaded a new version (there are variations both with and without an embedded JRE for Windows and Linux) that fixes a crash when attempting to restart combat.

AKA

Previous Page · Next Page