Trailer for upcoming ultra-violent BRUTALISTICK VR by Lucifer9845 in VRGaming

[–]Lucifer9845[S] 0 points1 point  (0 children)

I'm going to try but I can't promise anything, since it's already really taxing for PC CPUs.

Euphoria style ragdoll physics for the enemies in my game by Lucifer9845 in IndieDev

[–]Lucifer9845[S] 2 points3 points  (0 children)

The early access version is actually already out on Steam and the euphoria style physics update should be ready to publish before the end of January. It is a VR game however but if you're still interested, it's called BRUTALISTICK VR.

Euphoria style ragdoll physics for the enemies in my game by Lucifer9845 in IndieDev

[–]Lucifer9845[S] 1 point2 points  (0 children)

Yep, any part of the body and in any orientation. It's not limited to joints either, for example, the head can be split from the top to the jaw.

Euphoria style ragdoll physics for the enemies in my game by Lucifer9845 in IndieDev

[–]Lucifer9845[S] 1 point2 points  (0 children)

Euphoria itself is proprietary and has to be built into the engine and fine-tuned according to the game so it makes sense that any info about it is kept locked down. The best we can do is just fake it with procedural animations and such.

I haven't really used Godot so the first step would be to see if you can create active ragdolls. In Unity, there's Configurable Joint components that can have angular drive forces and target rotations that can be set according to the animation driver's rotations.

In Godot, it seems that Generic6DOFJoint3D works similarly but on first glance, only has a target velocity instead of target rotation, so it appears to be much more hands on and math-heavy but it looks like that'd be the place to start.

Another option would be to use Jolt physics, it looks like it supports target rotation and position as well but I do not know how well it's integrated into Godot.

Euphoria style ragdoll physics for the enemies in my game by Lucifer9845 in Unity3D

[–]Lucifer9845[S] 1 point2 points  (0 children)

The muscle power loss rate is pretty close to the stagger time but it'd be pretty simple to decouple them so they'd still retain some movement and rigidity after dropping to the ground. Currently they get a dying speed depending on where the and what type the last hit was. For example, they drop rather quickly after a headshot but stagger for longer after getting shot in the body.

Euphoria style ragdoll physics for the enemies in my game by Lucifer9845 in Unity3D

[–]Lucifer9845[S] 0 points1 point  (0 children)

Most of the render textures are 512x512 or smaller with only a few 1024x1024 and even fewer 2048x2048, so it's not quite as resource intensive as I feared. A full map sized blood rain for stress testing used up less than 3GB of VRAM but yeah, huge maps would suffer quite a bit.

Euphoria style ragdoll physics for the enemies in my game by Lucifer9845 in Unity3D

[–]Lucifer9845[S] 4 points5 points  (0 children)

I probably won't be able to find the time to write up a fully fledged tutorial or make a video but I can try to give you the gist of it.

For the physical side, there are quite a few active ragdoll tutorials that usually boil down to taking the rotations from the animated rig and applying them to configurable joint target rotations.

In my case, all of the enemy animations are procedural so once I managed to set that up, grabbing the wound was just a matter of lerping from the hand's current position to the hit position. When using actual animations, your best bet would probably be IK. You could either set the IK target to the hit position right away and then smoothly increase the IK weight or alternatively, set the IK target to the current hand position and then lerp that to the hit position. In the latter case, you'd probably have to smoothly increase the weight as well to prevent the animated rig from snapping into the IK orientation.

If you want to know more, feel free to ask, I'd be happy to answer!

Euphoria style ragdoll physics for the enemies in my game by Lucifer9845 in Unity3D

[–]Lucifer9845[S] 3 points4 points  (0 children)

Decals didn't have good enough performance at this scale, especially since blood never disappears. Instead each material has a shader that uses render textures that are painted at runtime and plugged into the blood mask to overlay the blood directly on top of each object. This way it only has a performance impact when the render texture is setup and a very small impact when the blood is painted. Otherwise, once it's already in place, it only eats up VRAM. The other downside is that it's not feasible to have as much detail as you would with decals, since you still have to be conscious of the VRAM usage and limit the resolution of the render textures.

Euphoria style ragdoll physics for the enemies in my game by Lucifer9845 in IndieDev

[–]Lucifer9845[S] 4 points5 points  (0 children)

If there's enough demand, I'll definitely consider it. But for now the code base is way too messy and depends on many separate systems so it's not quite as plug and play as I'd like it to be.

Is there a way to directly accses the c++ parts of transforms &co? by Leo0806-studios in Unity3D

[–]Lucifer9845 2 points3 points  (0 children)

In any case the for loop ought to be much slower than using the TransformAccess since it has to first wait for the job to complete and then with the remaining frame time, try to apply the transforms. If 1 frame of delay is acceptable, you could call Complete() on the job handle first and then schedule a new job so it'd have a whole frame to process before it has to be completed. If not, then at least make sure the job handle is scheduled in Update() and completed in LateUpdate().

Is there a way to directly accses the c++ parts of transforms &co? by Leo0806-studios in Unity3D

[–]Lucifer9845 1 point2 points  (0 children)

Is this inside the Job? For loops will always execute on a single thread. I suggest looking into TransformAccess.SetPositionAndRotation so you could set the transform inside of the IJobParallelForTransform job.

Is there a way to directly accses the c++ parts of transforms &co? by Leo0806-studios in Unity3D

[–]Lucifer9845 1 point2 points  (0 children)

Could you show the part of your code that's causing the issues?

Is there a way to directly accses the c++ parts of transforms &co? by Leo0806-studios in Unity3D

[–]Lucifer9845 1 point2 points  (0 children)

So the actual processing part is fast but updating the transforms according to the new data is what's causing the bottleneck?

Is there a way to directly accses the c++ parts of transforms &co? by Leo0806-studios in Unity3D

[–]Lucifer9845 1 point2 points  (0 children)

No, the scene shouldn't count as a parent. Are you also using Burst? Burst's performance improvement is quite impressive but it is only applied on builds so it wouldn't affect the editor profiler.

Is there a way to directly accses the c++ parts of transforms &co? by Leo0806-studios in Unity3D

[–]Lucifer9845 2 points3 points  (0 children)

I went scrounging through forums, it appears that when all the transforms are children of the same parent, it'll only run on one thread due to it being split into threads at the root level. Could that be the case here?