Allnarta Posted February 13, 2025 Posted February 13, 2025 (edited) I really like structure for staged animations, but one crucial thing is, staged progressive animation have to have one idx for SexountNG. I.e. if SNG125 is staged, SNG still should treat it as one IDX (125) number. Sexout is very cluttered in ternm of animation IDX numbers, so trying to occupy more than one IDX for staged (progressive) anims sounds like a nightmare, to be honest. Edited February 13, 2025 by Allnarta typos .-.
Machiavelique Posted February 13, 2025 Author Posted February 13, 2025 (edited) I'm not sure I understand the problem Is it in relation to the existing animation number? For example, anims 125, 126, 127, 128 are not ‘Stage Animations’ and I want 126 to become one? Either in the ini file you put what is still available: [1] idx=126 ; [2] idx= 3472 ; [3] idx = 3473 Otherwise, I can change the SexoutNG idx into fIdx (I think it would be better) This way we could have 126, 126.1, 126.2 etc. And why not 126, 126.001, 126.002... I've also just thought of something else that could be problematic (but this may also be what you want to point out) Let's imagine a ‘Stage Animation’ with 125, 126, 127, 128 When Sexout runs 126, there's no guarantee that 125 will be finished and you might not have a smooth transition from animation '125' to the next. There are a lot of things I haven't mastered yet and animations are one of them. From what I've seen, Sexout's animations are designed to loop forever, and I haven't yet found a function to change ‘loop forever’ from a script. However, it is possible to set the number of loops. In the worst case, you should try not to activate ‘loop forever’ for ‘Stage Animations’. In SexoutNG I could regularly force the number of loops to a fairly high number (for example 10), and as soon as the animation is due to the end I would set it to ‘1’. Then I check if animation 125 is still active and as soon as it is finished I tell Sexout to run the next one. I don't know what it will do but it would be worth a try... Edited February 13, 2025 by Machiavelique
Allnarta Posted February 13, 2025 Posted February 13, 2025 8 minutes ago, Machiavelique said: Is it in relation to the existing animation number? Yes, of course: in your example you listed 126, 127 etc. as stages for 125, when in reality they are already separate animations that exist. Thinking that stages will take brand new IDX would make me give up on even trying staged animations for sure, because it will become absolute horror to maintain and add new animations. 9 minutes ago, Machiavelique said: This way we could have 126, 126.1, 126.2 etc. This is exact way I imagine staged aka progressive animations, to be honest. One actual IDX, one animation in terms of Sexout, but sub-numbers/sub-ID's for stages that occupy separate .kf file sets. 27 minutes ago, Machiavelique said: Let's imagine a ‘Stage Animation’ with 125, 126, 127, 128 I think it is wrong approach. Progressive animation means one animation IDX, one animation number, for SNG it has to be treated just like non-progressive animations, but few .kf files sets that are change each other during stage progression. 10 minutes ago, Machiavelique said: From what I've seen, Sexout's animations are designed to loop forever, and I haven't yet found a function to change ‘loop forever’ from a script. This is relevant only for animation .kf files, and has nothing to do with how progressive anims have to be designed. But, for progressive animations, it will be separate idles anyway. I imagined it to be an idle tree, just like it work now, but one stage deeper. Now idle tree loks like this: -SNG125 ---SNG125a ---SNG125b It can (and should in my opinion) be expanded to this: -SNG125 ---SNG125a -----SNG125a_st1 -----SNG125a_st2 -----SNG125a_st3 ---SNG125b -----SNG125b_st1 -----SNG125b_st2 -----SNG125b_st3 So we still have normal single IDX animation, but SNG will know that it has prgression stages, so will change a/b/(c) sets, aka .kf files, with sequence progress. I see no other way progressive staged animation can exist, other ways will create horrifying mess.
DoctaSax Posted February 13, 2025 Posted February 13, 2025 2 hours ago, Machiavelique said: There are a lot of things I haven't mastered yet and animations are one of them. From what I've seen, Sexout's animations are designed to loop forever, and I haven't yet found a function to change ‘loop forever’ from a script. IIRC, atm sexout repeats the 'playidle' command throughout the act, and at the end kills it off by playing the reset anim & doing something or other that makes the actors collapse to truly be rid of anything lingering. Which means that if you simply 'playidle' a new anim, it should just take over. There might be a slight delay when the anim's in the middle of being played but if sexout continues to spam the playidle command with the new anim it's probably not even visible. The advantage so far has been that every anim has a short cycle. Regarding furniture, it seems to me that anims may well play on various furniture base forms, so perhaps instead of a single formID of a furniture base form, people could supply a string of several, delimited by a comma, which NG could then split with sv_split and have an array as a result. It's also worth considering that furniture can also be added by DLCs and mods, so perhaps a RefToString format is best rather than a raw formID which would only work for FNV's main .esm. 1
Machiavelique Posted February 13, 2025 Author Posted February 13, 2025 (edited) 4 hours ago, Allnarta said: It can (and should in my opinion) be expanded to this: -SNG125 ---SNG125a -----SNG125a_st1 -----SNG125a_st2 -----SNG125a_st3 ---SNG125b -----SNG125b_st1 -----SNG125b_st2 -----SNG125b_st3 I want to be sure to understand. SNG125a and SNG125b do not contains anims, right ? In my mind, It's just to organise your tree NG does not currently store the idle + actor letter in its arrays. It just stores the idle (SNG701). NG knows from the Key ‘Pos’ in Animdef that the anim contains an ActorA and an ActorB. When NG needs to start an animation, it just needs to add the letter to the idle so that the actors have the corresponding animation (so NG plays SNG701a on ActorA and SNG701b on ActorB. I'd like to keep the same principle for 'stage animations' in order to maintain a standard DATA/Config/Sexout/StageAnimations/Sexout.esm/SNG125.ini we got: [1] Idle = 125.1 ; Means SNG125a1 will be played on actorA - SNG125b1 will be played on actorB duration = 7 furniture = MyEditorIDCoach1, MyEditorIDCoach2, MyEditorIDBed1, MyEditorIDBed2 [2] Idle = 125.2 ; Means SNG125a2 will be played on actorA - SNG125b2 will be played on actorB duration = 7 [3] Idle = 125.3 ; Means SNG125a3 will be played on actorA - SNG125b3 will be played on actorB duration = 7 [4] Idle = 125.4 ; Means SNG125a4 will be played on actorA - SNG125b4 will be played on actorB duration = 7 In your tree, you would have : 4 hours ago, Allnarta said: -SNG125 (empty anim) ---SNG125a (empty anim) -----SNG125a1 -----SNG125a2 -----SNG125a3 -----SNG125a4 ---SNG125b (empty anim) -----SNG125b1 -----SNG125b2 -----SNG125b3 -----SNG125b4 If we want the animations to always follow in order, we can even simplify the .ini in: Spoiler SNG125.ini [1] ; Means SNG125a1 will be played on actorA - SNG125b1 will be played on actorB duration = 7 furniture = MyEditorIDCoach1, MyEditorIDCoach2, MyEditorIDBed1, MyEditorIDBed2 [2] ; Means SNG125a2 will be played on actorA - SNG125b2 will be played on actorB duration = 7 [3] ; Means SNG125a3 will be played on actorA - SNG125b3 will be played on actorB duration = 7 [4] ; Means SNG125a4 will be played on actorA - SNG125b4 will be played on actorB duration = 7 I prefer the 1st where the mod author can specify the anim. It gives more flexibility and it's also easier to read. I'm still worried about the fluidity of the animations. I've seen animations on Fo4 where I get the impression that there are ‘transition’ anims. For example : Anim XXX_1 (sex anim that can loop several times before moving on to the next) Anim XXX_2 (transistion anim where the actors move from one posture to another, no looping) Anim XXX_3 (sex animation that can loop several times before moving on to the next) I don't know if that's your intention or not, there is a BlendToAnim with kNVSE but need to be tested.It would be annoying if the framework were set up and we realise that the stage animations couldn't change smoothly. Edited February 13, 2025 by Machiavelique 1
Allnarta Posted February 13, 2025 Posted February 13, 2025 3 minutes ago, Machiavelique said: I want to be sure to understand. SNG125a and SNG125b do not contains anims, right ? In my mind, It's just to organise your tree When we talk about staged animation - correct, SNG125a/b would become parents to idles that actually contain .kf files, i.e. _st1 etc. (those are store .kf files for every stage and role). For non-staged animations (as it is now) SNGa/b do contain animation files. 7 minutes ago, Machiavelique said: I'm still worried about the fluidity of the animations. I've seen animations on Fo4 where I get the impression that there are ‘transition’ anims. Some of F4 animations indeed have full transition "in-between" idles, but not all of them. I'm not sure if I'll manage to even make this advanced transitions, to be honest; In Skyrim Sexlab, most of animations do not have those fancy transitions, but are still multi-staged. Keep in mind that multi-staged animations will be an additional feature, they will not replace current one-staged animations. 11 minutes ago, Machiavelique said: DATA/Config/Sexout/StageAnimations/Sexout.esm/SNG125.ini we got: This looks good to me, having control and keeping it clean and in order is best solution. 1
2Dimm Posted February 14, 2025 Posted February 14, 2025 (edited) i know Machiavelique said he wans't planning to completely overhaul sexout, but some more modern fuctions could maybe be considered, ActivateAnim or other kNVSE fuctions could even allow sexout to run without relying on hard references on the ESP, allowing new animations to be easily added by authors like how it works with fallout 4's AAF/NAF, these also don't need workarounds to repeat and can be safely ended at any time (they also have cool blend transitions between animations which would be a great help for staged animations) Edited February 14, 2025 by 2Dimm 1
Machiavelique Posted February 15, 2025 Author Posted February 15, 2025 kNVSE's features offer some interesting possibilities, but I think animation designers are the ones who can best appreciate its full potential. Relying animations to hard references in NG is especially useful for sorting them easily and giving Mod Authors the possibility of telling NG ‘Choose for me an animation that matches the following criteria’. So, mods initiating sex don't need to know anything about the anims (either their EditorID or their path to .kf file). Of course it's also possible to ask NG to start a specific animation, and in this case this animation will also run and stop according to NG's decisions. But it might also be possible, as you say, for the animation to be completely managed by the Mod Auhtor (start/stop and everything else). I don't think a Mod Author has done this in the past, but it could have been possible, even with the PlayIdle function. For Blend transitions, I agree that it is necessary to use the kNVSE functions. I don't intend to implement it at the moment because I need Blend transitions to play with these functions and learn how to use them correctly. 1
2Dimm Posted February 15, 2025 Posted February 15, 2025 5 hours ago, Machiavelique said: kNVSE's features offer some interesting possibilities, but I think animation designers are the ones who can best appreciate its full potential. Relying animations to hard references in NG is especially useful for sorting them easily and giving Mod Authors the possibility of telling NG ‘Choose for me an animation that matches the following criteria’. So, mods initiating sex don't need to know anything about the anims (either their EditorID or their path to .kf file). Of course it's also possible to ask NG to start a specific animation, and in this case this animation will also run and stop according to NG's decisions. But it might also be possible, as you say, for the animation to be completely managed by the Mod Auhtor (start/stop and everything else). I don't think a Mod Author has done this in the past, but it could have been possible, even with the PlayIdle function. For Blend transitions, I agree that it is necessary to use the kNVSE functions. I don't intend to implement it at the moment because I need Blend transitions to play with these functions and learn how to use them correctly. oh of course! just throwing ideas around, each animation and sequence would have a matching configuration files which sexout reads (and caches) on load, sexout would still know all animations it has available and mod authors would still be able to just call a animation by criteria, some authors read settings using GetINIFloat to read from their custom config files, i'm sure there are other ways too but this one is pretty straight forward and would be a pretty similar system to how it works with fallout 4
DoctaSax Posted February 15, 2025 Posted February 15, 2025 8 hours ago, Machiavelique said: Relying animations to hard references in NG is especially useful for sorting them easily and giving Mod Authors the possibility of telling NG ‘Choose for me an animation that matches the following criteria’. I don't think it's particularly necessary for NG to 'host' anim files in the .esm anymore if they can now be called by file paths with kNVSE functions, but I'll grant that it'd be quite a bit of leg-work to switch over to such a system. The structure as it is now is basically the result of our options being far more limited in the past. Imagine putting all this together when we didn't have i/o functions, string functions, and array functions.
Machiavelique Posted February 15, 2025 Author Posted February 15, 2025 (edited) I misunderstood. I thought that “2Dimm” was talking about the content of the “AnimDef” which is stored in arrays, and proposed putting all AnimDef content in .ini files that would be read at each Game Load (allowing easy modification of AnimDef parameters). I agree that NG doesn't need to host animation files in .esm anymore. It's already the case for AllNarta animations: All animations are declared in .esp and the animation files are in the package. NG only has the AnimDef parameters in the Sexout arrays given to it using fnSexoutAddAnimToMod Edited February 16, 2025 by Machiavelique
DoctaSax Posted February 16, 2025 Posted February 16, 2025 1 hour ago, Machiavelique said: I thought that “2Dimm” was talking about the content of the “AnimDef” which is stored in arrays, and proposed putting all AnimDef content in .ini files that would be read at each Game Load (allowing easy modification of AnimDef parameters). Yeah, I'm sort of musing along those lines as well (GetFilesInFolder > loop > GetIniSectionNames > loop > GetIniSection), even though as said it'd mean work.
Machiavelique Posted February 16, 2025 Author Posted February 16, 2025 (edited) I agree that putting everything in ini is an interesting idea for customisation. We could even add a ‘Time Duration’ to the animation settings and therefore overwrite the Sexout's ‘Time Duration’. We also could add kNVSE parameters inside too. But I'm also wondering about the duration of the freeze this would cause at each start of the game. From my short experience of reading/writing .ini files, I've found that excessive use quickly causes latency. But declaring AnimDef in a script isn't much more complicated than declaring it in an .ini (it's just that one needs geck and the other needs a text editor). I'm not sure that the amount of work involved is worth the benefits. What I am sure of is that I wouldn't have the courage to implement it, because as you say, it's a lot of work. If it had been 10 or 15 years ago, I might have reconsidered the question, but if it had been 10 or 15 years ago, we wouldn't have had the opportunity to implement all these features either. The addition of ‘Stage Animations’ and ‘Scene Animation’ is already a significant amount of work with benefits that I believe to be greater. Edited February 16, 2025 by Machiavelique
DoctaSax Posted February 16, 2025 Posted February 16, 2025 I entirely understand any reticence about transposing all that intel from script to .ini - I did a big chunk of the work of putting it all in script in the first place. What I would suggest, however, is that NG does something similar for new anims to be added in the future only, circumventing the need to alter the. esm itself for every new anim, or provide an extra .esp to do so (considering the .esp limit). It just keeps an eye on a folder, and if there's something there at load, it adds it to the overall structure. Permanently, even, so that the file(s) could then be removed after. Basically an auto-self-update for accepting new anims.
Machiavelique Posted February 16, 2025 Author Posted February 16, 2025 You're right, it's always possible to develop the function and only use it to add new anims (even if it would be better to standardise everything). If we choose to add existing anims in ini, I wonder if creating the reverse function wouldn't save time compared to writing them manually (it would prevent any typo errors). Here's the structure I'm imagining at the moment (but I don't like it): +Sexout +DefAnimations +Sexout.esm +Sexout-Amra.esp +ZAZ +Pregnancy +AllNartaSexoutAnimations.esp +AllTentacles +NewPluginAnimations NPA101.ini NPA102.ini NPA103.ini NPA104.ini NPA105.ini +StageAnimations +Sexout.esm +Sexout-Amra.esp +ZAZ +Pregnancy +AllNartaSexoutAnimations.esp +AllTentacles +NewPluginAnimations NPA102.ini NPA103.ini NPA104.ini +SceneAnimations +Sexout.esm +Sexout-Amra.esp +ZAZ +Pregnancy +AllNartaSexoutAnimations.esp +AllTentacles +NewPluginAnimations I don't like it because Anim 102, 103 and 104 appear in different places, it would be more logical for them to be declared in the animDef (inside the 102.ini). This would mean reviewing the structure of the .ini file and planning to manage double declarations in esp and the .ini file. Should AllNarta deletes AnimDef in the .esp and put them in the ini (with the new structure to declare Stage Animations) ? As the animations will be saved permanently, it will be necessary to be able to delete them and reload them (users will have direct access to the .ini). Although this isn't the most complicated part. Setting up all the algorithms for splitting strings of characters, recovering all the Keys, and arranging them in tables, while also doing everything necessary to develop stage animations and scene animations, is a huge job.
DoctaSax Posted February 17, 2025 Posted February 17, 2025 2 hours ago, Machiavelique said: If we choose to add existing anims in ini, I wonder if creating the reverse function wouldn't save time compared to writing them manually (it would prevent any typo errors). That could be very possible as an export feature triggered from MCM or some such that'd allow people to alter some things if they want. Not entirely sure what I'm looking at with the structure you've shown. Folder structure, anim tree structure, ...? I imagine that any .esp so far that's added anims could do without containing the anim editorIDs, adding animdef intel, or keeping anims dependent on specific furniture (ZAZ?), skeleton/penis bones (Amra?), or circumstances (Preg?) that would make them non-random - that intel would be in .inis and so end up in the animdef. The same goes for being flagged as a StageAnim. SceneAnims, I dunno. I guessed that'd be more of a mix & match that NG does based on animdef intel.
Allnarta Posted February 17, 2025 Posted February 17, 2025 9 hours ago, Machiavelique said: I don't like it because Anim 102, 103 and 104 appear in different places I also think that details like if animation staged or not better to be declared in current animation ini itself. As for .ini or esp storing for animations, it's up to you to decide. Only thing that can be wacky is that if user have full access to ini, they can change animation settings, which may be against mod author intentions sometimes (for ex. avaible sexes or creature types for current animation in "flags" section). Not a big deal though, if we suggest that it's on user and no support will be provided if user set up things against how author designed it.
Machiavelique Posted February 17, 2025 Author Posted February 17, 2025 (edited) 9 hours ago, DoctaSax said: Not entirely sure what I'm looking at with the structure you've shown. Folder structure, anim tree structure, ...? I imagine that any .esp so far that's added anims could do without containing the anim editorIDs, adding animdef intel, or keeping anims dependent on specific furniture (ZAZ?), skeleton/penis bones (Amra?), or circumstances (Preg?) that would make them non-random - that intel would be in .inis and so end up in the animdef. The same goes for being flagged as a StageAnim. SceneAnims, I dunno. I guessed that'd be more of a mix & match that NG does based on animdef intel. Sorry, I'm talking about Folder structure, current anim tree structure seems good to me. Regarding ZAZ and Amra, I don't know. I didn't yet anlayse how these anims with skeleton/penis bones or circumstances work (I assume it's additionnal flags). 1 hour ago, Allnarta said: As for .ini or esp storing for animations, it's up to you to decide. I could add some features for NG be able to manage double declaration in .esp and .ini, but I don't want to do it if the aim is to remove AnimDef from .esp in the long term. 1 hour ago, Allnarta said: Only thing that can be wacky is that if user have full access to ini, they can change animation settings, which may be against mod author intentions sometimes (for ex. avaible sexes or creature types for current animation in "flags" section). Not a big deal though, if we suggest that it's on user and no support will be provided if user set up things against how author designed it. Indeed, and that's also why anims should be able to be deleted if users add non-existent anims or put in incompatible things. We'll get the folder structure below: +Sexout +DefAnimations +Sexout.esm +Sexout-Amra.esp +ZAZ +Pregnancy +AllNartaSexoutAnimations.esp +AllTentacles +NewPluginAnimations NPA101.ini NPA102.ini NPA103.ini NPA104.ini NPA105.ini And the contents of the inis could look like this: Spoiler DATA/Config/Sexout/DefAnimations/NewPluginAnimations/NPA101.ini : Idx = 101 Actors = ghoulM, ghoulF PosA = kneel PosB = layup AdjA = HOffset:-91.40, ZRot:4.8 AdjB = HOffset:5.6, HAngle:90 Flags = ghoul, miss, lay, vaginal, anal, rape Desc = Violent ghoul on top 1 ;Furniture = DATA/Config/Sexout/DefAnimations/NewPluginAnimations/NPA102.ini : idx = 102 StageAnim = 102, 103, 104 Actors = nvsporecarrierM, nvsporecarrierF PosA = squat PosB = proneup AdjA = HOffset:63.984, HAngle:-173.719, VOffset:6.4, ZRot:6.6 Flags = nvsporecarrier, doggy, lay, vaginal, anal, rape Desc = Doggystyle hands bound behind 1 Duration = 20 Furniture = Bed001, Bed005 DATA/Config/Sexout/DefAnimations/NewPluginAnimations/NPA103.ini : Idx = 103 StageAnim = 102, 103, 104 Actors = nvsporecarrierM, nvsporecarrierF PosA = squat PosB = proneup AdjA = HOffset:-65.8, VOffset:5.6 ; Should be useless cause offsets should probably the same that 102 Flags = nvsporecarrier, doggy, lay, vaginal, anal, rape Desc = Doggystyle hands bound behind 2 Duration = 70 Furniture = Bed001, Bed005 DATA/Config/Sexout/DefAnimations/NewPluginAnimations/NPA104.ini : Idx = 104 StageAnim = 102, 103, 104 Actors = nvsporecarrierM, nvsporecarrierF PosA = squat PosB = proneup AdjA = HOffset:-65.8, VOffset:11.2, ZRot:2.8 ; Should be useless cause offsets should probably the same that 102 AdjB = HOffset:4, HAngle:90 ; Should be useless cause offsets should probably the same that 102 Flags = nvsporecarrier, doggy, lay, vaginal, anal, rape Desc = Doggystyle hands bound behind 3 Duration = 10 Furniture = Bed001, Bed005 (We could get the idle just from the file name ) But I admit that declaring 'adjs' this way would be easier for me to deal with: HOffsetA = -91.40 ZRotA = 4.8 HOffsetB = 5.6 HAngleB = 90 The animation files will be updated via an option in MCM 'Allow animation files to be updated on next game start'. Then, player save the game and reload. (This way the update is much simpler for me: I delete everything and reload from the anim files.) Edited February 17, 2025 by Machiavelique
Allnarta Posted February 17, 2025 Posted February 17, 2025 I still don't fully understand how IDX for animation can be 102, but stages are 104, 104 etc. We have Anim102, which has few stages of progression from more subtle/slow movements, to more intense, inside one AnimDef setting. For example, I have animation 102, and this animation has stages (102.1 etc.), but 102 and 104 are absolutely different animations, they may even have different flags and sex/creature type? Any of them can also be staged or non-staged. Thing that you prvide will work for scene anims, where few actual animation numbers are just combined to one scene. Progressive/staged animation has to be one IDX, it's technically one animation, just few .kf files used in a row for every actor. If you still want stages to be just different animation ID's combined to one sequence, I don't understand a difference between scene and staged animations then, and I see no point in adding progressive animations at all, it's better to leave it alone and stick to one-staged anims forever. Idea was, progressive anim is one IDX, scene anim is few IDX's combined to one scene.
Machiavelique Posted February 17, 2025 Author Posted February 17, 2025 (edited) My bad, I forgot this approach poses a problem with existing animations that have the same Idx for the same plugin. I should write We'll get the folder structure below: +Sexout +DefAnimations +Sexout.esm +Sexout-Amra.esp +ZAZ +Pregnancy +AllNartaSexoutAnimations.esp +AllTentacles +NewPluginAnimations NPA101.ini NPA102.1.ini NPA102.2.ini NPA102.3.ini NPA104.ini NPA105.ini And the contents of the inis could look like this: Spoiler DATA/Config/Sexout/DefAnimations/NewPluginAnimations/NPA101.ini : Idx = 101 Actors = ghoulM, ghoulF PosA = kneel PosB = layup AdjA = HOffset:-91.40, ZRot:4.8 AdjB = HOffset:5.6, HAngle:90 Flags = ghoul, miss, lay, vaginal, anal, rape Desc = Violent ghoul on top 1 ;Furniture = DATA/Config/Sexout/DefAnimations/NewPluginAnimations/NPA102.1.ini : idx = 102.1 StageAnim = 102, 103, 104 Actors = nvsporecarrierM, nvsporecarrierF PosA = squat PosB = proneup AdjA = HOffset:63.984, HAngle:-173.719, VOffset:6.4, ZRot:6.6 Flags = nvsporecarrier, doggy, lay, vaginal, anal, rape Desc = Doggystyle hands bound behind 1 Duration = 20 Furniture = Bed001, Bed005 DATA/Config/Sexout/DefAnimations/NewPluginAnimations/NPA102.2.ini : Idx = 102.2 StageAnim = 102, 103, 104 Actors = nvsporecarrierM, nvsporecarrierF PosA = squat PosB = proneup AdjA = HOffset:-65.8, VOffset:5.6 ; Should be useless cause offsets should probably the same that 102 Flags = nvsporecarrier, doggy, lay, vaginal, anal, rape Desc = Doggystyle hands bound behind 2 Duration = 70 Furniture = Bed001, Bed005 DATA/Config/Sexout/DefAnimations/NewPluginAnimations/NPA102.3.ini : Idx = 102.3 StageAnim = 102, 103, 104 Actors = nvsporecarrierM, nvsporecarrierF PosA = squat PosB = proneup AdjA = HOffset:-65.8, VOffset:11.2, ZRot:2.8 ; Should be useless cause offsets should probably the same that 102 AdjB = HOffset:4, HAngle:90 ; Should be useless cause offsets should probably the same that 102 Flags = nvsporecarrier, doggy, lay, vaginal, anal, rape Desc = Doggystyle hands bound behind 3 Duration = 10 Furniture = Bed001, Bed005 But anyway, I don't like the structure and I don't think you do either. Idx dont' don't really pose a problem for me (I even think it can be removed), what's important is the idle which must correspond to the EditorID of the animation. To launch an animation I either need its EditorID or the name of the .kf file and its path. 1 unique idle per .kf file If I've understood correctly how the ‘animation stages’ should work: - stage 1 is a .kf file - stage 2 is another .kf file - stage 3 is another .kf file For NG, the big difference between ‘scene Animations’ and ‘Stage Animations’ is that stage animations will have specific animations launched in a given order (if we launch 102.1, then we'll launch 102.2 then 102.3 and not anything else). Animations 102.1, 102.2 and 102.3 can loop over themselves several times before launching the next one. The transition from 102.1 to 102.2 will be based on a Time Duration defined in the .ini file. The Time Duration will be a percentage of the SexoutNG Time Duration (102.1 = 15%, 102.2 = 75%, 102.3 = 10%). If I'm wrong about what I've just written, don't hesitate to correct me. The ideal would be to achieve that: Spoiler Folder Structure: +Sexout +DefAnimations +Sexout.esm +Sexout-Amra.esp +ZAZ +Pregnancy +AllNartaSexoutAnimations.esp +AllTentacles +NewPluginAnimations NPA101.ini NPA102.ini NPA103.ini NPA104.ini NPA105.ini DATA/Config/Sexout/DefAnimations/NewPluginAnimations/NPA101.ini : Idx = 101 Idle = NPA101 Actors = ghoulM, ghoulF PosA = kneel PosB = layup AdjA = HOffset:-91.40, ZRot:4.8 AdjB = HOffset:5.6, HAngle:90 Flags = ghoul, miss, lay, vaginal, anal, rape Desc = Violent ghoul on top 1 ;Furniture = DATA/Config/Sexout/DefAnimations/NewPluginAnimations/NPA102.ini : [StageAnim] idx = 102 Actors = nvsporecarrierM, nvsporecarrierF PosA = squat PosB = proneup AdjA = HOffset:63.984, HAngle:-173.719, VOffset:6.4, ZRot:6.6 Flags = nvsporecarrier, doggy, lay, vaginal, anal, rape Desc = Doggystyle hands bound behind Furniture = Bed001, Bed005 [StageAnim.1] idx = 102 Idle = NPA102.1 Duration = 20 [StageAnim.2] Idx = 102 Idle = NPA102.2 Duration = 70 [StageAnim.3] Idx = 102 Idle = NPA102.3 Duration = 10 This seems to be the best structure, but I still have no idea how I'm going to organise this information in Sexout. I probably need to keep Idx. Edited February 17, 2025 by Machiavelique 1
Allnarta Posted February 17, 2025 Posted February 17, 2025 24 minutes ago, Machiavelique said: If I've understood correctly how the ‘animation stages’ should work: - stage 1 is a .kf file - stage 2 is another .kf file - stage 3 is another .kf file Yes, it's exactly how animations work for all other frameworks (Oblivion, Skyrim, Fallout 4). So technically, progressive stages for certain animation are separate files, just like A and B .kf files are separate, but anim ID is still same. Staged animations supposed to be same approach as a/b here as it's same concept. For everything else, looks like it's all correct - latest variants of ini files do look legit to achieve what staged animation is. Only issue I can potentially see is I'm not sure how game/GECK will handle .1, .2 etc naming because of additional dot, but it should be easy to just use suffix instead if it will cause CTD or other issues.
Machiavelique Posted February 17, 2025 Author Posted February 17, 2025 33 minutes ago, Allnarta said: For everything else, looks like it's all correct - latest variants of ini files do look legit to achieve what staged animation is. Only issue I can potentially see is I'm not sure how game/GECK will handle .1, .2 etc naming because of additional dot, but it should be easy to just use suffix instead if it will cause CTD or other issues. For NPA102, the animation tree will look like to: +NPA102 +NPA102a NPA102a1 NPA102a2 NPA102a3 +NPA102b NPA102b1 NPA102b2 NPA102b3 NG will just replace the '.' by the letter of the actor (knowing the number of actor with PosA and PosB in the .ini) This way, if you or someone in the futur add an actorC in stage animation 102 (eg: actorC could just watching). There will be no changes to make in NG. Just declare in geck +NPA102 +NPA102a NPA102a1 NPA102a2 NPA102a3 +NPA102b NPA102b1 NPA102b2 NPA102b3 +NPA102c NPA102c1 NPA102c2 NPA102c3 and in the ini: 1 hour ago, Machiavelique said: DATA/Config/Sexout/DefAnimations/NewPluginAnimations/NPA102.ini : [StageAnim] idx = 102 Actors = nvsporecarrierM, nvsporecarrierF PosA = squat PosB = proneup PosC = stand AdjA = HOffset:63.984, HAngle:-173.719, VOffset:6.4, ZRot:6.6 Flags = nvsporecarrier, doggy, lay, vaginal, anal, rape Desc = Doggystyle hands bound behind Furniture = Bed001, Bed005 [StageAnim.1] idx = 102 Idle = NPA102.1 Duration = 20 [StageAnim.2] Idx = 102 Idle = NPA102.2 Duration = 70 [StageAnim.3] Idx = 102 Idle = NPA102.3 Duration = 10 Then enable the option 'Update Files Animation at the next game start' (with PosC Sexout will now know there is actorC for anim 102 and will try to start NPA102c1, NPA102c2, NPA102c3 when anim 102 starts) However, I've just realised what 2Dimm and DoctaSax were getting at: Instead of EditorID and Idx, we could just indicate the name of the .kf file and the path in the .ini file. This way you don't even need to make any changes in the geck, just in the .ini. 2
Machiavelique Posted February 17, 2025 Author Posted February 17, 2025 Problem is anims don't alway have the same path Example for Amra5301: Data\Meshes\characters\_male\idleanims\SexoutAmra\givers\lay\5301a.kf Data\Meshes\characters\_male\idleanims\SexoutAmra\takers\lay\5301b.kf Data\Meshes\characters\_male\idleanims\SexoutAmra\givers\lay\5301a.kf We therefore need to take this into account for the ini file or change the path
Allnarta Posted February 17, 2025 Posted February 17, 2025 (edited) Yes, originally SNG didn't care about .kf path at all, as it only cared about Idle EditorID, so paths for different SNG animations from different authors are different to say the least (everyone just named folders and files to own preference without universal system). At worst, it's always possible to just rename existing .kf files to new, universal naming/folders I guess. Edited February 17, 2025 by Allnarta 1
Machiavelique Posted February 17, 2025 Author Posted February 17, 2025 So we need : Folder Structure: +Sexout +DefAnimations +Sexout.esm +111 111a.kf 111.ini +112 112a.kf 112.ini +113 113a.kf 113.ini +1501 1501a1.kf 1501a2.kf 1501a3.kf 1501b1.kf 1501b2.kf 1501b3.kf 1501.ini +5301 5301a.kf 5301b.kf 5301c.kf 5301.ini +Sexout-Amra.esp (same convention) +ZAZ (same convention) +Pregnancy (same convention) +AllNartaSexoutAnimations.esp (same convention) +AllTentacles (same convention) By following this convention, we don't need to indicate the path and name of the .kf files in the ini. When an update request for animations is made, NG will necessarily know the paths of the files it is reading. Let's suppose 111 is a classic animation and 1501 is a stage animation DATA/Config/Sexout/DefAnimations/Sexout.esm/111/111.ini : Actors = F PosA = lay Flags = masturbation, lay Desc = Female laying on back fingering ;Furniture = DATA/Config/Sexout/DefAnimations/Sexout.esm/1501/1501.ini : [StageAnim] Actors = nvsporecarrierM, nvsporecarrierF PosA = squat PosB = proneup AdjA = HOffset:63.984, HAngle:-173.719, VOffset:6.4, ZRot:6.6 Flags = nvsporecarrier, doggy, lay, vaginal, anal, rape Desc = Doggystyle hands bound behind Furniture = Bed001, Bed005 [StageAnim.1] Anim = 1501.1 Duration = 20 [StageAnim.2] Anim = 1501.2 Duration = 70 [StageAnim.3] Anim = 1501.3 Duration = 10 This way, if someone want add an ActorC (watching) for [sexout.esm][1501], he just need to 3x copy/past 5603c.kf in DATA/Config/Sexout/DefAnimations/Sexout.esm/1501 Then rename each 5603c.kf in : - 1501c1.kf - 1501c2.kf - 1501c3.kf Then in the ini... DATA/Config/Sexout/DefAnimations/Sexout.esm/1501/1501.ini : [StageAnim] Actors = nvsporecarrierM, nvsporecarrierF PosA = squat PosB = proneup PosC = stand AdjA = HOffset:63.984, HAngle:-173.719, VOffset:6.4, ZRot:6.6 AdjC = ; ActorC will need offsets to be determined for this animation Flags = nvsporecarrier, doggy, lay, vaginal, anal, rape Desc = Doggystyle hands bound behind Furniture = Bed001, Bed005 [StageAnim.1] Anim = 1501.1 Duration = 20 [StageAnim.2] Anim = 1501.2 Duration = 70 [StageAnim.3] Anim = 1501.3 Duration = 10 1
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now