# Character Movement Networking

### Client Authoritative

The client controls their own character and reports their position and state the server. The server sends the state information to all observers.  This is the default networking mode.

| PROS                                                       | CONS                                                         |
| ---------------------------------------------------------- | ------------------------------------------------------------ |
| <mark style="color:green;">Simple to implement</mark>      | <mark style="color:red;">Easy for bad actors to cheat</mark> |
| <mark style="color:green;">Low CPU and network cost</mark> |                                                              |

### Server Authoritative

The client sends inputs to the server and predicts what will happen. The server runs the inputs, and sends the correct results back to the client and all observers. If the servers result is different than the client, the client will replay all predicted inputs with the correct data.&#x20;

{% hint style="danger" %}
This is an advanced feature with strict requirements and will significantly increase the complexity of any movement and physics related game mechanics. For more information read [Server Authoritative Movement](/characters/character-movement-system/character-movement-networking/server-authoritative-movement.md).
{% endhint %}

| PROS                                                                                                      | CONS                                                            |
| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| <mark style="color:green;">Makes movement cheats impossible</mark>                                        | <mark style="color:red;">Complex implementation</mark>          |
| <mark style="color:green;">Server always has full control over clients and their state information</mark> | <mark style="color:red;">Higher CPU and Networking costs</mark> |


---

# 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.airship.gg/characters/character-movement-system/character-movement-networking.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.
