Adult stuff ahead, you’ve been warned. This entire post is also being sent to my game review blog, games.rockett.space on Friday, but I’ll put it here for people to take a peek at early too 🙂
So, a game jam, huh.
Yep, Strawberry Jam is an annual month long jam that runs through February, and has the express goal of expanding what could be considered a “horny” game. None of that Switch hentai shovelware here, only novelty and honest interpretations of the game creators kinks, (or in our case, kinky ideas that might tickle someone in our friend group if not us specifically.) Lilla and I tend to work on these together nowadays, however I was the lead on this one since Lilla spent some time recovering.
So what am I doing?
Well, y’see, there is this genre of puzzle games, sometimes digital, sometimes pen on paper such as in magazines or newspapers. Some call them logic puzzles, some call them elimination puzzles, but at the end of the day, the idea is that you have a set of categories, and you have to pair off every item uniquely whilst following rules.
Okay, but how can I make this horny? Simple: BDSM.
I make the categories various sex toys and outfits and bondage stuff, and that should give me enough variety to create puzzles. And oh boy, we’ll get back to creating puzzles.
From the very start I had a vision, a set of ideas. I had the vibe down, the aesthetic dialed in, now it’s just a matter of booting up Godot and putting it together. And I won’t pretend there was a lot of issues with development. Outdated guides to cutout/puppet animations; skeleton IK stacks interfering with each other (that was a fun one to debug at 300 error messages per second;) spreadsheets upon spreadsheets and paint documents with sketches of layouts and UIs. A lot of developer art made in GIMP because I refuse to use anything more competent (or less appropriate), but it all came together.
The thing I’m most proud of though, is developing a relatively robust drag and drop API from scratch, designed to be less hacky than last year’s attempt at pulling off the same thing, one capable of handling multiple different types of drag and drop items without having to hard code a bunch of different connections using Godot groups and signals, though the implementation under the hood is absolutely disgusting, including at least a half dozen group calls and signal links back and forth between the draggable object, the dropzone area, and the interaction marker. Utterly bonkers, but it works well (except for when grabbables overlap, which can happen in one or two rare circumstances.)
Ambitions and scoring
At the start of every jam, we decide what scoring categories we plan to hit. The last two years have been geared towards Stealth/Ambition and Stealth/Novelty respectively, but this year I was looking more at the Aesthetic/Ambition category. And how was I planning on achieving this? Simple.
Animations.
Lots of animations.
I wanted to try my hand at animating paper puppets using skeleton inverse kinematics, and to do this, I drew out a little grid on pen and paper with every restraint type on the top, and every toy on the side, including columns for idle and error, and then every single cell of that grid became a pair of unique animations. You could put any toy with any restraint, and as long as there isn’t an intrinsic error with doing so, the characters would adapt straight away and go into a pair of synchronised two second animation loops. (except for anal beads, those have a 6 second animation loop, and were a right pain in the ass (heh) to get right.)
At one point in the last week of the jam, I had no puzzles done, the game did not feel anywhere near finished, I was waiting on some background assets from Lilla, and everything was starting to feel bleak, and I said to myself “I will get the animations finished, because at least that way, if nothing else, I can release an animation gallery.” The animation gallery still made its way into the final game, which I’m proud of, what I’m even more proud of though is being able to finish the game and shove it into the jam!
And now that the jam voting period is finally over, and the results are in, lets see how we did:
9th place overall!! With 3.58 points. We’ll take that, absolutely! What an incredible result, amongst 61 peers, all stellar games in their own right, to place top ten is an absolutely stellar result, and I’m so proud to have made it that far. If that score seems low, it’s because some categories are contradictory so it’s very hard to score above a 4 overall.
But whats more important is category medals, as that’s what earns you a place in the prestigious winners list, and I’m so proud to have been awarded two of them. Not the two I was aiming for, but nice surprises happen, and I’m glad.
First place in Novelty! This one surprised me. I didn’t think my silly little puzzle game would score so highly here, especially since I already showed my hand early on and explained what I was up to. I guess nobody before has ever tried (or rather succeeded) in blending this type of puzzle into a horny game before.
Second place in Harmony! This one is even cooler. Harmony is such a weird category, as it is basically the “how intrinsically horny is your game” check. Do the “horny” and the “game” mesh well, and can you have one with the other. Again I thought I was just slapping a horny coat of paint on some regular-ass newspaper puzzles, but I think the way I decided to add complexity to my puzzles is what actually set it apart in this regard.
So let’s talk about the puzzles then.
If I put up this diagram, you’re gonna have one of two responses.

Either “I have no idea what you’re talking about”, or “Oh god, it’s one of these”.
And that’s half of the point. This is the inspiration after all. I was given one piece of advice going into this. “The best elimination puzzles include one ordered column. This allows for puzzles to not be completely brainless.”
Now I wasn’t sure what I could do for my ordered column. (I did figure it out eventually,) but what I did have instead was the idea of Preferences, and Attributes.
Instead of having clues that either confirm one specific pairing in the grid, or exclude one specific pairing, I could instead assign Attributes to various elements, for instance making both the dildo, anal beads, and doll stand all count as [Insertion]. And then have specific rules that use these attributes. For negative constraints, this is no different than saying “Jeff does not like A or B or C”, but where this becomes interesting is in positive constraints, as it allows me to leave a degree of freedom whilst also using the clue to eliminate other stuff and progress the flow of the puzzle from there, only able to disambiguate the left over stuff afterwards.
The other key insight I was able to program was the ordered column referenced above, or in my case, a positional column. Back in godot for a moment, when I validate a person, the only items and attributes the person needs to check is their own inventory, as the only time a person is validated is in the cloakroom. But when the person is in a room, instead the validator is given access to every object in the current room, as well as every adjacent room. This is both incredibly versatile, but unfortunately very limiting too. It allows me specifically to implement constraints to either have or exclude something in an adjacent room, but not to have something in a specific adjacent room (such as “left of” or “above”). The [Soundproof] attribute, plays off the [Noisy] attribute, and I used that to help with some puzzle setting early on.
While setting the puzzles, I had a huge revelation in my designing even. I originally used room positioning only for Noisy type clues, but then it hit me, why only that? Why not have a character say “I saw the nurse go in an adjacent room” and use that to help disambiguate at the end of the logic chain!
I have a newfound reverence towards professional puzzle setters.
No really, this shit is really hard.
It’s exhilarating to come up with an idea for a logic path, but the real challenge is fully exploring the exact ramifications of that decision, because you need to make sure you recognise everything otherwise you risk breaking the puzzle later, and even harder, you need to ensure later clues don’t completely invalidate earlier ones.
This was all exacerbated by the two constraints I had when setting the puzzles:
- I could only add custom constraints to people.
All the objects are set up once and shared, so while some objects do have constraints attached (such as not being able to use multiple [Insertion] objects together, or disallowing Hypnosis with [Laying Down] or Candle with [Standing Up]), I can’t add extra constraints to them between puzzles, as otherwise those changes would be visible in prior puzzles and may cause problems. - I wanted to keep it strictly to 2 or fewer constraints per person.
This is because if I put too much text into their thought bubble, it would overflow and I did not have the time to make that not be the case. I’d probably have to wrangle multiple textures and a 9-square container to stretch properly, and it’s a huge pain and nightmare to figure out when I had just spent 26 hours setting 5 puzzles.
I did have a few degrees of freedom though that I could use to help add additional constraints when placing people/things in rooms, such as being able to change the room’s features (Bookcase means you can’t put a bed in the room, [Window] and [Upstairs] might be a preference for some clients, and [Soundproof] allows for some disambiguation with noise logic), as well as being able to tag specific people as [Noisy] too in order to add more depth to noise puzzles, but beyond that, all I had was up to 24 rules spread over up to 12 people.
And the play testing, oh the play testing. I had borked the design of puzzle 3 and the implementation of puzzle 4 multiple times, leading to me having to test it over and over, and even knowing what logic is expected, it’s still time consuming. A second pair of eyes also revealed that there was multiple solutions to puzzle 1. Puzzle 1! That was meant to be the easiest to get right! But no, in my quest to use as few rules as possible, I missed an ambiguity that I had to resolve later (which I did with noise logic, because positional logic is more interesting than just adding another basic item/tag constraint.)
I also provide a version of the grid depicted above to allow for logicing and puzzling out, though some players tell me they didn’t need to start using it until around puzzle 3, which is neat. The same screen with the grid also includes all the constraints and attributes in the puzzle, so you don’t have to flip back and forth and hover over characters to see what they say, ultimately improving the flow of the puzzle. I was fully anticipating having this distinct divide between the “here is where the sex happens” and “here is where the thinking happens” spaces would detract from my harmony score, but I think the win condition being getting people in rooms rather than solving the grid helped mitigate that aspect, as it made the thinking space just for note-taking and made the player engage with the sex regardless of if they used it or not. And as a bonus, the win state is where sex happens, rather than the lose state, which is a problem a lot of other horny games don’t quite get. (See this archive thread for more on that.)
All in all, for as much of a nightmare as they were to create, I’m very proud of the puzzles I’ve made for this game. And I think the fact that the puzzle attributes themselves are all intrinsically tied to the BDSM equipment they are represented by is what helped improve both the novelty and the harmony score so much to reach the podium, and without attributes, this would have been a far worse game.
Whats next then?
Got a few updates to make, a couple bugs to fix such as adding validation to a call deferred instead of a direct call to help fix some race conditions with positional logic validation, and changing the win screen to disable input via turning off grabbables rather than just blocking input all together so that people can mouse over stuff in the win state whilst not moving stuff around, but that aside, all I really want to do with this game is add maybe 5 or 10 more puzzles to have 2-4 of each difficulty. That might allow me to make some puzzles with easier logic, and some with even harder if I can wrap my head around setting harder puzzles. Like I said above, puzzle setting is really hard and I have incredible respect for people who can pull it off.
But beyond that, I’m happy to say that Ms Terry’s Pleasure Mansion is a completed game. Maybe I’ll open source it down the line if I’m feeling brave or get enough demand to do so.
Show us the goods, fox
Alright, here you go. Don’t forget, this is an NSFW game, we’re not even pretending it isn’t this year, so 18+ only, please.
And if you want our previous Strawberry Jam works, here are those too!
SJ9: 5th in Novelty and 6th in Stealth, 13th overall (out of 87 entries.) I did a big chunk of the programming, and Lilla helped with programming and did all the artwork.
SJ8: 1st in Stealth and 2nd in Novelty, 9th overall (out of 74 entries.) This one was entirely Lilla’s doing.
Leave a Reply