Dynamic Rope/Cable Plugin

Check out the evolution of this plugin: VICODynamics: a particle based Soft-Body physics Plugin - Game Development - Epic Developer Community Forums

Hello Everyone, I’m very excited to show off something I have been working on for our next game, Action Arcade Wrestling 3 (AAW3): which is being developed in collaboration with Dave Horn (Action937) who is the originator of the Action Arcade Wrestling series.

We needed a better system for our ropes around the ring which are currently simple SkeletalMeshes with Animations for the bounces and so on. But we wanted something better that would be more interactive.

I set out to research and implement such a system. I started with the CableComponent which comes with UE4 and it had the look and physics we wanted but it did not interact with any other actors. Long story short, I ended up completely rewriting the physics, including wind and force interaction, and implementing collision. The rendering was also optimized to further push performance.

This was all well and good except for the fact that we lost the ability to have precise animations on the ropes for special moves. For this I implemented the SkeletalRopeComponent, it allowes us to specify a SkeletalMesh and an Animation to which the rope will conform too if enabled. We can now easily switch between a “fixed” animated rope and a fully dynamic simulated one as we wish. Really awesome feature for us!

Purchase pre-UE4 Marketplace release:

This page also has a more in-depth dev blog on how the core of this Rope System was created.
Link: https://www.vicogamestudio.com/development-blog/item/dynamic-rope-cable-system-for-ue4

The result can be seen here (First demo, many features added after this one):

Getting Started video:

Please let us know your thoughts and post features you would like implemented.

Thank you.

Updates released:
Update 1: Dynamic Rope/Cable Plugin - Game Development - Epic Developer Community Forums
Update 2: Dynamic Rope/Cable Plugin - Game Development - Epic Developer Community Forums
Update 3: Dynamic Rope/Cable Plugin - Game Development - Epic Developer Community Forums Mac support added!
Update 4: Dynamic Rope/Cable Plugin - Game Development - Epic Developer Community Forums Very big update with a lot of new features!
Update 5: https://forums.unrealengine.com/showthread.php?55332-Dynamic-Rope-Cable-Plugin&p=231969&viewfull=1#post231969
Changelist:
1.0:
Initial Release
1.1:
Added binaries for Unreal Launcher version of UE4
1.2:
Fixed RopeComponent Blueprint Node not showing up.
Refactored SkinnedRopeComponent properties to properly work in the Components Tab in Blueprints.
1.3:
Added Mac binaries, now works on Mac!
Added GetTrueLength to calculate the length of the rope including stretching.
Further improved SkinnedRope Properties.
1.4:
Added CollisionShape Property to control the rope segment collision. (Sphere, Capsule or Box)
Implemented Collision Shape Scaling as the rope stretches to not introduce gaps between segments.
Differentiated Static and Dynamic collision, now CollisionEnabled and CollisionResponse are split into Static and Dynamic variants. This allows for fine tuning of character collision.
Improved Collision Projection algorithm to reduce spikes in corrections when penetrating other Actors.
Fixed RenderDebugData bug that created a memory leak due to DrawDebug* calls.

1.5.1:
Updated to 4.7.1.
Implemented property widget for easy customization of collision settings/filtering.
Completely reworked collision code, unified static and dynamic collision. Now a single concept.
Collision with dynamic objects improved greatly.
WIP SplineRopeComponent added, though not yet fully tested in 4.7.
Collision Shape property disabled for this version, the whole shape collision code is still WIP so the shape defaults to Sphere.

If you run into any trouble please post here. If it’s order specific please email me directly: ujen@vicogamestudio.com

Thank you.

Awesome stuff!

Very nice, i need this in my life.

Stiffness, Tensile Strength in BP. I would love to see a rock climbing demo.

I actually just implemented stiffness. And everything is already exposed to blueprints. Doing something like rock climbing would require an Actor or Component to govern where the end point is because in the current implementation the End points must be static.

I’m looking to post a new video update tomorrow with a few new features and improvements.

Will you be able to change both start and end location of an rope at runtime? So I can “shoot” out the Rope until it hits a surface, and then move around and the start of the rope follow me and the rope can collide with collisions inbetween the start and the end while moving?

EDIT: Oh didn’t read your reply before.

So it is possible to dynamicly change the end point when inside an Actor/Component?

Yes, exactly! Both end points can be controlled at runtime however you wish. Currently, you cannot have a “free” end point but that is something I can look into if it becomes a requested feature.

Awesome looking forward for this :slight_smile: Hopefully Code Based Plugins will be functional soon on the marketplace.

Amazing! Really interested on it. So, with the current features I could do a gun that fires a projectile with a rope, the projectile hits a surface and becomes fixed, I can then apply force to this rope in order to climb, for example? Something like Batman…

And you could turn it available in your website, for example or even other simple selling systems - before Unreal provides a final solutions for this. :slight_smile:

Kind Regards.

Thank you. I’ll be talking to someone at Epic after the holidays.

Not exactly. The flow would be more along these lines: You would fix the start point to the end of the gun, use a “projectile” (could be an actual projectile or any Actor, ideally a RigidBody for a more natural look) to guide the other end (possibly adjusting some rope variables along the way such as RopeLength if needed), once the end “projectile” hits the target you would Fix that point at the Hit location and fix the start point somewhere by the fired location or leave it loose to swing around. Lastly, you would not apply force to the rope to climb it, but instead use it as a path and a visual effect.

Does this make sense? I think I will setup a test case for making grappling hooks since it seems to be a popular feature.

That is true, if interest is high I can certainly take the time to set something up.

Thank you for the reply, I got it now.

I would recommend http://selz.com for selling it easily, with just a link and accepting PayPal as well.

I’ll keep looking this tool, I hope it’s available soon!

Kind Regards.

Thank you for the link, I’m looking into it now.

awesome… me too, take my money

Updated Demo with the near finished codebase. Includes improved collision with Non-Simulated Objects, improved constraint algorithm, optimized performance, Blueprint support near-finished, added new parameters for tweaking all the settings and lots of bugs fixed.

Performance so far:
My PC is a Core i7 3930k 6-cores with 16gb RAM, GTX 970.
A single rope with 20 segments, 8 constraint solver iterations, .005 as Substep TimeStep (nearly max settings basically): Simulation update takes .036ms, Collision Checks take .114ms and rendering is .017ms

I spent nearly all day testing distribution options and currently the DLL distribution can be used for loading the plugin and using the RopeComponents through Blueprints. You will not be able to access anything from C++ unfortunately. Epic needs to fix this for DLL plugins. To give you guys access to the Rope System from C++ I would have to distribute the source, which introduces complex licensing and copyright issues.

If anyone is interested in getting the current version now, I will offer a free update once Epic allows DLL plugin access from C++. Let me know if that works for you and I’ll get it setup.

As always, any feedback, suggestions and comments are welcome!

Very nice progress.

I would be interested in this, does it support attachment to skeletal mesh bones by chance?

Yes, it does. Both end points can be attached to anything including sockets/bones.

I’ll be putting together a short tutorial video today and hopefully put up a release page for purchasing the plugin shortly after the video is up.

That’s fantastic and will be really useful for the project I’m working on! Thank you so much for all the great work :smiley:

Happy to share! This system is being made for our game and I saw no reason to not give this to the community as well.

Thank you VICOGameStudio for your contribution to the UE4 community, I for one will definitely be purchasing a license as soon as it is available for my team & project.

I love you HC-coders! This is exacly what my game needs! Take my money! You planning to put this on UE-marketplace or where?