Spankers, Spankees, and Switches of All Ages (18 and above),
Today, I am proud to release the first day of the first episode of The Scandalous Scarlet Moon.
You take on the role of a Silver Age style superhero(ine) Scarlet Moon. Aided by your best friend Juliana, you must protect the City of Generica from a host of villains, from brutish thugs to sensual seducers, grinning giants to evil masterminds, honorable hunters to cheating thieves. But don’t spend too much time superheroing! After all, you’ve got a job to keep down, studies to keep up on, precious precious beauty sleep, and you might even want to have fun every now and then! Neglect them at your peril (to your bottom). But don’t spend too much time focusing on your regular life either! After all, every one of those villains will happily put you over their knees and give you the kind of a spanking a meddling superhero deserves if you let your guard down for even a single second!
So join me as we embark upon an epic quest across, over, and under Generica City!
In this release experience the epic, action-packed origins of Scarlet Moon! Fight your way through an abandoned business park crawling with the Evul gang, the Whistlers, learning skills as you go that will be absolutely essential to getting out of there with an unmarked bottom. Come face to face with your very first supervillain: the boisterous Buzzsaw and learn up close how they earned their menacing name!
This release contains the following:
- Customize your character however you want! Pick their gender, name, appearance, and clothing.
- Pick the genders of most other characters! Most NPCs are broken into one of three roles: spanker, spankee, and switch. Pick their genders universally at the beginning of the game, or select the gender of each character as you meet them.
- Experience a rather generic superhero story, where you get to make some choices that dictate how your character reacts to the situations! This episode is alas, rather linear, and your choices don’t impact gameplay much. But that will come in subsequent episodes.
- Engage in turn-based tactical combat. Most of your enemies don’t pose much of a threat, but be careful! Your health and mana are combined into a single stat, energy, you have no way of restoring energy, and you lose energy each round (this can be turned off). You’ll have to make intelligent and efficient use of every skill in your ever-growing arsenal if you hope to survive!
- Get annoyed when you discover that you gain nothing from combat!
- Experience in-combat spankings! Be mildly annoyed at how utterly impractical they are at this point in the game, and hope they become more useful as the game progresses!
- Experience lovingly crafted in-story spanking scenes that eschew sound effects in favor of purple prose, and clunky back and forth between the spanker and spankee! How many different ways can we describe getting slapped on the ass? Play and find out!
- Prefer to play a Domly Dom of Domliness and don’t relish the idea of your character getting their fanny whacked? Every spanking scene is avoidable! Turn off in-combat spankings (which also turns off losing-to-the-supervillain-spankings)! Naughtiness is inevitable, but spankings are not!
- All sorts of bugs and crashes that have slipped past myself and my beta testers, because let’s be honest, I’m a hack whose too busy jerking it to use proper design, write enough unit tests, and don’t even talk to me about integration tests! (If you happen to discover one of these, please let me know, and maybe we can trick a few people into believing I know what I’m doing).
The next major release will contain the following:
- Beach scene! Because who doesn’t love the idea of buxom women in thong bikinis getting spanked in public at the beach?
- The kidnapping of a character you’ve only just met, and probably don’t like very much, but are expected to save anyway!
- The unveiling of Scarlet Moon’s costume! Will she have a modest, practical outfit, or the type of sexy skanky skimpy spandex slip you secretly enjoy but publicly denounce because there’s something terribly wrong, yet dirtily sexy, about a genre where the mainstream works have already done the work of designing the outfits for the inevitable porn parodies!
- Stat gain through roleplaying! Rather than getting stronger in combat, some of the choices you make during the story will give you stat bonuses, and let you learn new skills! Will you be a character with high Strength, who punches her way through problems, or a fast-talking charmer with high WIllpower who talks her way out of scrapes? The choice is up to you!
- Balance short-term gains with long-term benefits! Do you eavesdrop on your opponent, and try to learn her motivations, or do you ambush her now, and gain the upper hand in what is sure to be an intense battle that could go either way?
The game is written in Java, so you need to make sure you download and install Java 8 if you don’t already have it installed. Be warned, Oracle apparently has a shady deal with Yahoo! where they try to trick you into making Yahoo! your default search engine, so keep an eye out when installing Java.
The game’s code is licensed under the GNU GPL-v3, while the content of the game (events, characters, etc) is released under the CC-BY-SA. What this means is that you are free to take my work and do whatever you want with it (release a slightly modified version of my game, write stories featuring my characters, etc.) and release them so long as you:
- Give me proper credit
- Release your work under the same or a compatible license
Edited
I’ve uploaded a new release that fixes an issue that may have caused the game to crash when attempting to save.
I’ve uploaded a new release that fixes an issue where the player will not learn the skills they are supposed to if you change the font size on the character creation screen.
I’ve uploaded a new release that fixes several issues: Character skills are now properly loaded when loading a game, so skills don’t bleed over from one game to another. The player can now defend at the distant range. The option where you defeat Buzzsaw and spare them a spanking now transitions to the correct event. Struggling during a grapple no longer automatically breaks you out of it. It now reduces the duration based on your grapple skill. Buzzsaw now knows the skill Soaring Leap, where she jumps at you, which puts both you them at armslength. So you can’t just move to distant and spam Scarlet Beam until she falls over. Well, you can but she now has a way of getting close to you.
Spankers, Spankees, and Switches of All Ages (18 and above),
Sorry about the delay in this post. This past weekend was crazy, being mother’s day weekend and all. Anyway, the first day of the first episode is in beta testing right now. I have managed to play it from beginning to end (though I’m not sure if any of my beta testers have yet, they’ve all been kind of quiet. Probably because it’s a busy time of year). That being said, we’ve gone through about five releases of bug fixes and enhancements.
My current plan is to release it at the beginning of June unless there are game breaking bugs that we have discovered and I haven’t fixed yet. We may release it earlier if I get approval from at least four of my beta testers.
AKA Russell
Spankers, Spankees and Switches of All Ages (18 and above),
**Insert obligatory crappy April Fool’s joke here**
Now that that’s out of the way, I’m getting very close to having a playable beta. I have everything implemented that I need for the first episode except for the combat code, which I’m working on now. As far as combat goes, I need to implement the following:
- Functionality for selecting skills.
- The logic to actually execute a round of combat.
That’s pretty much it. I already have the AI implemented, as well as the code that actually executes each action. I just need to glue all that together, and I’ll be good to go.
So I’m expecting to have all that done by the end of the month at the latest. What’s the next step after that? The next step is to pass the game along to my beta testers. I’ll consider it ready for release when I’ve gotten four approvals from my beta testers (or it’s early June, and I haven’t heard anything at all from my testers, depends on how responsive my testers are).
So we’re on track for a release in early June. My view and controller code still isn’t particularly pretty, but at least it works (far as I can tell anyway), and I have some understanding of how it works (though not complete. JavaFX has some infuriating and unintuitive bits around event processing that I haven’t fully grokked just yet).
So, to taunt you all, here are a few screenshots!
First, we have a screenshot of character creation
Character creation provides just as many options as Potion Wars, only thanks to the magic of libraries (instead of rolling it my own stupid self), it’s arranged very pretty in something approximating a real UI. Character options will include:
- gender: male, female
- bodytype: slim, average, voluptuous, heavyset
- eyecolor: blue, brown, green, hazel, grey
- haircolor: blonde, brown, red, black, rainbow
- hairstyle: down, pig tails, ponytail, single braid (something like this), buns, mohawk
- height: short (5′ – 5’3″), average(5’4″ – 5′ 7″), tall (5′ 8″ – 5′ 11″, gargantuan (6′ and up)
- musculature: soft, fit, muscular
- skincolor: ivory, peach, tanned, brown, caramel, black
- clothing: There are a ton of clothing options (mostly female-oriented, I’m kind of biased, alas) and all are available from the beginning, so that you have a high degree of control over the civilian appearance of your character. More clothing options may be added over time as people request them (clothing is very easy to add).
Next we have the options.
Crimson Glow provides the same and more options as Potion Wars:
- You can control whether or not your player can be spanked in battle. This will also affect supervillain story spankings. If the player is not allowed to be spanked in battle, then neither will the player be spanked after losing to a supervillain. Other in-story spanking scenes are possible, but since all of those will be avoidable by selecting the right dialogue option, rather than winning a challenging battle, those are not disabled.
- Artificial Intelligence controls how smart enemies are. Dumb enemies pick targets and actions at random. Average enemies pick their skills based on what they’re good at, but pick targets at random. Smart enemies pick their skills based on what they’re good at, and are more likely to pick targets who will be weakest against those skills.
- This game takes full advantage of the fact that both genders have an ass, and disciplinary spankings (which make up 99+% of the game’s spankings) focus exclusively on the bottom and thighs. “Spanker Gender” sets the gender of all characters who are tops (almost always administering rather than receiving). If the gender is UNKNOWN, then you will be given the opportunity to pick the gender of each top individually when you first meet them. The same for the spankee gender. All supervillains are considered spankees. If the genders for both top and bottom are the same, then all generic enemies will also have the selected gender.
- Energy Lost Per Round of Combat controls how much energy all characters lose at the end of battle (note: You cannot go below 1 energy through attrition). NONE means allies don’t lose any energy, and enemies lose a lot. MODERATE means enemies and allies lose at the same rate. SEVERE means allies lose a lot of energy, but enemies don’t lose very much (though they do lose some).
Next, an event screen.
This is the first event of the game. There is one, very important improvement over Potion Wars: Even text is now displayed with a scrolling bar. So no more multiple pages. The text of an event is now displayed all at once on the screen, and allows players to scroll through it (though moving on to the next event clears the view).
Finally, combat!
The first thing that should be obvious is that I’ve expanded significantly on the positioning system. Rather than having spanking/grappling/armslength, we now have spanking/grappling/armslength/distant. Different characters will be able to attack at different ranges, and will have different skills that work at different ranges. Positions are also displayed in a simple visual view. The top rows are enemies, the bottom rows are allies. The combat log is also a scrollbar, like events, and will display all feedback on user commands. The —-Character Name— tells you which character you’re selecting commands for, and will be displayed after the feedback of every command.
This view relies a bit too heavily on the combat log for feedback, but this damn thing is being complex enough to program. I may improve it in the future, but this should be enough to make the game playable.
One very important differences from Potion Wars:
There are no longer dungeons with mazes. It was decided that those really weren’t worth the effort of designing, and implementing. Furthermore, I don’t think they always work well for superheroes (which tend to focus on small-scale battles between heroes and villains). Not all villains have a billions minions at their beck and call, after all. Instead “dungeons” will be a sequence of events, like CYOA. In these events, the player will be able to make choices, many of which may involve using skills to get by obstacles, or gain the upper hand in battle. Furthermore, the player _does not_ get better through combat. Instead, in most dungeon events, the player will have a range of choices. Each choice will increment at least one skill by one point. For example, you may be faced with a thick fence. You could choose to ram through it (which improves strength), jump over it (improve speed), or find the guardhouse and convince the guard to let you through the gate (improve willpower). Of course, you might fail (bounce off the fence, land on the fence, get spanked by the guard) if your stat isn’t high enough, but you’ll still get the stat gain.
In short, unlike Potion Wars, battles are very painful (even easy ones will drain precious energy), and should be avoided when necessary. Of course, that doesn’t mean you might not get bonuses for charging into some battles, especially if it involves saving people.
This might seem like an odd decision, but there are a few reasons for it:
- This allows us to do much more interesting things. For example, the “dungeon” could consist of playing cat and mouse with a single villain, in which you try to find them, or manipulate the environment in a way to give you an advantage, occasionally having skirmishes with the villain if you fail an event, or get the upper hand.
- It provides more opportunity to roleplay. The time I would have previously spent designing dungeons, and getting them to display can now be spent writing up events.
- It removes a rather frustrating balancing act. If combat made you stronger, then on the one hand you’d want to get involved in combat as much as possible to become stronger, but on the other save your precious energy for the boss. While in theory this might be fun, I think it would mostly be frustrating, because you don’t know how strong you need to be later in the game, or how much energy you’ll need to fight the boss. So I think removing the built-in incentive structure from combat will make for a much more interesting gameplay experience. It will now be about “How do I efficiently get to the supervillain and defeat them?” rather than “RAAGH HULK SMASH!”
As an added note: One of my writers has written up a few short scenes to get a handle on some of the characters. He’s given me permission to post them, so you’ll see a few short snippets coming up in the next few days. Think of them as sneak peeks (though they take place around the midway point of the game, so they’re a little bit spoilery, but the only thing they really spoil are the superhero names of some of Crimson Glow’s allies).
Spankers, Spankees and Switches of All Ages (18 and above),
So, I fired up the game the other day and… watched as the GUI did crazy shit. I was using IntelliJ’s GUI builder thing as a sort of shortcut, because I find GUI programming obnoxious, and was hoping to take a shorcut. However, it looks like IntelliJ’s GUI Builder SUCKS in a billion different ways. It is clearly geared towards creating a bunch of static popup windows with minimal dynamic content changes. Also, it’s really hard to keep things consistent across screens, and for whatever reason I couldn’t update the static placeholder text I put in there. It doesn’t help that the tool uses this weird combination of Java code and XML, and I’m not really sure how they interact, or how the program knows to go to the Java vs. the XML and… basically too much annoying, not easily debuggable magic.
And having a bunch of different screens that you have to constantly make fullscreen (i.e. for a game) leads to much flickering and is utterly unacceptable.
After much swearing and cursing and just general being pissed off, I blew away all that garbage, took a week off, and am starting the GUI (and possibly much of the Controller) code from scratch. I decided to buckle down and actually learn the JavaFX library, and am using that now. On the bright side, shit be making a lot more sense, and I have the TitleScreen done (probably the simplest screen), and am currently working on the Character Status/Creator screen (which is one of the more complex ones, only the Dungeon and Combat screens are more complex). The Character Status screen actually works, and displays stuff. I just need to tweak it to make it look good.
So, the bad news is I’ve had some setbacks. The good news is I’ve learned some stuff, and I am pretty happy with the JavaFX library so far. Makes a ton more sense to me than Swing ever did.
Spankers, Spankees, and Switches of All Ages (18 and above),
So I’ve made _excellent_ progress. I’ve managed to finish the first round of the game engine, something I wasn’t expecting to finish until the end of February at the earliest. Right now I’m working on the startup code. By the end of the week (at the latest) I should have all the code written to run the game for the first time.
However, that does _not_ mean that a release is right around the corner. Here’s a list of things I still need to do:
- Write JSON files describing the random enemies of the first dungeon, and the boss of the first dungeon (won’t be too hard. Maybe four files tops?) This includes writing the in-combat spanking text, but I’ll be lifting and modifying the combat text from the first enemies of Potion Wars, so that shouldn’t take too long.
- Write JSON files describing the clothing options for the player (lots of files here, but items are much simpler in this game than in Potion Wars, so again it shouldn’t be too difficult)
- Translate the transcript of the first day of the first episode into a JSON-like format (it’s not quite JSON because the events have line breaks, which I don’t believe JSON supports), and do any editing I decide to do.
- Debug the game. This one will probably take a while. I’ve been reasonably good about writing tests I think, however I don’t really have tests for the view or controller. The view because GUI code is rather hard to test automatically. The Controller is also woefully lacking in tests. Now, most of the Controllers are simple enough that that probably won’t be a problem (query model, invoke method on appropriate game screen). However the Combat Controller is rather complicated. I really should refactor that one out into smaller, more testable pieces. But I’m lazy.
- Balance the first dungeon.
Once those five steps are complete enough, I’ll pass it off to my beta testers to break.
So we may see a release by May, but officially, I’m going to keep it at June. I’ll admit that I have cut a few corners, and I’m not sure how badly that cutting is going to hurt me just yet.
One nice thing: I feel like I have a _much_ better handle on this codebase than I did on the Python codebase for Potion Wars. So that at least is a success!
sss asked me about my thoughts on when a playable version would be out, and my response has turned detailed enough that I figured I’d make a post about it. But first, a brief announcement: My host is performing some maintenance this Friday, so my site will be down for about 30 minutes around 7 AM Pacific Standard Time.
As far as a playable version, I’m shooting for end of June. As a brief reminder, here are the three large tasks for writing my engine:
(1) Design and implement a GUI that the user sees and interacts with.
(2) Design a backend that contains all the game’s actual data
(3) Write a middle layer that takes user inputs from the GUI, and queries (and modifies) the backend appropriately, and then send the results back to the GUI to display.
I believe that (2) contains the bulk of actual lines of code.
For (1) I’m using IntelliJ’s GUI builder tool. It’s not the greatest ever, and the GUI will probably be more than a little rough at first, but it should be enough to create something playable. With that tool, creating a GUI consists of dragging and dropping some GUI elements onto a canvas, and registering a bunch of buttons.
The most complicated part of (1) is drawing the dungeon. However, I came across an excellent tool called Grid Cartographer: http://www.davidwaltersdevelopment.com/tools/gridcart/
Essentially, this tool allows me to draw a dungeon, and save it as both an image file, and an XML document. So I can use the XML document to load the actual dungeon data into the backend, and for the frontend, rather than manually drawing lines and filling in squares like I did for Potion Wars, I can just render the dungeon image that I drew. Using that tool, I’ve managed to implement the dungeon view with a minimum of pain (so far).
I expect (3) to have the most complicated logic (particularly when it comes to combat), but the vast majority of it should be about as simple as the GUI code (take a command from the GUI, and invoke a couple of methods on the backend).
I think I have a reasonably good chance of having all the GUI code written by the end of February, and the controller code written by the end of April. I expect it’ll then take about a month to translate (and edit) the content of episode 1 day 1 from LaTeX to the mostly-JSON format that I’m using for Crimson Glow. Then, I expect it’ll take about two months to debug the engine from end to end, because you can only test so much with unit tests. GUI code in particularly is notoriously hard to test automatically.
Spankers, Spankees, and Switches of All Ages (18 and above),
Just the monthly progress update. I’ve managed to get a _lot_ done over the holidays in between family obligations. Basically, there are three big pieces to the program:
- The code that the user interacts with. This is responsible for displaying the game, and receiving commands from the user
- The code that models the current state of the game.
- The code that takes the user’s commands (given to it by 1), modifies the model (2) appropriately, and tells the view (1) what to display next.
I’ve finished most of the first pass of (2). Right now, I’m working on the code for saving and loading (which doesn’t require much. I’m using a library called Jackson, which does most of the work for me). Once that’s done, I’ll be finished with the first pass of (2), and then I’ll move on to (3).
Spankers, Spankees, and Switches of all Ages (18 and above),
Don’t have time to write a lot. Need to catch a plane early tomorrow. Still, I thought I’d give you a brief progress report. The past month has gone something like this:
- Dig into undocumented, poorly formatted spaghetti code to try to modify it the bare minimum necessary for Crimson Glow.
2. Watch it break in strange, and incomprehensible ways.
3. Have no sane means of debugging.
4. Throw things and swear until my voice is hoarse.
5. Realize the codebase is beyond all recovery.
6. Start over.
So yeah. I’m not happy about that at all. I was hoping to get something out in November, or even this month, but with having to write everything from scratch, I doubt we’ll see the first day before April. Sorry about that. I hate jerking you all around like this, but it is what it is. That being said, I like to think I learn something from my mistakes, so I’m going to be much more deliberate about my coding. In particular, I’m going to make sure to actually write tests. Because you know, that’s kind of a fundamental thing you should do. I’m also going to document the codebase, so that I have some idea of what the hell I wrote when I back to fiddle with things a year from now.
I’ve also decided to write this in a different language. In particular, I’ve picked Java. The primary reasons are:
- There is a _wonderful_ testing framework out there called the Spock Framework that makes writing (unit) tests downright enjoyable. Seeing as how testing is so critical to making sure I don’t write a piece of junk, and seeing as how it can be difficult to be disciplined enough to write thorough tests when there isn’t anyone else around to slap your hand if you don’t, I want tests to be as easy to write as possible.
- While it is possible to write large programs in duck-type scripting languages like Python (or Groovy for that manner), for me at least, it requires a lot more discipline than in a statically compiled language. Plus, since I became a code monkey I’ve actually seen well written Java code at scale, while I haven’t seen well written Python code at scale yet. So hopefully my growing experience with large Java programs means I’m more likely to get it mostly right if I write it in Java.
- I find it much easier for myself to slip into the kind of structured, design-focused programming mentality that I need for something of this scale when coding in Java. That’s likely just because Java is where I have the most experience writing structured, design-focused code, but it is what it is, whereas most of my experience in Python is throwing together quick hacks and glue scripts.
So I’m working as fast as I can, while still trying to write code that isn’t utter garbage. Needless to say, if there’s anyone out there with some skill in Java, and would like to help out, please drop me a line. I’m particularly looking for anyone who enjoys writing GUI code (hate graphics programming of any flavor). If you’re curious, the codebase can be found here. There isn’t anything on master yet, but there is plenty on the GUI and Model branches.
Spankers, Spankees, and Switches of All Ages (18 and above),
As requested, here’s a link to a PDF of the content of the second episode of Potion Wars:
https://drive.google.com/file/d/0B4c0BkzLlLZOcm5uNFVpNDZPejg/view?usp=sharing
It hasn’t been edited much at all, so it’s in very rough shape. But enjoy, nonetheless.
Also, if you haven’t, don’t forget to check out the previous post, November Update. That one contains some more information about the planned structure for Crimson Glow.