# Character

## **Overview** <a href="#overview" id="overview"></a>

OVERDARE provides an avatar system based on **ODA (OVERDARE Deformable Avatar)**. Creators can use ODA to create games without implementing separate character systems. Using **Cage Mesh Deformer** technology, OVERDARE allows the creation and application of clothing and accessories compatible with various body parts.

## **Character Types** <a href="#character-types" id="character-types"></a>

OVERDARE UGC has two main character types:

* **Default Character**: An ODA-based character created using RigBuilder or imported from external sources.
* **Player Character**: An avatar character that the user can customize with clothing and accessories on the OVERDARE platform and control.

Both characters are ODA-based, with the distinction being whether the character was created by the player on the OVERDARE platform or by the creator within the game. Players can enjoy adventures as their avatar in the UGC world.

Creators can create NPCs for their game or replace player characters with custom ones based on the game’s concept and features.

## **Character Model Structure** <a href="#character-model-structure" id="character-model-structure"></a>

The OVERDARE character model consists of the following structures:

* **Model**: The highest-level object containing the entire character.
* **Humanoid**: Manages the character’s actions and states.
* **HumanoidRootPart**: The RootPart serving as the character’s center.
* **6 MeshParts**: Head, Torso, RightArm, LeftArm, RightLeg, LeftLeg.
* **Skeleton**: Skeletal structure composed of 19 bones.

## **Character** Parts and **Skeleton Structure** <a href="#character-parts-and-skeleton-structure" id="character-parts-and-skeleton-structure"></a>

OVERDARE avatars are based on 6 BodyParts (head, torso, both arms, both legs) and a skeleton structure.

* **6 MeshParts**: The MeshParts are easy to assemble like building blocks, allowing the replacement of body parts without complex rigging in OVERDARE Studio.
* **Skeletal Mesh Conversion**: When the game is launched, the 6 meshes are merged into one and converted into a skeletal mesh with 19 bones.
  * This allows for easy assembly of character appearances, similar to building with LEGO blocks, while also enabling smooth and dynamic animations.

The OVERDARE Avatar Bone Structure is as follows:

<figure><img src="/files/vg5GexTgsuBwnaxswxTF" alt=""><figcaption></figcaption></figure>

| No | Name          | Location                               | Attachments |
| -- | ------------- | -------------------------------------- | ----------- |
| 1  | Root          | Center of the character (ground level) |             |
| 2  | LowerTorso    | Waist                                  |             |
| 3  | UpperTorso01  | Lower abdomen                          |             |
| 4  | UpperTorso02  | Upper abdomen                          |             |
| 5  | Head          | Head                                   |             |
| 6  | LeftUpperArm  | Left upper arm                         |             |
| 7  | LeftLowerArm  | Left lower arm                         |             |
| 8  | LeftHand      | Left hand                              |             |
| 9  | LeftItem      | Left equipment position                |             |
| 10 | RightUpperArm | Right upper arm                        |             |
| 11 | RightLowerArm | Right lower arm                        |             |
| 12 | RightHand     | Right hand                             |             |
| 13 | RightItem     | Right equipment position               |             |
| 14 | LeftUpperLeg  | Left thigh                             |             |
| 15 | LeftLowerLeg  | Left calf                              |             |
| 16 | LeftFoot      | Left foot                              |             |
| 17 | RightUpperLeg | Right thigh                            |             |
| 18 | RightLowerLeg | Right calf                             |             |
| 19 | RightFoot     | Right foot                             |             |

## **Humanoid System** <a href="#humanoid-system" id="humanoid-system"></a>

Humanoid is the core class that defines the character’s behavior and state.

### **Properties** <a href="#properties" id="properties"></a>

| Property            | Description                                                                                    |
| ------------------- | ---------------------------------------------------------------------------------------------- |
| DisplayDistanceType |                                                                                                |
| Health              | The character’s current health                                                                 |
| JumpPower           | The character’s jump power. When calculated with gravity, this determines maximum jump height. |
| MaxHealth           | The character’s maximum health                                                                 |
| RootPart            | The character’s base Part (HumanoidRootPart)                                                   |
| WalkSpeed           | The character’s walking speed                                                                  |

### **Humanoid State** <a href="#humanoid-state" id="humanoid-state"></a>

Humanoid supports multiple states (HumanoidStateType), each triggering a default animation. For example, “Jumping” is activated when jumping, and “FreeFall” is activated when falling.

You can use scripts to forcibly change states or restrict them from changing into a specific state.

### **Key Humanoid States**

| No | State    | Description                                                                                                                          |
| -- | -------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| 1  | Running  | Default state; allows movement or jumping.                                                                                           |
| 2  | Jumping  | A brief state immediately after the character jumps. Usually transitions to Freefall or Landed.                                      |
| 3  | Freefall | A state where the character is in free fall through the air. Entered while airborne after jumping or when falling from a high place. |
| 4  | Landed   | A brief state immediately after the character touches the ground following Freefall.                                                 |
| 5  | Climbing | The character is climbing an object.                                                                                                 |
| 6  | Swimming | The character is swimming.                                                                                                           |
| 8  | Ragdoll  | Ragdoll is activated.                                                                                                                |
| 9  | Dead     | The character has died after health reaches 0.                                                                                       |
| 10 | Physics  | Physics is activated.                                                                                                                |

#### **Humanoid State Restrictions**

You can use the `Humanoid:SetStateEnabled` function to restrict state transitions.\
For example, even if a character gets near a Part that can be climbed, you can prevent that state transition with the code below:

{% embed url="<https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2FPyWJqwo43mkZOAERasyv%2F2025-07-03%2014-58-35.mp4?alt=media&token=0b071649-71ef-4c36-a318-fee034737cd5>" %}
Climbing state
{% endembed %}

```lua
local Character = script.Parent
local Humanoid = Character.Humanoid

Humanoid:SetStateEnabled(Enum.HumanoidStateType.Climbing, false)
```

{% embed url="<https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2FjuG0oxouwcPoxkcXLQn1%2F2025-07-03%2014-59-13.mp4?alt=media&token=c3f5f041-47b2-4919-a130-45137a2db0c7>" %}
When the transition to the Climbing state is prevented
{% endembed %}

When a character comes into contact with a Part or MeshPart that has CanClimb enabled, they will automatically enter the Climbing state.

<div><figure><img src="/files/wAxKh5Av2u2CrpJ3k3Gz" alt=""><figcaption></figcaption></figure> <figure><img src="/files/9rShKoCyhAvbt9xEpaRb" alt=""><figcaption></figcaption></figure></div>

#### **Humanoid State Transitions**

By default, Humanoid States transition automatically based on player input or Humanoid properties.\
For example, when `Health` reaches 0, the state changes to Dead. When the jump button is pressed, the state transitions as follows: Jumping → Freefall → Landed → Running.

#### **Ragdoll State**

The Ragdoll state makes the character appear limp like a ragdoll. In this state, animations and player input are disabled, and the character responds only to physical forces based on the skeleton structure.

The Ragdoll state does not transition automatically and must be manually activated using the `Humanoid:ChangeState` function:

```lua
local Character = script.Parent
local Humanoid = Character.Humanoid

Humanoid:ChangeState(Enum.HumanoidStateType.Ragdoll)
```

{% embed url="<https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2F7MLoVVhKEa2pYtSmDIBu%2F2025-02-18%2017-43-47.mp4?alt=media&token=2c730a33-1a14-4248-b36e-6a3830c4b2da>" %}

To get back to the original state from the Ragdoll state, you need to force a state change, as follows:

```lua
local Character = script.Parent
local Humanoid = Character.Humanoid

Humanoid:ChangeState(Enum.HumanoidStateType.Ragdoll)
wait(3)
Humanoid:ChangeState(Enum.HumanoidStateType.Running)
```

#### Physics State

In the Physics state, a character’s movement is governed solely by the physics engine. In this state, previous animations and player inputs do not work, and the character responds exclusively to forces applied via physics instances such as LinearVelocity and VectorForce.

The Physics state does not transition automatically and must be manually enabled using the `Humanoid:ChangeState` function:

```lua
local Character = script.Parent
local Humanoid = Character.Humanoid

Humanoid:ChangeState(Enum.HumanoidStateType.Physics)
```

## **Attachment** <a href="#attachment" id="attachment"></a>

Attachments matched to each bone allow for features such as positioning effects, attaching accessories, and applying physical constraints.\
Attachments operate based on the dynamic movement of bones, enabling creators to easily place items that interact with the character model.

## **Character Animation** <a href="#character-animation" id="character-animation"></a>

{% content-ref url="/pages/YK5NZVV1FAIHbrQSOuHF" %}
[Character Animation](/manual/studio-manual/character/character-animation.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.overdare.com/manual/studio-manual/character.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
