> For the complete documentation index, see [llms.txt](https://studio-docs.sandbox.game/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://studio-docs.sandbox.game/the-editor/how-to-use-a-character-pawn.md).

# How to use a character pawn

A **Pawn** is the entity the player controls. It is a tree of nodes, not a single mesh.

**Player Start** is only the spawn marker. An empty scene already has one. Play mode creates the pawn at that marker from the **GameMode**. The chick you drag into the scene is not the player.

When the agent builds a third-person character, it is assembling this tree and telling the GameMode which class to spawn. Select the pawn (or open its prefab) and read the child nodes to see what you got.

## Player Start vs pawn

| Thing                  | Class                         | Role                                                                              |
| ---------------------- | ----------------------------- | --------------------------------------------------------------------------------- |
| Player Start           | `ENGINE.PlayerStart`          | Where the player appears. Move this to change the spawn.                          |
| Character Pawn         | `ENGINE.CharacterPawn`        | Walking character: collision capsule, visible model, camera, animation, movement. |
| Default Character Pawn | `ENGINE.DefaultCharacterPawn` | Character Pawn plus interact and fire.                                            |
| GameMode               | your class in `src/`          | `pawnFactory` decides **which** pawn Play creates.                                |

The Empty template does not set `pawnFactory`. Play then spawns a bare `ENGINE.Pawn` — no mannequin, no third-person camera. Use a movement template (**3rd Person Movement**, **1st Person Movement**, and similar), or set `pawnFactory` yourself.

{% hint style="info" %}
*NOTE: Do not place a second Character Pawn in the scene and expect that to be “the player.” GameMode still spawns its own pawn at Player Start. You would have two bodies.*
{% endhint %}

## What Character Pawn builds

`ENGINE.CharacterPawn` creates this tree. Older prefab JSON may still say `Component` instead of `Node`. Same objects.

| Child                                  | Class                        | Job                                                                                                                                                        |
| -------------------------------------- | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Root (often hidden)                    | Mesh Node, capsule           | Collision. Profile `Character`, motion `kinematicPositionBased`. This is not the look.                                                                     |
| Visual (`MeshComponent`)               | Model Mesh Node              | The `.glb`. Default: `@engine/assets/character/mannequinG.glb`. Physics off. **Cast Shadow** on.                                                           |
| Animation                              | Animation State Machine Node | Default config: `@engine/assets/character/config/mannequin.animconfig.json`. The pawn writes `isRunning`, `isJumping`, `forward`, `back`, `left`, `right`. |
| CameraPivot → CameraSpringArm → Camera | Spring Arm Node + camera     | Third-person follow. Pivot is pitch; spring arm is distance.                                                                                               |

Why the capsule has physics and the visual does not: [What physics and Rapier mean in Sandbox Studio](/the-editor/what-physics-and-rapier-mean.md).

Replacing the look means changing `modelUrl` on the **visual** Model Mesh Node, not replacing the capsule. See [How to use mesh models and ModelMesh nodes](/the-editor/how-to-use-mesh-models-and-modelmesh.md).

The animation graph is already wired. Only replace the `.animconfig.json` if you need new states. See [Create an Animation State Machine](/the-editor/create-an-animation-state-machine.md). Imported rigs and extra clips: [How to import a rigged character and animation clips](/the-editor/how-to-import-a-rigged-character-and-animation-clips.md).

{% stepper %}
{% step %}

## Find Player Start

Select **Player Start** in the Outliner. Place it on walkable ground. Its position is the spawn, not a visible character.
{% endstep %}

{% step %}

## Spawn a Character Pawn from GameMode

In your GameMode `initialize`, set `pawnFactory` to the pawn class you want. Then run `pnpm build` and **Build Project** (`Ctrl+B` / `Cmd+B`). See [Project code fundamentals](/best-practices/project-code-fundamentals.md).

```typescript
public override initialize(options?: ENGINE.GameModeOptions): void {
  super.initialize({
    ...options,
    pawnFactory: async () => ENGINE.CharacterPawn.create(),
  });
}
```

Use `ENGINE.DefaultCharacterPawn.create()` when you need interact and fire. Details: [Doors, switches, pickups and triggers](/the-editor/doors-switches-pickups-and-triggers.md).
{% endstep %}

{% step %}

## Enter Play mode

Play. The GameMode creates the pawn at Player Start. WASD moves; mouse looks. Virtual sticks on touch use the same path. See [Mobile development](/the-editor/mobile-development.md).
{% endstep %}

{% step %}

## Change the visible model

Exit Play. Open the pawn or its prefab (double-click in the Outliner). Select the visual Model Mesh Node. Set `modelUrl` to your `@project/assets/models/...glb`.

Leave the capsule alone unless the new body is a different height.
{% endstep %}

{% step %}

## Tune the camera

Select the pawn. In the Inspector, open the **Camera** category.

* `cameraMinDistance` / `cameraMaxDistance` — zoom limits
* `cameraZoomSensitivity` — mouse-wheel step
* `cameraCollisionBuffer` / `cameraSpringStiffness` — how the spring arm clears walls
* `cameraMinPitchDegrees` / `cameraMaxPitchDegrees` — look up/down limits
  {% endstep %}
  {% endstepper %}

## Prefab the player

Templates often save the player as `.prefab.json` (for example `assets/prefabs/Player.prefab.json`) so the capsule, mesh, camera, and extra game nodes stay one asset.

Configure the pawn, then **Save as Prefab**. Play still creates the player through `pawnFactory` (`CharacterPawn.create()` or your own `@ENGINE.GameClass()` player). Do not leave a second copy sitting in the scene. See [How to Set Up a Prefab](/the-editor/how-to-set-up-a-prefab.md).

## Common mistakes

| What went wrong                                        | What to do                                                                                                            |
| ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------- |
| Dragged a character `.glb` and expected to walk around | That is a Model Mesh Node. The player is a Pawn spawned at Player Start.                                              |
| Empty project, Play, no mannequin                      | `pawnFactory` is still the bare Pawn. Set it to Character Pawn, or start from a movement template.                    |
| Replaced the capsule with the new GLB                  | Collision broke or the mesh jammed into the floor. Change `modelUrl` on the visual child.                             |
| Two characters in Play                                 | You placed a Character Pawn **and** GameMode spawned one. Remove the placed extra, or stop spawning from the factory. |
| Idle pose never leaves Idle                            | The graph has no parameters. Character Pawn already writes them; a custom pawn must too. See the animation page.      |

## What You've Done

You can tell Player Start from the pawn, read the Character Pawn tree, change the visible model, and set `pawnFactory` so Play spawns the right class. Who sits in the scene vs who spawns at Play: [How to spawn the player and place NPC prefabs](/the-editor/how-to-spawn-the-player-and-place-npc-prefabs.md). Next: [How to Set Up a Prefab](/the-editor/how-to-set-up-a-prefab.md), or [Create an Animation State Machine](/the-editor/create-an-animation-state-machine.md) if the graph needs new states.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://studio-docs.sandbox.game/the-editor/how-to-use-a-character-pawn.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
