Knees tied animations
This week, I mostly worked on making the "bindings" system a bit more flexible, and also added a "knees tied with boxtie" animation variant to test how flexible the new system really is!
The main difficulty I encountered was to properly "split" all of the animations for grabs and carries. These animations are fairly old, which means that they're "just" animations that fit together because I wanted to test something, and I didn't really think about how hard (or easy) it would be to add new variants. I also took the opportunity to rename all of them to match a specific naming format for animations, to simplify my life going forward.
For example, quite a few of the grapple animations are "identical" for one of the characters. Whether the legs of the grappled character are tied or not does not matter for the grappling character, as they're just grabbing the torso of the other character ; indeed, the animations were literally a copy-paste from one another. So, this rework meant that I could delete the "LegsTorso" and "TopTorso" animations for the grappling character, and just use the same "AnyTorso" one for both.
I also took some time to add a few "missing" animations, for example, the ability to grab a fully tied character from behind. And then make them hop forward.
Then, I spent quite a bit of time improving the steps in the animation "behavior tree". A small explanation, the "behavior tree" is an engine tool that describes how to move from one animation to another. The most basic transitions say, for example, that going from the "standing around" to the "walk" animation, you start the walk animation at the beginning.
The main thing that a behavior tree is used for is to define "intermediate" animations. For example, if you're in the "crouching" animation and you want to go to the "laying down" animation, you don't "jump" from crouch to laying down, but you first go through the "crouching to laying down" animation. Here, you can have the character putting a hand on the ground, then their knees, and then lay down. This improves the whole game quite a bit.
As you can expect, these kind of "intermediate animations" are used all over the place in grabs and carries. When you start a carry, when you surprise-grab a character from behind, when you drop your grabbed character to the ground, and so on... It's kind of at the core of all of the bondage animations for the game.
Without going into too much details about the code, the behavior transition system I'm using is fully custom made (as is the whole engine). This means "the behavior tree" is basically just a bunch of code that defines all of the transitions. And, like with the animations, I created a lot of "niceties" to help me define transitions easily, but the grab and carry animations didn't really make use of these because I created them very early. So I did need to clean that up as well.
And finally, once it was all properly cleaned up, I could introduce the new "knees tied with boxtie" bindings!
The new binding took a whopping 47 individual animations. This is split between the solo animations (18 animations), the ability to sit on a chair (3 animations), the various grabs (7 animations for back, 11 for ground), and the carry (7 animations).
Despite how many animations this sounds like, this was actually fairly fast to do. I did have some difficulties with making the leg movements look okay ; there is annoyingly few references of "hobbled walking" online that fit what I wanted to do. I was able to find some, and also to make my own references, but it definitely took some back and forth. The rest was actually very straightfoward. A lot of animations could often be mix-and-matched from existing ones, with most of the "grab on ground" animations being based on the "torso tied, free legs" animation with some tweaks to the leg movements to match the tied knees. However, since there is no door animations for "tied torso", I was able to skip that, which saved me some time. (There's only 6 door animations per "binding type", but they are often quite hard to get right due to the player's hand and leg movements to handle when opening doors, and often need to be tweaked a lot between poses).
So, conclusion from this experiment: it's not too much work to add a new binding types, now that the whole animation system is reworked to handle it.
I do have some ideas for future binding types, for example, adding some "wrists and legs tied" / "wrists and knees tied" variants to complement the "torso and legs tied" / "torso and knees tied" animations of today. I was maybe also thinking about some "pinned wrists tie" animations, where the wrists are tied together and the elbows are pinned to the torso. But neither of these aren't going to happen soon (very probably), they're just ideas for later.
One last thing I did earlier this week was more technical, I migrated the "multiplayer server" of the project to use SQLite to store what little data it need (SQLite is now a native nodejs module, even if experimental, so I wanted to use it now that it's an option). It doesn't change anything, but it was a good experiment and it's a nice improvement.
For the next week, or few weeks, I'm still planning to finish the release, trying to imagine things to do. I've not really focused on it, but I'm starting to have some rough ideas. So, here's to hope I have some of that to show soon!