# How to... ?

## Connect

All Clients have to connect to a Replication Server, which can [run locally](/getting-started/setup-a-project/local-development.md#run-a-local-replication-server) or [in our cloud](/getting-started/setup-a-project/test-in-the-cloud/deploy-replication-server.md).

## Spawn the player

There is no specific place to designate a special [player Prefab](/manual/networking-state-changes/instantiate-and-destroy-objects.md#how-do-i-specify-a-prefab-to-spawn-for-the-player). Any script can create it, by just instantiating a Prefab.

## Spawn or destroy a network entity

Spawning is done by simply instantiating a Prefab that has a CoherenceSync, using the `Instantiate()` API. Same for removing entities, using the `Destroy()` API. Read more about [instantiating and destroying](/manual/networking-state-changes/instantiate-and-destroy-objects.md).

## Synchronise a value over the network

Syncing individual values of the [supported types](/manual/networking-state-changes/supported-types.md) can simply be done using the [CoherenceSync component](/manual/components/coherence-sync.md). If a type is not supported, you can send the value using a [Network Command](/manual/networking-state-changes/commands.md) as an index, or by reducing it to a byte array, and reconstructing it on arrival.

## Find other connected Clients

[ClientConnections](/manual/client-connections.md) provide a view on who is connected at any given time.

## Send a message to another Client

Messages (or RPCs) in coherence are called [Network Commands](/manual/networking-state-changes/commands.md). We also have a video on <img src="/files/3BxF3GkQLb3Mba34eFJY" alt="" data-size="line"> [Authority and Commands](https://youtu.be/Ql2w10nJl80?si=oP7ma7LElsCRB76p).

## Move all connected Clients to a new scene together

To make all connected Clients move to a new scene, you can create a method that loads the scene and mark it as a [Network Command](/manual/networking-state-changes/commands.md). Then, from one of the Clients you would send that Network Command on all others (and to themselves) by selecting as destination `MessageTarget.All`.

## Run logic on the server

Servers in coherence are called [Simulators](/manual/simulation-server.md). You can also watch an <img src="/files/3BxF3GkQLb3Mba34eFJY" alt="" data-size="line"> [Overview of Simulators](https://www.youtube.com/watch?v=v5Ch701Poqg).

## Do client-side prediction

To allow client-side prediction, start by [disabling automatic updates](/manual/authority/server-authoritative-setup.md#client-side-prediction) on the properties you want to do prediction for. Implement your prediction code, and listen for incoming updates by [hooking into update callbacks](/manual/authority/server-authoritative-setup.md#misprediction-and-reconciliation). When the update arrives, you can reconcile the predicted state and the new, incoming sample in a way that fits your game best.

## Create a chat

To create a [simple in-game chat](/getting-started/samples-and-tutorials/campfire-project/a-simple-text-chat.md) functionality, you can leverage Network Commands to send strings (or byte arrays) to all connected Clients.

A pre-game chat can also be created by leveraging [Lobbies](/hosting/coherence-cloud/game-services/lobbies.md).


---

# 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.coherence.io/getting-started/how-to.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.
