# 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**](https://docs.msquared.io/creation/unreal-development/features-and-tutorials/the-m2-example-plugin) (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](https://docs.msquared.io/creation/unreal-development/features-and-tutorials/video-players/millicast-video-streaming) sources.

<figure><img src="https://1456550285-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoWTlPaoHd1McSakqMigu%2Fuploads%2Fgit-blob-8bf75306998d93f4c34497589c2266d007ae3939%2Fimage.png?alt=media" 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="https://1456550285-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoWTlPaoHd1McSakqMigu%2Fuploads%2Fgit-blob-8bffba4a2471880b70549041e27511704cd1e3b0%2Fimage.png?alt=media" 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](https://docs.msquared.io/creation/unreal-development/features-and-tutorials/emotes)
* [Testing crowd audio](https://docs.msquared.io/creation/unreal-development/features-and-tutorials/crowd-audio)
* [Sending messages through the text chat](https://docs.msquared.io/creation/unreal-development/features-and-tutorials/communication/unreal-text-chat)
* [Switching roles](https://docs.msquared.io/creation/unreal-development/features-and-tutorials/the-m2-example-plugin/in-game-roles)
* [Changing avatar size](https://docs.msquared.io/creation/unreal-development/features-and-tutorials/the-m2-example-plugin/resizing)

<figure><img src="https://1456550285-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoWTlPaoHd1McSakqMigu%2Fuploads%2Fgit-blob-2e151169f19d57ffda1b7e1840e64ca4f3be257f%2Fimage.png?alt=media" 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](https://docs.msquared.io/creation/features-and-tutorials/online-services/kv-store-service#api-and-usage)

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

### [LiveConfig](https://docs.msquared.io/creation/unreal-development/features-and-tutorials/live-config/using-live-config-settings-in-unreal)

* `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               |
