Jump to content

The Future of SexLab Framework - Discussion


Recommended Posts

The framework needs a way of figuring out which animations are appropriate for gender.  For instance, a male and female pairing shouldn't trigger the Tribadism animation, and the Devil's Tricycle between two girls and a guy should always put the male NPC into the "male" position, even if the player character is female and initiated it.  It just... doesn't make a lot of sense otherwise.

 

GetAnimationsByType() does exactly this by selecting animations only fitting certain criteria, such as 1 male and 1 female.

 

But it's up to the mods starting the sex to determine what and how animations are selected. I have no intention of forcing animations to not work on a framework level; if a mod wants to use the wrong animation for a pair that's their choice.

Link to comment

 

The framework needs a way of figuring out which animations are appropriate for gender.  For instance, a male and female pairing shouldn't trigger the Tribadism animation, and the Devil's Tricycle between two girls and a guy should always put the male NPC into the "male" position, even if the player character is female and initiated it.  It just... doesn't make a lot of sense otherwise.

 

GetAnimationsByType() does exactly this by selecting animations only fitting certain criteria, such as 1 male and 1 female.

 

But it's up to the mods starting the sex to determine what and how animations are selected. I have no intention of forcing animations to not work on a framework level; if a mod wants to use the wrong animation for a pair that's their choice.

 

Ashal I think the problem is that this "anims = GetAnimationsByType(actorCount, females, females, aggressive=aggr)" does not work or at least it doesn't for me. But it works if you have this "anims = GetAnimationsByType(actorCount, males, females, aggressive=aggr)". I doubt if modders are going to select individual animations!

 

 

Link to comment

 

 

The framework needs a way of figuring out which animations are appropriate for gender.  For instance, a male and female pairing shouldn't trigger the Tribadism animation, and the Devil's Tricycle between two girls and a guy should always put the male NPC into the "male" position, even if the player character is female and initiated it.  It just... doesn't make a lot of sense otherwise.

 

GetAnimationsByType() does exactly this by selecting animations only fitting certain criteria, such as 1 male and 1 female.

 

But it's up to the mods starting the sex to determine what and how animations are selected. I have no intention of forcing animations to not work on a framework level; if a mod wants to use the wrong animation for a pair that's their choice.

 

Ashal I think the problem is that this "anims = GetAnimationsByType(actorCount, females, females, aggressive=aggr)" does not work or at least it doesn't for me. But it works if you have this "anims = GetAnimationsByType(actorCount, males, females, aggressive=aggr)". I doubt if modders are going to select individual animations!

 

 

 

 

 

GetAnimationsByType(actorCount, females, females, aggressive=aggr) wouldn't work because it's not the right way to use it, there isn't 2 female arguments.

 

If you wanted to select 2 actor lesbian animations it would be GetAnimationsByType(2, 0, 2) this would select, in order of passed arguments, animations meant for 2 actors, with 0 males, and 2 females

 

GetAnimationsByType(1, 1, 0) would select solo male animations

 

GetAnimationsByType(2, aggressive=true) would select 2 person aggressive animations

 

GetAnimationsByType(3) would select all 3 person animations.

 

If no animations are passed to StartSex(), SexLab uses this function itself to select default animations, using GetAnimationsByType(number of actors, number of males, number of females). Though that causes problems with gay pairings, as there is only 1 female/female and 0 male/male animations, so if it detects gay/lesbian pairings it also grabs GetAnimationsByType(2, 1, 1) and merges it with the GetAnimationsByType(2, 2, 0)/GetAnimationsByType(2, 0, 2) using MergeAnimationList(), that way it selects gay animations when the correct pair is present, and then also grabs normal animations since gay animations aren't common enough for them to be the only selection.

 

But that is only if no animations were selected for the StartSex() call. If a mod selects animations for the scene it will use those animations, regardless of who/what is present, because the mod maker picked them and SexLab does not and will not override what the mod maker wanted.

Link to comment

I've been thinking of some possible additions to the framework on the API side, and one I've been considering is a new way to start animations via a seperate api library to act as a sort of controller for starting animations, that will give you a lot more control over how they start. Here's a quick example of what the possibilities of this are. Most of these with the exception of animations would be optional and auto-fill if you don't call them.

; // Returns the SexLabThreadController form containing these new functions.
; // claims the animation slot from the main framework so no others can claim it.
; // DOES NOT START ANY ANIMATION UNTIL StartScene() IS CALLED AT BOTTOM
SexLabThreadController Prepare = SexLab.PrepareScene()

; // REQUIRED: Set our actors for the scene
actor[] actorList = new actor[2]
actorList[0] = PlayerRef
actorList[1] = akTarget
Prepare.SetActors(actorList)

; // REQUIRED: Set our animation list
Prepare.SetAnimations(SexLab.GetAnimationsByTag("Anal"))

; // OPTIONAL: Set custom stage timers for the animation
float[] timers = new float[4]
timers[1] = 15 ; // Stage 1 timer
timers[2] = 20 ; // Stage 2 timer
timers[3] = 25 ; // Stage 3+ timer
timers[0] = 10 ; // Orgasm/End stage timer
Prepare.SetStageTimers(timers)

; // OPTIONAL: Pick voices for individual actors
; // Set the first actors voice, PlayerRef
Prepare.SetVoice(PlayerRef, SexLab.GetVoiceByName("Female Moan 01 (Classic)"))
; // Set the second actors voice, akTarget, to be silent
Prepare.SetVoice(akTarget, none)

; // OPTIONAL: Set the center location of the scene, an ObjectReference of your choice
Prepare.SetLocation(PlayersBedReference)

; // OPTIONAL: Decide how each actor should strip, array index + 30 = bipped slot
; // Set the first actors stripping, PlayerRef
bool[] strip = new bool[33]
strip[0] = true ; // Strip head
strip[2] = true ; // Strip body (full)
strip[3] = true ; // Strip hands
strip[22] = true ; // leg secondary or undergarment or left leg
Prepare.SetStripping(PlayerRef, strip)
; // Set the second actors stripping, akTarget
strip = new bool[33]
strip[2] = true ; // Strip body (full)
strip[22] = true ; // leg secondary or undergarment or left leg
Prepare.SetStripping(akTarget, strip)

; // OPTIONAL: Disable player control over the scene
Prepare.AllowPlayerControl(false)

; // OPTIONAL: Set a custom hook event for the animation for later manipulation
Prepare.SetHook("ExampleHook")
RegisterForModEvent("AnimationEnd_ExampleHook")

; //REQUIRED: All set, start the animation now.
Prepare.StartScene()

The idea is that it will let modders claim a slot for animation, and then have complete control over all the variables of the animation, before the animation actually begins, and then decide when they want the animation to start.

 

This would be a way around having to just do a StartSex() call with a custom hook, hooking onto AnimationStart, and then overriding all the settings of the scene's defaults with various other functions. Or in place just making a really complicated single SexLab.StartAnimation() function with a ton of different arguments. Both of which are dirtier methods of having this much control in my opinion.

 

It's obviously a good deal more complicated than just using StartSex(), that function won't be going anywhere though; it serves it's purpose as a function to start a sex animation with minimal input from the modder. This would just be an alternative for modders who want finer control over the scene.

 

This is all just theoretical mind you, I haven't put any work into doing this yet, so I welcome any suggestions from modders for more things they would like to set before the scene begins.

 

And don't let the big wall of code scare you, it could be much simpler looking.

 

Here's the new method using PrepareScene(), doing the same thing as StartSex()

; // New method, does the same as old method
actor[] actorList = new actor[2]
actorList[0] = PlayerRef
actorList[1] = akTarget
SexLabThreadController Prepare = SexLab.PrepareScene()
Prepare.SetActors(actorList)
Prepare.SetAnimations(SexLab.GetAnimationsByTag("Anal"))
Prepare.StartScene()
; // Old method, does the same as new method
actor[] actorList = new actor[2]
actorList[0] = PlayerRef
actorList[1] = akTarget
sslBaseAnimation[] anims = SexLab.GetAnimationsByTag("Anal")
SexLab.StartSex(actorList, anims)
Link to comment

This is the romantic teenage girl I left behind 40 years ago making this suggestion  :blush:   A very rare event - when you are battling with either Bandits, Forsworn or Thalmor one of the enemy leaps to your defence, helps you and then asks to become a follower/companion and switches factions to stay with you.

Link to comment

It would be nice if you baked in lover's hooks or something that offered the same functionality. right now the game tries to use locked animations and then sort of awkwardly switches it out if you don't know the animation yet, but i imagine if sexlab had the functionality built in that could be avoided. I guess that is more the fault of the mods initiating the sex without checking for lover's hooks though.

 

I have never modded before, but i am going to try and learn about some of this stuff and maybe make some more sexlab content. I am only a beginner programmer, but i imagine it will be great practice.

 

Also I posted this in the wrong thread before, so I will paste it here.

 

 

I am really impressed with this framework, and it inspired me to join. Kudos.

 

Not sure if this is the place to suggest things, but it might be cool to add some animations that are less sexy to have a base of animations that don't need to be learned- because it isn't actually that hard to stick a dick in someone, but that doesn't mean you are very good at it.

 

Also maybe "sex fumbles" that mods might put give a chance of happening when you aren't very experienced sexually yet. Think "oops, wrong hole", or premature ejaculation :P

 

EDIT: new idea. Not sure if this should be in the framework or if another mod should deal with it, but it occured to me that the school of illusion in theory would be awesome with these mods. if you could add spells that "overided" npc sexual and racial preferences for example with a spell called "personalized glamour" or something for instance, that would be amazing. Or i guess the same thing, but instead of a glamour literally changes their preferences for a set time. Because now that i think about it, glamours would be pretty OP if they existed in universe. shame though, i would love to steal someone's appearance and fuck their wife :P ok now i am rambling.

 

 

 

EDIT: it is way too easy to kill people when they are having sex. they can't fight back. Unless it is a thing that would need to be implemented modside, i think sexlab needs some interrupts. Or make them invincible? weird but whatever.

Link to comment

 

I've been thinking of some possible additions to the framework on the API side, and one I've been considering is a new way to start animations via a seperate api library to act as a sort of controller for starting animations, that will give you a lot more control over how they start. Here's a quick example of what the possibilities of this are. Most of these with the exception of animations would be optional and auto-fill if you don't call them.

; // Returns the SexLabThreadController form containing these new functions.
; // claims the animation slot from the main framework so no others can claim it.
; // DOES NOT START ANY ANIMATION UNTIL StartScene() IS CALLED AT BOTTOM
SexLabThreadController Prepare = SexLab.PrepareScene()

; // REQUIRED: Set our actors for the scene
actor[] actorList = new actor[2]
actorList[0] = PlayerRef
actorList[1] = akTarget
Prepare.SetActors(actorList)

The idea is that it will let modders claim a slot for animation, and then have complete control over all the variables of the animation, before the animation actually begins, and then decide when they want the animation to start.

 

 

Quick question: Would the SetActors() function attach the SexLab faction to the actors at this point? Or would that only happen when the StartScene() function is called. I think the former would be the most useful for those of us that would want to reserve actors prior to the actual sex starting (as I stated in an earlier response). This would also require that an "UnPrepare()" function be present if it is decided not to follow through with the sex act for whatever reason.

 

 

Link to comment

 

 

I've been thinking of some possible additions to the framework on the API side, and one I've been considering is a new way to start animations via a seperate api library to act as a sort of controller for starting animations, that will give you a lot more control over how they start. Here's a quick example of what the possibilities of this are. Most of these with the exception of animations would be optional and auto-fill if you don't call them.

; // Returns the SexLabThreadController form containing these new functions.
; // claims the animation slot from the main framework so no others can claim it.
; // DOES NOT START ANY ANIMATION UNTIL StartScene() IS CALLED AT BOTTOM
SexLabThreadController Prepare = SexLab.PrepareScene()

; // REQUIRED: Set our actors for the scene
actor[] actorList = new actor[2]
actorList[0] = PlayerRef
actorList[1] = akTarget
Prepare.SetActors(actorList)

The idea is that it will let modders claim a slot for animation, and then have complete control over all the variables of the animation, before the animation actually begins, and then decide when they want the animation to start.

 

 

Quick question: Would the SetActors() function attach the SexLab faction to the actors at this point? Or would that only happen when the StartScene() function is called. I think the former would be the most useful for those of us that would want to reserve actors prior to the actual sex starting (as I stated in an earlier response). This would also require that an "UnPrepare()" function be present if it is decided not to follow through with the sex act for whatever reason.

 

 

 

 

 

It would set their faction then and there yes. And a Prepare.erase() type function would be called to reset everything in the event the act is cancelled. Would also probably put it on a timer, so if the scene is started within 30-40 seconds or something like that of it being opened, than it would reset itself in order to prevent it get stuck open by mods not properly closing it.

Link to comment

Is this the place for feature requests? If so, I would like to propose one:

 

SexLab configuration via ini-file

  • especially: slot lists for automatic undress; ideally: as pure data (integral number)

If things like this ever take off (it has a (1 item -> n slots) relation for partial undressing by Estrus), it would be unnecessary overhead on the developer's side to extend SexLab support to whatever non-standardised slot indizes they fancy to use.

... Also allows simple fixing of issues like the current >>not unequipping arrows<< problem.

 

- Basically I grasp not why I should for every new game set the exactly same settings to the exactly same values as last time. Once should really suffice.

For those who fancy separated differing sets of settings over their games (valid enough a desire), the current functionality should be retained in case no ini-file be existing.

 

- Also, in unrelated rantings, the editor of this forum tries to kill me. It eats my links (BBCode syntax: url=<url>, when I modify a post it appears differently without any change from my side (randomly occuring stacking effect!), I cannot seem to quote with source label (quote="<source>" or quote=<source>) and it does not display BBCode syntax when I select features from its menu! ... Mayhap I get too old for the internet.

Link to comment

This is just a constructive input from your favourite aquatic offender ;)

Regarding the scaling of actors, I think it would help immensely with pc's that have custom heights (especially ones that were made using the perhaps equaly innovative mod Race Menu) If it has it's own seperate option to toggle automatic scale height. For my personal case, I found triggering automatic scaling changes my giant (nord size) breton at a disproportionate size of her partner's. Changing the animation positions fixes this, But it tampers with the actions from the rest of the actors engaged in an animation.

 

This scenario is not too large of a problem, as turning automatic scaling reduces scaling issues for irregular heights considerably. Excellent progress, and my deepest gratitude for making it possible for Skyrim to become a much more interesting world to immerse myself in.

Link to comment

1) If beds are used for animations , it would be good if they are temporarily marked as occupied, so that no persons walk over the animated persons or start their own animation on the same spot. I suppose the sexlab framework is the right spot to handle that.

 

2) A way to save realignment corrections of animations, so that they survive updating of the sexlab frame work. Disclaimer: I did not even try to realign all animations because I would have to do that again when there is an update, so if this already exists I don't know about it :-)

 

3) The random sex mod can be deactivated in MCM and with a hotkey. If this is implemented in the framework all modders could use it.

 

I suppose you have already much to much work to do, and I like the ideas of more foreplay options, blushing, and a guide for modding.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use