# Performance Guarantees

The **Morpheus Platform** is tested weekly, using deployments with a set up designed to simulate large scale multiplayer events.

## World Sizes

Current guarantees are published for our worlds of size:

* 30 CCU
* 100 CCU
* 500 CCU
* 1500 CCU
* 5000 CCU

Guarantees for larger worlds will be added in future.

## Environment

The [**Example Map**](/creation/unreal-development/features-and-tutorials/the-m2-example-plugin.md) (with the **ScaleTestSublevel** enabled) is our profiling test environment; it's a large map with mixed characteristics, including foliage, a stadium and an elaborate city background. Nanite is used throughout, and Lumen is enabled in supported hardware. Standard post-processing (anti-aliasing, bloom, tone-mapping, etc.) is used. Screens are used to stream two different [Millicast](/creation/unreal-development/features-and-tutorials/video-players/millicast-video-streaming.md) sources.

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

## Avatar setup

Each avatar uses multi-part MML to customize different parts of the character. Each character has 7 parts, totalling an average of 35.000 triangles. Morplheus Platform runs using the Carnival renderer.

<figure><img src="/files/79vNZdJXrdBf1BYxbwpi" alt=""><figcaption><p>One of the ten thousand avatars used in the scale test.</p></figcaption></figure>

## Authenticated Bot behaviour

Authenticated Bots are configured to mimic a real players gameplay actions via the `BT_M2Example_BotFullBehavior` which includes:

* Running around the whole map (and jumping)
* [Using emotes](/creation/unreal-development/features-and-tutorials/emotes.md)
* [Testing crowd audio](/creation/unreal-development/features-and-tutorials/crowd-audio.md)
* [Sending messages through the text chat](/creation/unreal-development/features-and-tutorials/communication/unreal-text-chat.md)
* [Switching roles](/creation/unreal-development/features-and-tutorials/the-m2-example-plugin/in-game-roles.md)
* [Changing avatar size](/creation/unreal-development/features-and-tutorials/the-m2-example-plugin/resizing.md)

<figure><img src="/files/IbakN1QCMQN2sp5uQTo0" alt=""><figcaption><p><code>BT_M2Example_BotFullBehavior</code></p></figcaption></figure>

Additionally, as authenticated bots have user accounts, they are able to mimic a real players account actions via the following behaviours:

### [KV Store](/creation/unreal-development/features-and-tutorials/online-services/kv-store-service.md#api-and-usage)

* `BT_AuthBot_KVStore_Read`
* `BT_AuthBot_KVStore_Store`
* `BT_AuthBot_KVStore_Subscribe`

### [LiveConfig](/creation/unreal-development/features-and-tutorials/live-config/using-live-config-settings-in-unreal.md)

* `BT_AuthBot_LiveConfig_Subscribe`

### Concurrent request guarantees

This table shows the maximum request concurrency and maximum throughput that we currently test.

* Max concurrency is the maximum number of a single request that we trigger at one time across all players on the server.
* Max throughput is the maximum number of a single request that we trigger over a given window.

<table><thead><tr><th width="201">Request</th><th width="228">Max Concurrency (requests)</th><th>Max Throughput (requests per minute)</th></tr></thead><tbody><tr><td>KV Store Read</td><td>18,000</td><td>72,000</td></tr><tr><td>KV Store Store</td><td>18,000</td><td>108,000</td></tr><tr><td>KV Store Subscribe</td><td>18,000</td><td>18,000</td></tr><tr><td>Live Config Subscribe</td><td>18,000</td><td>18,000</td></tr></tbody></table>

{% hint style="info" %}
Subscribe behaviours only send the subscribe request once and therefore have equal throughput and concurrency.
{% endhint %}

## Client performance

We guarantee a **minimum of 30FPS** with this setup in the following configurations:

| Hardware                                | Concurrent players |
| --------------------------------------- | ------------------ |
| Intel i7-9700K / AMD Radeon RX 480      | 1000               |
| Intel i7-8700 / NVIDIA GeForce GTX 1080 | 5000               |
| Mac Studio (M2 Ultra)                   | 5000               |


---

# 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.msquared.io/creation/unreal-development/performance-guarantees.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.
