> For the complete documentation index, see [llms.txt](https://pmc-docs.gitbook.io/pmc-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://pmc-docs.gitbook.io/pmc-docs/developer-recommendations.md).

# Developer Recommendations

### Networking & Core Physics Settings

If you’re unsure which configuration is best for your project, let’s start with networking.

PMC provides three replication options:

* <mark style="color:blue;">**Client Authoritative**</mark>
* <mark style="color:blue;">**Server Authoritative**</mark>
* <mark style="color:blue;">**Custom Replication Mode**</mark>

By default, <mark style="color:blue;">PMC ships with its own built-in</mark> <mark style="color:blue;"></mark><mark style="color:blue;">**Client Authoritative**</mark> <mark style="color:blue;"></mark><mark style="color:blue;">system</mark>. This option exists mainly for developers who don’t have a separate replication solution.

If you already have a <mark style="color:blue;">**C++ replication solution**</mark> (for example, <mark style="color:blue;">**Smooth Sync**</mark>), it usually makes more sense to use that and run PMC through <mark style="color:blue;">**Custom Replication Mode**</mark>.

<mark style="color:blue;">PMC’s built-in Client Authoritative system</mark> is implemented entirely in Blueprint. Since it runs on <mark style="color:$warning;">**Event Tick**</mark>, it has unavoidable performance limitations. <mark style="color:$warning;">As player count increases</mark>, <mark style="color:$danger;">CPU cost rises and FPS can drop</mark>. For this mode, a practical recommendation is <mark style="color:blue;">**2–6 players**</mark>.

***

#### Compression Modes

* <mark style="color:blue;">**No Compressed**</mark> – Highest reliability, higher bandwidth usage. No position range limitation.
* <mark style="color:blue;">**Compressed**</mark> – Compresses position and scale.\
  Uses signed 16-bit position quantization per axis, limiting world position to approximately <mark style="color:$warning;">**-32767**</mark>**&#x20;to&#x20;**<mark style="color:$warning;">**+32767**</mark>**&#x20;units** on X, Y, and Z.
* <mark style="color:blue;">**Compressed (No Scale)**</mark> – Reduces transform payload from \~37 bytes down to \~10 bytes.\
  This mode uses signed 16-bit position quantization per axis, which limits world position to approximately <mark style="color:$warning;">**-32767**</mark>**&#x20;to&#x20;**<mark style="color:$warning;">**+32767**</mark>**&#x20;units** on X, Y, and Z.

In internal gameplay tests, <mark style="color:blue;">Compressed No Scale</mark> achieved roughly **30–40% bandwidth reduction**.

<mark style="color:$warning;">Additionally:</mark>

<mark style="color:blue;">Compressed modes</mark> require all actors to stay within the supported position range (<mark style="color:$warning;">**-32767**</mark>**&#x20;to&#x20;**<mark style="color:$warning;">**+32767**</mark>**&#x20;per axis**).\
Positions outside this range will stop replicating.

<mark style="color:blue;">**No Compressed**</mark>**&#x20;has no such limitation.**

Pick the mode that matches your project’s conditions: bandwidth savings vs high-latency stability vs world size.

***

#### Interpolation

Default <mark style="color:blue;">**Interpolation Speed**</mark> is <mark style="color:blue;">**5**</mark>.

If you’re building a physics-based prop hunt / casual multiplayer game. It’s recommended to keep this at <mark style="color:blue;">**5**</mark>**.**

***

#### Server Authoritative Mode

<mark style="color:blue;">Server Authoritative</mark> is included as an experimental option.

<mark style="color:$danger;">Some behaviors may not work perfectly</mark>, and <mark style="color:$warning;">It’s not the recommended production choice right now</mark>.

For real projects, it’s best to use either:

* <mark style="color:blue;">**Client Authoritative**</mark>, or
* <mark style="color:blue;">**Custom Replication Mode**</mark> with your own solution (e.g. <mark style="color:$warning;">C++</mark> / <mark style="color:$warning;">Smooth Sync</mark>)

***

### <mark style="color:$warning;">Physics Behavior</mark>

#### <mark style="color:blue;">Enable Physics Sleep (Important)</mark>

This setting is extremely important for physics-based prop hunt style gameplay.

When enabled, PMC automatically puts a player’s physics simulation to sleep when they stop moving. This prevents idle physics objects from continuously pushing each other while standing still — which is typically the desired behavior for prop hunt games.

<mark style="color:blue;">Leave this enabled by default.</mark>

***

#### <mark style="color:blue;">Auto Sleep Delay</mark>

<mark style="color:blue;">Default value:</mark> <mark style="color:$success;">0.9</mark>

I don’t recommend going lower than this.\
If you want slightly more “settling time” before sleeping, you can raise it to **1.0+**, depending on the feel you want.

***

### <mark style="color:blue;">Angular Stabilization & Spin Control</mark>

**Force Angular Stabilization** and **Spin Multiplier** are gameplay-dependent.

Sometimes you want props to <mark style="color:$warning;">roll.</mark>\
Sometimes you want them to <mark style="color:$warning;">slide.</mark>

You can control this per prop using **DT\_Props**:

* Enable Angular Stabilization for specific props only
* Adjust spin speed per mesh as needed

PMC also includes built-in physical materials:

* **NoBounce**
* **MidBounce**
* **HighBounce**

Choose based on whether you want props to bounce or stay grounded.

***

### <mark style="color:$warning;">Final Notes</mark>

<mark style="color:$warning;">PMC defaults are already tuned to be</mark> “<mark style="color:blue;">ready to use</mark>”.

In most cases, you don’t need to change anything unless your project has specific networking constraints or you’re targeting unusual ping/loss scenarios.
