Mostly Harmless

Legacy:Karma Ragdoll

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search

What's a RagDoll?[edit]

Oversimplified, a ragdoll is the object used when a player dies in UT2003 or UT2004. On screen it is characterised by its floppy movements which are dictated by world forces rather than by a specific animation sequence. This is the part of the Karma engine that most players associate with the term "Karma".

More correctly, a ragdoll is an instance of actor with PhysicsType set to PHYS_KarmaRagdoll.

In UnrealEngine2, a Karma "ragdoll" is essentially a number of static meshes joined together by KBSJoints. (See Karma]). They are integrated into a single object and when set to the PHYS_KarmaRagdoll PhysicsType they will act as that cluster of meshes and constraints along with gravity and any external impulses. Note, however, that the renderer still renders this as a skeletal mesh, and uses the static mesh collision only for the Karma simulation.

In UnrealEngine 2.5, skeletal meshes can have their own collision hulls, so their own collision is used for the simulation.

Uses of a RagDoll[edit]

By far the most common use is for the "ragdoll deaths" of UT2003 and UT2004. When a pawn is killed, it is turned into a Karma ragdoll version of the original pawn. It is still the same class, but its physics have changed drastically. The ragdoll then flops and slides around, dying in a relatively realistic manner.

Karma RagDolls behave in all respects like static meshes joined by KBSJoints. As far as we know, though their only use in the built-in classes is for ragdoll deaths, they could be used for other applications like a rope or some such thing. It's likely but not tested that a Karma Ragdoll will simulate faster using less RAM and CPU time than will separate actors connected by Karma constraints.

There has also been cool work done to try to create a Karma Ragdoll Injury System

How It Works[edit]

Karma Ragdoll simulation uses the skeleton defined for an Actor. Usually this is the same skeleton as used for skeletal animation on that actor. The skeleton information contains data about mass distribution, main joints in the body, and the limits of those joints: i.e. how far the joint can move before it breaks, and how much force is required to break it.

Working With Ragdolls[edit]

The ragdoll actor must have DrawType DT_Mesh and use a skeletal mesh or it may not behave as expected.

Comments to the original write-up about ragdolls included the following:

EricISTS: The Karma Ragdoll explanation on this page needs an extreme overhaul. Explaining RagDolls as a series of Static Meshes connected with KBSJoints, etc. may be okay at a foundational level but it does not even mention KAT or *.ka files / resources. Were I reading this without any knowledge of Karma I'd probably try to make a ragdoll out of hand crafted 'gibs'! Emphasis should be added to the creation of KarmaData as, without it, RagDolls are a relatively futile endeavor.

Foxpaw: That description is a description of how it operates at an engine level. [...] KAT is referenced in the Related Topics section. This page has a strong slant toward coding, and so does not directly deal with the creation of Karma assets. Karma Ragdoll may be closer to what you are looking for.

Discussion[edit]

Guest: Found that the Karma page had much more information about ragdolls than Karma Ragdoll did, so this is my replacement offering. This page's scope is to be useful to noob, modeler, mapper and coder. It does not need to contain reference information as the wiki already has comprehensive reference material elsewhere.

SuperApe: There are a few Ragdoll pages. Refactor?

detour187: Is there any way to add a ragdoll to a map?