EDIT: whoever else disliked the game after I posted it here I will break your kneecaps
I’m proud to announce that after two years of ignoring this project, my plane script from 2021 finally supports multiplayer.
I’d like to thank my friend (who happens to be an actual game developer) for helping me with this and also giving me a crash course in different aspects of Lua such as client-server communication and the difference between functions and events, he was a massive part in this update.
It’s technical but with how…terrible my brain has become, my experience’s tools are becoming too complex for me to handle.
Still, I’m trying to change their attribute layout; Some attributes will use JSON, while all boolean attributes/flags are being merged into one number (which will use bits). Just look at how many flags that I have planned out for tools so far:
(There are two GUIDs saved so I could theoretically try to detect duplicated tools. It’s very unlikely that two unrelated tools would somehow share the exact same GUIDs, so if they do, one of them is a duplicate that must be destroyed.
It’s important to optimize how these attributes are stored, since they’ll be saved with any tools that have that “SaveToProfile” flag set, then used to recreate them when the player returns.
Yeah. In essence what is it doing is converting the humanoid into the RagdollRig with align orientation and align position(or BallSockets) and then copy over the rotation.
However,
Roblox is not that simple. There are several things you have to do before getting this to work. First you have to set the collision groups for the limbs. If you do not set collision groups for the limbs it will not work. The limbs collide with each other and all the forces seemingly cancel out for some reason. The first time I did this I used the NoColiisionConstrainsts but unfortunately for R15 this does not work due to the lower legs bashing against each other. Make sure you have collisions set to false between each limb.
Next you also have to configure the custom physical properties. I have yet to do extensive testing with this but what I am currently using is 2 friction 1 friction weight along with 0 elasticity and 1 elasticity weight I am also using 0.001 density character limbs which do lead to some jittering but it is the only way to guarantee that the feet don’t slide. Before with my R6 rig I had to put a force pushing the character down for this very reason.
As you can see from the image directly in the center is the “downForce” this is necessary because another quirk of the align orientation is that it bounces a lot. Bouncing is bad due to it leading to instability and loss of traction. There is almost no way to mitigate this or you can code the forces yourself which I decided not to do for my sanity.
Rigid constraints don’t work because Roblox haven’t finish fixing them. It doesn’t work at all. There is no reaction force. Pity because out of all the useless constrainst that Roblox have made Rigid constraints are pretty much the only ones that are easy to understand and great to rely on. Rigidity enabled on the other hand for some reason (when I enable this on both AlignPosition and AlignOrientation) it freaks out and seizures. Infact in this video here you can see that happening.
I have tried everything in the book. Nothing works the feet still jitters. It’s almost as if the feet are not even attached to the character. It’s annoying and painful to see this happen. LOOK!
The problem you get is simply the Roblox physics and the engine getting in the way of everything that you do.
It is not staying still.
I have also been trying to create some IK constraints so you can control the hands. But the new IK controls don’t work when Motor6D is disabled so you have to create a completely separate Bone skeleton for the rig that is easy to do. The problem is that motor 6Ds are parented to Part1 for some reason which makes it impossible for me to travers from the root to create the skeleton. Basically it forces me to hardcode a skeletons since it is not possible. I have already tried parenting to Part0 but then the animations break and the IK does too nothing works. The only other way that I found was to set the IK control motors to be not ragdoll. I do not want to do that as then the player won’t feel the forces when something hits the hands like for example a box or a sword. The player wont be able to feel the heaviness or the weight of something.
Tools are virtually impossible to animate unless you get all the transformations which should be easy and then play them back into the GripWeld. But of couse you can play those transformations in. But you have to store them somewhere. You also have to retrieve them and you have to sort them out each for every animation.
R6 is thankfully not as complicated or difficult. The stability issue is much more easiler to solve with R6. But the only issue still is that R6 does not come with premade joints. and it comes with welds instead. So what I did was create an attachment for every single weld that the R6 had and then put it in the naming scheme.
Well it took me a while to figure out some of the nuances and caveats of the system. (This is not the normal ragdoll rig.) and then playing an animation on the humanoid and cloning the animation rotation in the joints into the rig. You can get the smoothness of the joints set to AlignOrientation
One last thing to note is to make sure that your baseplate and floors don’t have any collision weight in the custom physical properties as that leads to loss of traction too.
TLDR: I am not using RigidityEnabled. Roblox engine was not designed for these type of technical applications. But, if they could improve it just even a little bit. Then I would be much more happy.
I can PM you the code if you want. But it is an eyesore. I did manage to keep the R15 about 200 lines. R6 has 300 but R6 is only available on the the server sided version and does not need any hassle.
Animations are not included in the R15 one I am using the default Roblox animations.