SakeTami
flyingparticle
flyingparticle

patreon


Update

Hi everyone, it's been a little while.

I mentioned last time that while I was implementing a hit interface for planck, I was going to do something about power attacks. I got pretty carried away with this and ended up redoing weapon swings completely, while also bringing back some lost functionality from SE like regular attack animations and bashes.

Redoing the weapon swings also fixed some issues like things happening twice, both during when a swing was detected and a hit occurring, since hits with planck are physically based and happen whether you swung your weapon hard or not. So I made some changes that should make everything "just work" properly now.


I did finish most of what I wanted to do with regards to a mod API, including supporting locational hit information, which is actually already being used by Shizof's durability mod that just released for damaging specific pieces of armor on enemies.

I had gotten some requests about implementing some kind of interface regarding physical NPC interactions that would let you respond to events such as touching specific bones of an NPC, but I'm still not sure what a good way to expose this would be, especially to papyrus scripts which would not be able to handle getting spammed with collision events if you went ham with colliding with a ton of different ragdoll bones.


Last time I mentioned spending a lot of time looking into issues such as certain characters like the frost atronach floating above the ground and NPCs getting scrunched up while in certain sitting positions. There was also an issue with Maximum Carnage bodies disappearing after certain decapitations.

I finally actually fully figured out and addressed all of these recently. The floating frost atronach was actually a symptom of a more wide-spread effect of the physical animation, which works by driving each body part towards where the animation wants it to be, but the physics simulation still makes all body parts obey their ragdoll constraints, so limbs cannot stretch for example.

Planck has actually had ragdoll constraint "loosening" (modifying the constraints just enough to allow the current animation to happen) since the beginning, and it's actually a really critical part of what makes the physical animation acceptable at all, since most animations actually violate a ton of the ragdoll constraints.

The issue though was that I was only loosening angular parts of the constraint, i.e. the animation can twist or rotate your joints past what the ragdoll would have allowed without loosening.

I was not loosening the positional parts of the constraint (the pivot points), so animations that stretch or compress limbs relative to each other (which would violate the "ball and socket" part of the ragdoll constraints) wouldn't be allowed.

Most animations (especially for humanoids) understandably don't actually do this very much, since joints in real life don't really allow for this. Some creatures like the frost atronach though have a ragdoll that conflicts with basically all of their actual animations in this regard.

I came up with a nice way to handle this as well, and this should (I really hope) kind of conclude the physical animation woes as basically any animation should be supported now.


I've since been looking at how getting up works to get it to look nicer and with less "snapping". I've mostly figured out the entire process for humanoids and have gotten that to look a bit smoother, as well as stop NPCs from trying to get up if I want them to (the detection for this is in the base game is very simple, basically if their torso and head are moving below a certain speed, they try to get up).

Part of the snapping is due to the fact that there is a kind of "move to this orientation" that happens when someone starts to get up, which takes them from their current arbitrary ragdoll state to match where they need to be to start their getting up animation The snap is there to make this less janky, since if I get rid of the cause of the snapping, there are certain cases where the body can go a bit crazy realigning itself.

I also still see issues with things like chickens which just have this really ugly snapping at multiple points during getting up, so there's still a lof of stuff to do here.

Once I get the getting up into a state that I like, I can finally think about fully bringing in the "ragdoll on grab" functionality. This is honestly going to be a lot of work and I'm not sure it's what I should necessarily be focusing most of my time on, but the reason I care about getting up so much is that it'll be happening a lot more if there's a lot more ragdolling going on.


Last thing, I also started playing around with making hand movements delayed by a certain factor. I was initially a little opposed to doing this, but it actually doesn't feel that bad, at least with the way I'm trying it out now. It's not physics based at all, just your hand lagging behind where it actually is a little bit - I'm not sure using physics for this is even the right way to go.

I think this would definitely help to give picking up heavier objects some more feeling of weight, where currently everything feels the same, and maybe apply this depending on your weapon type or speed as well, though swinging with delayed movement makes it kind of hard to actually have your weapon pass through the enemy properly.

Conveying weight is kind of hard, because you need to convey it both in how it moves in your hands, as well as how it affects other aspects of your character. Delaying hand movements is part of it, but if you can still run and jump around with a heavy object, it won't feel heavy.

There are a few pieces to the character movement like your movement speed, your turning speed, and stuff like jumping. I did add some slowing of your movement speed depending on held object weight in a past update, but the other two are not handled at the moment.

I especially see an issue with snap turning. I use snap turning personally, and I'm not really sure what the expected behavior should be if you're carrying a heavy object and try to snap turn - does the snap turn only rotate you a couple degrees (or not at all)? Do your hands + the object stay behind and you watch your hands slowly move towards you after you've rotated (doesn't seem great)?

Anyways, it's just something I've been playing around with and there's a ton more work that needs to go into it. It's a long ways out, but it's still something I wanted to mention, and again, a huge thank you to all of you for the support.

Comments

Thank you for the update! Sounds like amazing progress :D

PoGa


More Creators